[qmapshack] 01/05: Imported Upstream version 0.11.0

Bas Couwenberg sebastic at xs4all.nl
Mon Jan 19 21:04:53 UTC 2015


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

sebastic-guest pushed a commit to branch master
in repository qmapshack.

commit 2709fd1a73269de0e9c1d81e0909ebb6954013c1
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Mon Jan 19 09:14:06 2015 +0100

    Imported Upstream version 0.11.0
---
 CMakeLists.txt                                     |    5 +-
 CMakeLists.txt.user                                |   10 +-
 call_Uncrustify.cfg                                |  142 ++
 call_Uncrustify.sh                                 |   43 +
 changelog.txt                                      |    8 +
 src/CAbout.cpp                                     |    3 +-
 src/CAbout.h                                       |    8 +-
 src/CMainWindow.cpp                                |   53 +-
 src/CMainWindow.h                                  |  142 +-
 src/CMakeLists.txt                                 |   12 +
 src/GeoMath.cpp                                    |   32 +-
 src/GeoMath.h                                      |   15 +-
 src/IMainWindow.ui                                 |   18 +-
 src/canvas/CCanvas.cpp                             |   55 +-
 src/canvas/CCanvas.h                               |  296 ++--
 src/canvas/CCanvasSetup.cpp                        |    3 +-
 src/canvas/CCanvasSetup.h                          |   20 +-
 src/canvas/ICanvasSetup.ui                         |    2 +-
 src/canvas/IDrawContext.cpp                        |   41 +-
 src/canvas/IDrawContext.h                          |  346 ++---
 src/canvas/IDrawObject.cpp                         |    4 -
 src/canvas/IDrawObject.h                           |  297 ++--
 src/dem/CDemDraw.cpp                               |   21 +-
 src/dem/CDemDraw.h                                 |   93 +-
 src/dem/CDemItem.cpp                               |    8 +-
 src/dem/CDemItem.h                                 |  125 +-
 src/dem/CDemList.cpp                               |    8 +-
 src/dem/CDemList.h                                 |   51 +-
 src/dem/CDemPathSetup.cpp                          |    5 +-
 src/dem/CDemPathSetup.h                            |   24 +-
 src/dem/CDemPropSetup.cpp                          |    7 +-
 src/dem/CDemPropSetup.h                            |   31 +-
 src/dem/CDemVRT.cpp                                |   58 +-
 src/dem/CDemVRT.h                                  |   37 +-
 src/dem/IDem.cpp                                   |   20 +-
 src/dem/IDem.h                                     |  165 ++-
 src/dem/IDemProp.cpp                               |    3 +-
 src/dem/IDemProp.h                                 |   17 +-
 src/gis/CGisDraw.cpp                               |    5 +-
 src/gis/CGisDraw.h                                 |   14 +-
 src/gis/CGisListDB.cpp                             |   53 +-
 src/gis/CGisListDB.h                               |   84 +-
 src/gis/CGisListWks.cpp                            |   64 +-
 src/gis/CGisListWks.h                              |  177 ++-
 src/gis/CGisWidget.cpp                             |   22 +-
 src/gis/CGisWidget.h                               |  278 ++--
 src/gis/IGisItem.cpp                               |  176 ++-
 src/gis/IGisItem.h                                 |  664 +++++----
 src/gis/IGisLine.cpp                               |    2 -
 src/gis/IGisLine.h                                 |   10 +-
 src/gis/WptIcons.cpp                               |    2 -
 src/gis/WptIcons.h                                 |   12 +-
 src/gis/db/CDBFolderDatabase.cpp                   |    3 +-
 src/gis/db/CDBFolderDatabase.h                     |   24 +-
 src/gis/db/CDBFolderGroup.cpp                      |    3 +-
 src/gis/db/CDBFolderGroup.h                        |    6 +-
 src/gis/db/CDBFolderLostFound.cpp                  |   10 +-
 src/gis/db/CDBFolderLostFound.h                    |   22 +-
 src/gis/db/CDBFolderOther.cpp                      |    3 +-
 src/gis/db/CDBFolderOther.h                        |    6 +-
 src/gis/db/CDBFolderProject.cpp                    |    3 +-
 src/gis/db/CDBFolderProject.h                      |    6 +-
 src/gis/db/CDBItem.cpp                             |    7 +-
 src/gis/db/CDBItem.h                               |   36 +-
 src/gis/db/CDBProject.cpp                          |   68 +-
 src/gis/db/CDBProject.h                            |   74 +-
 src/gis/db/CLostFoundProject.cpp                   |   43 +-
 src/gis/db/CLostFoundProject.h                     |   14 +-
 src/gis/db/CSetupDatabase.cpp                      |    4 +-
 src/gis/db/CSetupDatabase.h                        |   34 +-
 src/gis/db/CSetupFolder.cpp                        |   24 +-
 src/gis/db/CSetupFolder.h                          |   23 +-
 src/gis/db/CSetupWorkspace.cpp                     |    3 +-
 src/gis/db/CSetupWorkspace.h                       |   13 +-
 src/gis/db/IDB.cpp                                 |    8 +-
 src/gis/db/IDB.h                                   |   16 +-
 src/gis/db/IDBFolder.cpp                           |   68 +-
 src/gis/db/IDBFolder.h                             |   83 +-
 src/gis/db/ISetupWorkspace.ui                      |    2 +-
 src/gis/db/macros.h                                |   20 +-
 src/gis/gpx/CGpxProject.cpp                        |   32 +-
 src/gis/gpx/CGpxProject.h                          |   21 +-
 src/gis/gpx/serialization.cpp                      |   42 +-
 src/gis/ovl/CDetailsOvlArea.cpp                    |   16 +-
 src/gis/ovl/CDetailsOvlArea.h                      |   52 +-
 src/gis/ovl/CGisItemOvlArea.cpp                    |   96 +-
 src/gis/ovl/CGisItemOvlArea.h                      |  255 ++--
 src/gis/ovl/CScrOptOvlArea.cpp                     |   11 +-
 src/gis/ovl/CScrOptOvlArea.h                       |   27 +-
 src/gis/prj/CDetailsPrj.cpp                        |  451 +++++-
 src/gis/prj/CDetailsPrj.h                          |   32 +-
 src/gis/prj/IDetailsPrj.ui                         |   90 +-
 src/gis/prj/IGisProject.cpp                        |   32 +-
 src/gis/prj/IGisProject.h                          |  417 +++---
 src/gis/qms/CQmsProject.cpp                        |   10 +-
 src/gis/qms/CQmsProject.h                          |   13 +-
 src/gis/qms/serialization.cpp                      |   88 +-
 src/gis/rte/CGisItemRte.cpp                        |   88 +-
 src/gis/rte/CGisItemRte.h                          |  147 +-
 src/gis/rte/CScrOptRte.cpp                         |    9 +-
 src/gis/rte/CScrOptRte.h                           |   24 +-
 src/gis/search/CSearchGoogle.cpp                   |   13 +-
 src/gis/search/CSearchGoogle.h                     |   44 +-
 src/gis/trk/CCombineTrk.cpp                        |   17 +-
 src/gis/trk/CCombineTrk.h                          |   49 +-
 src/gis/trk/CDetailsTrk.cpp                        |   32 +-
 src/gis/trk/CDetailsTrk.h                          |   90 +-
 src/gis/trk/CGisItemTrk.cpp                        |  184 ++-
 src/gis/trk/CGisItemTrk.h                          |  887 +++++++-----
 src/gis/trk/CScrOptTrk.cpp                         |   14 +-
 src/gis/trk/CScrOptTrk.h                           |   44 +-
 src/gis/trk/filter/CFilterDelete.cpp               |    3 +-
 src/gis/trk/filter/CFilterDelete.h                 |   17 +-
 src/gis/trk/filter/CFilterDouglasPeuker.cpp        |    5 +-
 src/gis/trk/filter/CFilterDouglasPeuker.h          |   16 +-
 src/gis/trk/filter/CFilterMedian.cpp               |    4 +-
 src/gis/trk/filter/CFilterMedian.h                 |   16 +-
 src/gis/trk/filter/CFilterNewDate.cpp              |    3 +-
 src/gis/trk/filter/CFilterNewDate.h                |   17 +-
 src/gis/trk/filter/CFilterObscureDate.cpp          |    2 +-
 src/gis/trk/filter/CFilterObscureDate.h            |   16 +-
 src/gis/trk/filter/CFilterOffsetElevation.cpp      |    4 +-
 src/gis/trk/filter/CFilterOffsetElevation.h        |   17 +-
 src/gis/trk/filter/CFilterReplaceElevation.cpp     |    3 +-
 src/gis/trk/filter/CFilterReplaceElevation.h       |   17 +-
 .../filter/{CFilterDelete.cpp => CFilterReset.cpp} |   12 +-
 .../IDemProp.h => gis/trk/filter/CFilterReset.h}   |   28 +-
 src/gis/trk/filter/CFilterSpeed.cpp                |    2 +-
 src/gis/trk/filter/CFilterSpeed.h                  |   16 +-
 src/gis/trk/filter/IFilterReset.ui                 |   99 ++
 src/gis/trk/filter/filter.cpp                      |   29 +-
 src/gis/wpt/CDetailsGeoCache.cpp                   |    7 +-
 src/gis/wpt/CDetailsGeoCache.h                     |   18 +-
 src/gis/wpt/CDetailsWpt.cpp                        |   63 +-
 src/gis/wpt/CDetailsWpt.h                          |   37 +-
 src/gis/wpt/CGisItemWpt.cpp                        |   76 +-
 src/gis/wpt/CGisItemWpt.h                          |  372 ++---
 src/gis/wpt/CProjWpt.cpp                           |    9 +-
 src/gis/wpt/CProjWpt.h                             |   24 +-
 src/gis/wpt/CScrOptWpt.cpp                         |   14 +-
 src/gis/wpt/CScrOptWpt.h                           |   38 +-
 src/gis/wpt/IDetailsGeoCache.ui                    |   61 +-
 src/gis/wpt/IDetailsWpt.ui                         |  246 ++--
 src/gis/wpt/IScrOptWpt.ui                          |   18 +
 src/grid/CGrid.cpp                                 |   59 +-
 src/grid/CGrid.h                                   |   38 +-
 src/grid/CGridSetup.cpp                            |    4 +-
 src/grid/CGridSetup.h                              |   34 +-
 src/grid/CProjWizard.cpp                           |   26 +-
 src/grid/CProjWizard.h                             |   22 +-
 src/grid/mitab.cpp                                 |    1 -
 src/grid/mitab.h                                   |   26 +-
 src/helpers/CAppOpts.h                             |   24 +-
 src/helpers/CElevationDialog.cpp                   |    4 +-
 src/helpers/CElevationDialog.h                     |   31 +-
 src/helpers/CFileExt.h                             |   29 +-
 src/helpers/CHistoryListWidget.cpp                 |    4 +-
 src/helpers/CHistoryListWidget.h                   |   30 +-
 src/helpers/CInputDialog.cpp                       |    2 -
 src/helpers/CInputDialog.h                         |   26 +-
 src/helpers/CLinksDialog.cpp                       |    2 -
 src/helpers/CLinksDialog.h                         |   24 +-
 src/helpers/CPhotoAlbum.cpp                        |  197 +++
 .../CImportDatabase.h => helpers/CPhotoAlbum.h}    |   47 +-
 src/helpers/CPhotoViewer.cpp                       |  166 +++
 src/helpers/{CWptIconDialog.h => CPhotoViewer.h}   |   38 +-
 src/helpers/CPositionDialog.cpp                    |   14 +-
 src/helpers/CPositionDialog.h                      |   20 +-
 src/helpers/CSelectCopyAction.cpp                  |    3 +-
 src/helpers/CSelectCopyAction.h                    |   45 +-
 src/helpers/CSelectProjectDialog.cpp               |    8 +-
 src/helpers/CSelectProjectDialog.h                 |   52 +-
 src/helpers/CSettings.h                            |   42 +-
 src/helpers/CTextEditWidget.cpp                    |  172 +--
 src/helpers/CTextEditWidget.h                      |  132 +-
 src/helpers/CWptIconDialog.cpp                     |    5 +-
 src/helpers/CWptIconDialog.h                       |   23 +-
 src/helpers/IPhotoAlbum.ui                         |   91 ++
 src/helpers/ISelectCopyAction.ui                   |    4 +-
 src/helpers/ITextEditWidget.ui                     |   11 +-
 src/helpers/Platform.h                             |   66 +-
 src/icons/32x32/AddImage.png                       |  Bin 0 -> 1121 bytes
 src/icons/32x32/DelImage.png                       |  Bin 0 -> 1077 bytes
 src/icons/32x32/Image.png                          |  Bin 0 -> 1000 bytes
 src/icons/32x32/Print.png                          |  Bin 0 -> 907 bytes
 src/icons/48x48/AddImage.png                       |  Bin 0 -> 1548 bytes
 src/icons/48x48/DelImage.png                       |  Bin 0 -> 1442 bytes
 src/icons/48x48/Image.png                          |  Bin 0 -> 1368 bytes
 src/icons/48x48/Print.png                          |  Bin 0 -> 1162 bytes
 src/icons/AddImage.svg                             |   75 +
 src/icons/DelImage.svg                             |  114 ++
 src/icons/Image.svg                                |   99 ++
 src/icons/Print.svg                                |  102 ++
 src/locale/qmapshack_cs.ts                         | 1530 +++++++++++---------
 src/locale/qmapshack_de.ts                         | 1141 ++++++++-------
 src/locale/qmapshack_es.ts                         | 1137 ++++++++-------
 src/main.cpp                                       |   65 +-
 src/map/CMapDraw.cpp                               |   21 +-
 src/map/CMapDraw.h                                 |  192 +--
 src/map/CMapIMG.cpp                                |  400 +++--
 src/map/CMapIMG.h                                  |  961 ++++++------
 src/map/CMapItem.cpp                               |   14 +-
 src/map/CMapItem.h                                 |  135 +-
 src/map/CMapJNX.cpp                                |   65 +-
 src/map/CMapJNX.h                                  |   14 +-
 src/map/CMapList.cpp                               |    8 +-
 src/map/CMapList.h                                 |   57 +-
 src/map/CMapMAP.cpp                                |   11 +-
 src/map/CMapMAP.h                                  |  144 +-
 src/map/CMapPathSetup.cpp                          |    5 +-
 src/map/CMapPathSetup.h                            |   24 +-
 src/map/CMapPropSetup.cpp                          |    7 +-
 src/map/CMapPropSetup.h                            |   31 +-
 src/map/CMapRMAP.cpp                               |  136 +-
 src/map/CMapRMAP.h                                 |    5 +-
 src/map/CMapTMS.cpp                                |   30 +-
 src/map/CMapTMS.h                                  |  100 +-
 src/map/CMapVRT.cpp                                |   72 +-
 src/map/CMapVRT.h                                  |   60 +-
 src/map/CMapWMTS.cpp                               |   71 +-
 src/map/CMapWMTS.h                                 |  161 +-
 src/map/IMap.cpp                                   |    3 +-
 src/map/IMap.h                                     |  242 ++--
 src/map/IMapProp.cpp                               |    3 +-
 src/map/IMapProp.h                                 |   17 +-
 src/map/IMapPropSetup.cpp                          |    3 +-
 src/map/IMapPropSetup.h                            |   17 +-
 src/map/cache/CDiskCache.cpp                       |   10 +-
 src/map/cache/CDiskCache.h                         |   38 +-
 src/map/cache/IDiskCache.cpp                       |    2 -
 src/map/cache/IDiskCache.h                         |   18 +-
 src/map/garmin/CGarminPoint.cpp                    |   21 +-
 src/map/garmin/CGarminPoint.h                      |   38 +-
 src/map/garmin/CGarminPolygon.cpp                  |  122 +-
 src/map/garmin/CGarminPolygon.h                    |  163 ++-
 src/map/garmin/CGarminStrTbl6.cpp                  |   26 +-
 src/map/garmin/CGarminStrTbl6.h                    |   37 +-
 src/map/garmin/CGarminStrTbl8.cpp                  |   13 +-
 src/map/garmin/CGarminStrTbl8.h                    |    8 +-
 src/map/garmin/CGarminStrTblUtf8.cpp               |    9 +-
 src/map/garmin/CGarminStrTblUtf8.h                 |    8 +-
 src/map/garmin/CGarminTyp.cpp                      |  977 +++++++------
 src/map/garmin/CGarminTyp.h                        |  405 +++---
 src/map/garmin/IGarminStrTbl.cpp                   |   23 +-
 src/map/garmin/IGarminStrTbl.h                     |   61 +-
 src/map/mapsforge/types.h                          |   23 +-
 src/mouse/CMouseEditArea.cpp                       |    6 +-
 src/mouse/CMouseEditArea.h                         |   30 +-
 src/mouse/CMouseEditTrk.cpp                        |   10 +-
 src/mouse/CMouseEditTrk.h                          |   28 +-
 src/mouse/CMouseMoveWpt.cpp                        |   10 +-
 src/mouse/CMouseMoveWpt.h                          |   41 +-
 src/mouse/CMouseNormal.cpp                         |  239 +--
 src/mouse/CMouseNormal.h                           |  103 +-
 src/mouse/CMouseRangeTrk.cpp                       |  198 +--
 src/mouse/CMouseRangeTrk.h                         |   54 +-
 src/mouse/CScrOptEditLine.cpp                      |    1 -
 src/mouse/CScrOptEditLine.h                        |   11 +-
 src/mouse/CScrOptPoint.cpp                         |    4 +-
 src/mouse/CScrOptPoint.h                           |    8 +-
 src/mouse/CScrOptRange.cpp                         |    2 -
 src/mouse/CScrOptRange.h                           |    8 +-
 src/mouse/CScrOptRangeTrk.cpp                      |    7 +-
 src/mouse/CScrOptRangeTrk.h                        |    8 +-
 src/mouse/CScrOptUnclutter.cpp                     |   35 +-
 src/mouse/CScrOptUnclutter.h                       |   65 +-
 src/mouse/IMouse.cpp                               |    6 +-
 src/mouse/IMouse.h                                 |   91 +-
 src/mouse/IMouseEditLine.cpp                       |  731 +++++-----
 src/mouse/IMouseEditLine.h                         |  229 ++-
 src/mouse/IScrOpt.cpp                              |    4 +-
 src/mouse/IScrOpt.h                                |   34 +-
 src/plot/CPlotAxis.cpp                             |  245 ++--
 src/plot/CPlotAxis.h                               |  238 +--
 src/plot/CPlotAxisTime.cpp                         |    6 +-
 src/plot/CPlotAxisTime.h                           |   34 +-
 src/plot/CPlotData.cpp                             |   45 +-
 src/plot/CPlotData.h                               |  126 +-
 src/plot/CPlotDistance.cpp                         |   10 +-
 src/plot/CPlotDistance.h                           |   13 +-
 src/plot/CPlotProfile.cpp                          |   13 +-
 src/plot/CPlotProfile.h                            |   16 +-
 src/plot/CPlotSpeed.cpp                            |    4 +-
 src/plot/CPlotSpeed.h                              |   13 +-
 src/plot/CPlotTrack.cpp                            |  141 +-
 src/plot/CPlotTrack.h                              |   45 +-
 src/plot/IPlot.cpp                                 |   85 +-
 src/plot/IPlot.h                                   |  201 +--
 src/plot/ITrack.cpp                                |  190 +++
 src/{qlgt/IQlgtOverlay.h => plot/ITrack.h}         |   56 +-
 src/qlgt/CImportDatabase.cpp                       |    4 +-
 src/qlgt/CImportDatabase.h                         |   27 +-
 src/qlgt/CQlb.cpp                                  |   54 +-
 src/qlgt/CQlb.h                                    |  131 +-
 src/qlgt/CQlgtDb.cpp                               |   40 +-
 src/qlgt/CQlgtDb.h                                 |   92 +-
 src/qlgt/CQlgtDiary.cpp                            |   49 +-
 src/qlgt/CQlgtDiary.h                              |   12 +-
 src/qlgt/CQlgtFolder.cpp                           |   11 +-
 src/qlgt/CQlgtFolder.h                             |   20 +-
 src/qlgt/CQlgtRoute.cpp                            |   92 +-
 src/qlgt/CQlgtRoute.h                              |   45 +-
 src/qlgt/CQlgtTrack.cpp                            |  365 ++---
 src/qlgt/CQlgtTrack.h                              |  457 +++---
 src/qlgt/CQlgtWpt.cpp                              |  232 +--
 src/qlgt/CQlgtWpt.h                                |  152 +-
 src/qlgt/CQmsDb.cpp                                |   67 +-
 src/qlgt/CQmsDb.h                                  |   43 +-
 src/qlgt/IItem.cpp                                 |    2 -
 src/qlgt/IItem.h                                   |   29 +-
 src/qlgt/IQlgtOverlay.cpp                          |  112 +-
 src/qlgt/IQlgtOverlay.h                            |   31 +-
 src/qlgt/converter.cpp                             |   14 +-
 src/resources.qrc                                  |   10 +-
 src/units/CTimeZoneSetup.cpp                       |    5 +-
 src/units/CTimeZoneSetup.h                         |   14 +-
 src/units/CUnitImperial.cpp                        |   20 +-
 src/units/CUnitImperial.h                          |   14 +-
 src/units/CUnitMetric.cpp                          |    5 +-
 src/units/CUnitMetric.h                            |   16 +-
 src/units/CUnitNautic.cpp                          |    5 +-
 src/units/CUnitNautic.h                            |   18 +-
 src/units/CUnitsSetup.cpp                          |    5 +-
 src/units/CUnitsSetup.h                            |   13 +-
 src/units/IUnit.cpp                                |   53 +-
 src/units/IUnit.h                                  |  135 +-
 src/version.h                                      |    2 +-
 327 files changed, 14557 insertions(+), 11132 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 12363c0..a338280 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,4 @@
-cmake_minimum_required(VERSION 2.8.11)
-cmake_policy(SET CMP0043 NEW)
+cmake_minimum_required(VERSION 3.0.0)
 
 project(QMapShack)
 
@@ -21,7 +20,7 @@ endif(WIN32)
 set(APPLICATION_NAME qmapshack)
 
 set(APPLICATION_VERSION_MAJOR "0")
-set(APPLICATION_VERSION_MINOR "10")
+set(APPLICATION_VERSION_MINOR "11")
 set(APPLICATION_VERSION_PATCH "0")
 
 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 f58bb18..40f2b0c 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.3.0, 2015-01-07T18:30:15. -->
+<!-- Written by QtCreator 3.3.0, 2015-01-15T21:42:12. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
@@ -58,9 +58,9 @@
  <data>
   <variable>ProjectExplorer.Project.Target.0</variable>
   <valuemap type="QVariantMap">
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.8.4 in Pfad (System)</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 4.8.4 in Pfad (System)</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{b3896d75-6773-49ab-b85b-a90805c4269a}</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 5.3.2</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 5.3.2</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{2f92db73-2408-4a53-964e-2415f5ea1157}</value>
    <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
    <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
    <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">1</value>
@@ -160,7 +160,7 @@
     <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments"></value>
     <value type="bool" key="CMakeProjectManager.CMakeRunConfiguration.UseTerminal">false</value>
     <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory"></value>
-    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+    <value type="int" key="PE.EnvironmentAspect.Base">-1</value>
     <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qlgt2qms (deaktiviert)</value>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
diff --git a/call_Uncrustify.cfg b/call_Uncrustify.cfg
new file mode 100644
index 0000000..37b8340
--- /dev/null
+++ b/call_Uncrustify.cfg
@@ -0,0 +1,142 @@
+tok_split_gte=false
+utf8_byte=false
+utf8_force=false
+indent_cmt_with_tabs=false
+indent_align_string=false
+indent_braces=false
+indent_braces_no_func=false
+indent_braces_no_class=false
+indent_braces_no_struct=false
+indent_brace_parent=false
+indent_namespace=false
+indent_extern=false
+indent_class=true
+indent_class_colon=false
+indent_else_if=false
+indent_var_def_cont=false
+indent_func_call_param=false
+indent_func_def_param=false
+indent_func_proto_param=false
+indent_func_class_param=false
+indent_func_ctor_var_param=false
+indent_template_param=false
+indent_func_param_double=false
+indent_relative_single_line_comments=false
+indent_col1_comment=false
+indent_access_spec_body=false
+indent_paren_nl=false
+indent_comma_paren=false
+indent_bool_paren=false
+indent_first_bool_expr=false
+indent_square_nl=false
+indent_preserve_sql=false
+indent_align_assign=true
+sp_balance_nested_parens=false
+align_keep_tabs=false
+align_with_tabs=false
+align_on_tabstop=false
+align_number_left=false
+align_func_params=false
+align_same_func_call_params=false
+align_var_def_colon=false
+align_var_def_attribute=false
+align_var_def_inline=false
+align_right_cmt_mix=false
+align_on_operator=false
+align_mix_var_proto=false
+align_single_line_func=false
+align_single_line_brace=false
+align_nl_cont=false
+align_left_shift=true
+align_oc_decl_colon=false
+nl_collapse_empty_body=false
+nl_assign_leave_one_liners=false
+nl_class_leave_one_liners=false
+nl_enum_leave_one_liners=false
+nl_getset_leave_one_liners=false
+nl_func_leave_one_liners=false
+nl_if_leave_one_liners=false
+nl_multi_line_cond=false
+nl_multi_line_define=false
+nl_before_case=true
+nl_after_case=false
+nl_after_return=false
+nl_after_semicolon=false
+nl_after_brace_open=false
+nl_after_brace_open_cmt=false
+nl_after_vbrace_open=false
+nl_after_vbrace_open_empty=false
+nl_after_brace_close=false
+nl_after_vbrace_close=false
+nl_define_macro=false
+nl_squeeze_ifdef=false
+nl_ds_struct_enum_cmt=false
+nl_ds_struct_enum_close_brace=false
+nl_create_if_one_liner=false
+nl_create_for_one_liner=false
+nl_create_while_one_liner=false
+ls_for_split_full=false
+ls_func_split_full=false
+nl_after_multiline_comment=false
+eat_blanks_after_open_brace=true
+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_sort_import=false
+mod_sort_using=false
+mod_sort_include=true
+mod_move_case_break=false
+mod_remove_empty_return=false
+cmt_indent_multi=true
+cmt_c_group=false
+cmt_c_nl_start=false
+cmt_c_nl_end=false
+cmt_cpp_group=false
+cmt_cpp_nl_start=false
+cmt_cpp_nl_end=false
+cmt_cpp_to_c=false
+cmt_star_cont=false
+cmt_multi_check_last=true
+cmt_insert_before_preproc=false
+pp_indent_at_level=false
+pp_region_indent_code=false
+pp_if_indent_code=false
+pp_define_at_level=false
+indent_columns=4
+indent_with_tabs=0
+nl_assign_brace=add
+nl_fcall_brace=add
+nl_enum_brace=add
+nl_struct_brace=add
+nl_union_brace=add
+nl_if_brace=add
+nl_brace_else=add
+nl_elseif_brace=ignore
+nl_else_brace=add
+nl_brace_finally=add
+nl_finally_brace=add
+nl_try_brace=add
+nl_getset_brace=add
+nl_for_brace=add
+nl_catch_brace=add
+nl_brace_catch=add
+nl_while_brace=add
+nl_using_brace=add
+nl_brace_brace=add
+nl_do_brace=add
+nl_brace_while=add
+nl_switch_brace=add
+nl_case_colon_brace=add
+nl_namespace_brace=add
+nl_template_class=add
+nl_class_brace=add
+nl_fdef_brace=add
+mod_full_brace_do=add
+mod_full_brace_for=add
+mod_full_brace_function=add
+mod_full_brace_if=add
+mod_full_brace_while=add
+mod_full_brace_using=add
+mod_paren_on_return=remove
diff --git a/call_Uncrustify.sh b/call_Uncrustify.sh
new file mode 100755
index 0000000..7e4561c
--- /dev/null
+++ b/call_Uncrustify.sh
@@ -0,0 +1,43 @@
+#!/bin/sh 
+
+if [ ! -n "$1" ]; then
+echo "Syntax is: recurse.sh dirname filesuffix"
+echo "Syntax is: recurse.sh filename"
+echo "Example: recurse.sh temp cpp"
+exit 1
+fi
+
+if [ -d "$1" ]; then
+#echo "Dir ${1} exists"
+if [ -n "$2" ]; then
+filesuffix=$2
+else
+filesuffix="*"
+fi
+
+#echo "Filtering files using suffix ${filesuffix}"
+
+file_list=`find ${1} -name "*.${filesuffix}" -type f`
+for file2indent in $file_list
+do 
+echo "Indenting file $file2indent"
+#!/bin/bash
+uncrustify -f "$file2indent" -c "./call_Uncrustify.cfg" -o indentoutput.tmp
+mv indentoutput.tmp "$file2indent"
+
+done
+else
+if [ -f "$1" ]; then
+echo "Indenting one file $1"
+#!/bin/bash
+uncrustify -f "$1" -c "./call_Uncrustify.cfg" -o indentoutput.tmp
+mv indentoutput.tmp "$1"
+
+else
+echo "ERROR: As parameter given directory or file does not exist!"
+echo "Syntax is: call_Uncrustify.sh dirname filesuffix"
+echo "Syntax is: call_Uncrustify.sh filename"
+echo "Example: call_Uncrustify.sh temp cpp"
+exit 1
+fi
+fi
diff --git a/changelog.txt b/changelog.txt
index 27e0113..20dceae 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,11 @@
+V 0.11.0
+* Auto-switch projection for pole caps in track plot
+* Fix several issues with elements derived from existing ones still having the same key.
+* Add project diary (project details)
+* Add track filter to reset hidden track points to visible
+* Save only changed items to database (speed up)
+* Add photo album and viewer to waypoint details
+
 V 0.10.0
 * Fix crash when saving a DB project before the database tree has been opened
 * Add track filters to hide trackpoints
diff --git a/src/CAbout.cpp b/src/CAbout.cpp
index 48c9055..052d265 100644
--- a/src/CAbout.cpp
+++ b/src/CAbout.cpp
@@ -19,9 +19,9 @@
 #include "CAbout.h"
 #include "version.h"
 
+#include <QtWidgets>
 #include <gdal.h>
 #include <proj_api.h>
-#include <QtWidgets>
 
 CAbout::CAbout(QWidget *parent)
     : QDialog(parent)
@@ -36,6 +36,5 @@ CAbout::CAbout(QWidget *parent)
 
 CAbout::~CAbout()
 {
-
 }
 
diff --git a/src/CAbout.h b/src/CAbout.h
index fdc7a3c..9fca841 100644
--- a/src/CAbout.h
+++ b/src/CAbout.h
@@ -19,14 +19,14 @@
 #ifndef CABOUT_H
 #define CABOUT_H
 
-#include <QDialog>
 #include "ui_IAbout.h"
+#include <QDialog>
 
 class CAbout : public QDialog, private Ui::IAbout
 {
-    public:
-        CAbout(QWidget * parent);
-        virtual ~CAbout();
+public:
+    CAbout(QWidget * parent);
+    virtual ~CAbout();
 };
 
 #endif //CABOUT_H
diff --git a/src/CMainWindow.cpp b/src/CMainWindow.cpp
index 3285de8..7fc456f 100644
--- a/src/CMainWindow.cpp
+++ b/src/CMainWindow.cpp
@@ -16,28 +16,28 @@
 
 **********************************************************************************************/
 
+#include "CAbout.h"
 #include "CMainWindow.h"
-#include "helpers/CSettings.h"
-#include "canvas/CCanvas.h"
 #include "GeoMath.h"
-#include "map/CMapDraw.h"
-#include "map/CMapList.h"
-#include "dem/CDemList.h"
-#include "dem/CDemDraw.h"
-#include "units/IUnit.h"
-#include "units/CTimeZoneSetup.h"
-#include "units/CUnitsSetup.h"
-#include "version.h"
+#include "canvas/CCanvas.h"
 #include "config.h"
-#include "CAbout.h"
+#include "dem/CDemDraw.h"
+#include "dem/CDemList.h"
 #include "gis/CGisWidget.h"
 #include "gis/WptIcons.h"
 #include "gis/db/CSetupWorkspace.h"
+#include "helpers/CSettings.h"
+#include "map/CMapDraw.h"
+#include "map/CMapList.h"
 #include "qlgt/CImportDatabase.h"
+#include "units/CTimeZoneSetup.h"
+#include "units/CUnitsSetup.h"
+#include "units/IUnit.h"
+#include "version.h"
 
 #include <QtGui>
-#include <QtWidgets>
 #include <QtSql>
+#include <QtWidgets>
 
 CMainWindow * CMainWindow::pSelf = 0;
 
@@ -75,7 +75,7 @@ CMainWindow::CMainWindow()
 
     connect(actionAbout, SIGNAL(triggered()), this, SLOT(slotAbout()));
     connect(actionHelp, SIGNAL(triggered()), this, SLOT(slotHelp()));
-    connect(actionAddMapWorkspace, SIGNAL(triggered()), this, SLOT(slotAddCanvas()));
+    connect(actionAddMapView, SIGNAL(triggered()), this, SLOT(slotAddCanvas()));
     connect(actionShowScale, SIGNAL(changed()), this, SLOT(slotUpdateCurrentWidget()));
     connect(actionShowGrid, SIGNAL(changed()), this, SLOT(update()));
     connect(actionPOIText, SIGNAL(changed()), this, SLOT(slotUpdateCurrentWidget()));
@@ -85,7 +85,7 @@ CMainWindow::CMainWindow()
     connect(actionSetupGrid, SIGNAL(triggered()), this, SLOT(slotSetupGrid()));
     connect(actionSetupMapPaths, SIGNAL(triggered()), this, SLOT(slotSetupMapPath()));
     connect(actionSetupDEMPaths, SIGNAL(triggered()), this, SLOT(slotSetupDemPath()));
-    connect(actionSetupMapWks, SIGNAL(triggered()), this, SLOT(slotSetupMapWks()));
+    connect(actionSetupMapView, SIGNAL(triggered()), this, SLOT(slotSetupMapView()));
     connect(actionSetupTimeZone, SIGNAL(triggered()), this, SLOT(slotSetupTimeZone()));
     connect(actionSetupUnits, SIGNAL(triggered()), this, SLOT(slotSetupUnits()));
     connect(actionSetupWorkspace, SIGNAL(triggered()), this, SLOT(slotSetupWorkspace()));
@@ -199,7 +199,7 @@ CMainWindow::~CMainWindow()
         other objects. This allows children of the canvas to access central objects
         like CGisWidget safely uppon their destruction. (e.g. CMouseRangeTrk to reset
         it's track's draw mode by key)
-    */
+     */
     qDeleteAll(allCanvas);
 
     QByteArray tz;
@@ -208,7 +208,6 @@ CMainWindow::~CMainWindow()
 
     cfg.setValue("Units/timezone", tz);
     cfg.setValue("Units/timezone/mode", tzmode);
-
 }
 
 bool CMainWindow::isScaleVisible()
@@ -284,7 +283,7 @@ qreal CMainWindow::getEelevationAt(const QPointF& pos)
     return NOFLOAT;
 }
 
-void  CMainWindow::getEelevationAt(const QPolygonF &pos, QPolygonF& ele)
+void CMainWindow::getEelevationAt(const QPolygonF &pos, QPolygonF& ele)
 {
     CCanvas * canvas = getVisibleCanvas();
     if(canvas)
@@ -323,12 +322,12 @@ void CMainWindow::slotAddCanvas()
     int i, cnt = 0;
     for(i = 0; i < tabWidget->count(); i++)
     {
-         CCanvas * canvas = dynamic_cast<CCanvas*>(tabWidget->widget(i));
-         if(canvas == 0)
-         {
-             continue;
-         }
-         cnt++;
+        CCanvas * canvas = dynamic_cast<CCanvas*>(tabWidget->widget(i));
+        if(canvas == 0)
+        {
+            continue;
+        }
+        cnt++;
     }
 
     CCanvas * canvas = new CCanvas(tabWidget);
@@ -368,7 +367,7 @@ void CMainWindow::slotCurrentTabCanvas(int i)
             tabDem->setCurrentIndex(n);
             break;
         }
-    }    
+    }
     CCanvas * canvas = getVisibleCanvas();
     if(canvas)
     {
@@ -478,7 +477,6 @@ void CMainWindow::slotUpdateCurrentWidget()
         w->update();
         return;
     }
-
 }
 
 
@@ -495,7 +493,6 @@ void CMainWindow::slotSetupMapFont()
             w->update();
         }
     }
-
 }
 
 void CMainWindow::slotSetupGrid()
@@ -518,7 +515,7 @@ void CMainWindow::slotSetupDemPath()
     CDemDraw::setupDemPath();
 }
 
-void CMainWindow::slotSetupMapWks()
+void CMainWindow::slotSetupMapView()
 {
     CCanvas * canvas = getVisibleCanvas();
     if(canvas == 0)
@@ -575,7 +572,7 @@ void CMainWindow::slotLoadGISData()
 
 void CMainWindow::loadGISData(const QStringList& filenames)
 {
-    foreach(const QString& filename, filenames)
+    foreach(const QString &filename, filenames)
     {
         gisWidget->loadGisProject(filename);
     }
diff --git a/src/CMainWindow.h b/src/CMainWindow.h
index ee4d878..2fd675a 100644
--- a/src/CMainWindow.h
+++ b/src/CMainWindow.h
@@ -19,8 +19,8 @@
 #ifndef CMAINWINDOW_H
 #define CMAINWINDOW_H
 
-#include <QMainWindow>
 #include "ui_IMainWindow.h"
+#include <QMainWindow>
 
 class CMapList;
 class CDemList;
@@ -31,73 +31,79 @@ class CCanvas;
 class CMainWindow : public QMainWindow, private Ui::IMainWindow
 {
     Q_OBJECT
-    public:
-        static CMainWindow& self(){return *pSelf;}
-        virtual ~CMainWindow();
-
-        void addMapList(CMapList *list, const QString& name);
-        void addDemList(CDemList *list, const QString& name);
-        void addWidgetToTab(QWidget * w);
-
-        bool isScaleVisible();
-        bool isGridVisible();
-        bool isNight();
-        bool isPOIText();
-        bool isMapToolTip();
-        bool flipMouseWheel();
-        const QFont& getMapFont(){return mapFont;}
-
-        void zoomCanvasTo(const QRectF rect);
-        /**
-           @brief Read the elevation from DEM data attached to the currently visible canvas for a given location
-           @param pos   a poistion in units of [rad]
-           @return If no elevation value can be found for the position NOFLOAT is returned.
-         */
-        qreal getEelevationAt(const QPointF &pos);
-        void  getEelevationAt(const QPolygonF& pos, QPolygonF &ele);
-        /**
-           @brief Get pointer to the currently visibale canvas object.
-           @return If the currently visible tab does not contain a CCanvas object 0 is returned.
-        */
-        CCanvas * getVisibleCanvas();
-
-
-    private slots:
-        void slotAbout();
-        void slotHelp();
-        void slotAddCanvas();
-        void slotTabCloseRequest(int i);
-        void slotCurrentTabCanvas(int i);
-        void slotCurrentTabMaps(int i);
-        void slotCurrentTabDem(int i);
-        void slotMousePosition(const QPointF& pos, qreal ele);
-        void slotUpdateCurrentWidget();
-        void slotSetupMapFont();
-        void slotSetupGrid();
-        void slotSetupMapPath();
-        void slotSetupDemPath();
-        void slotSetupMapWks();
-        void slotSetupTimeZone();
-        void slotSetupUnits();
-        void slotSetupWorkspace();
-        void slotImportDatabase();
-        void slotLoadGISData();
-
-    private:
-        friend int main(int argc, char ** argv);
-        CMainWindow();
-        void loadGISData(const QStringList& filenames);
-
-        static CMainWindow * pSelf;
-
-        /// status bar label
-        QLabel * lblPosWGS84;
-        QLabel * lblElevation;
-        QLabel * lblPosGrid;
-
-        QFont mapFont;
-
-        CGisWidget * gisWidget;
+public:
+    static CMainWindow& self()
+    {
+        return *pSelf;
+    }
+    virtual ~CMainWindow();
+
+    void addMapList(CMapList *list, const QString& name);
+    void addDemList(CDemList *list, const QString& name);
+    void addWidgetToTab(QWidget * w);
+
+    bool isScaleVisible();
+    bool isGridVisible();
+    bool isNight();
+    bool isPOIText();
+    bool isMapToolTip();
+    bool flipMouseWheel();
+    const QFont& getMapFont()
+    {
+        return mapFont;
+    }
+
+    void zoomCanvasTo(const QRectF rect);
+    /**
+       @brief Read the elevation from DEM data attached to the currently visible canvas for a given location
+       @param pos   a poistion in units of [rad]
+       @return If no elevation value can be found for the position NOFLOAT is returned.
+     */
+    qreal getEelevationAt(const QPointF &pos);
+    void  getEelevationAt(const QPolygonF& pos, QPolygonF &ele);
+    /**
+       @brief Get pointer to the currently visibale canvas object.
+       @return If the currently visible tab does not contain a CCanvas object 0 is returned.
+     */
+    CCanvas * getVisibleCanvas();
+
+
+private slots:
+    void slotAbout();
+    void slotHelp();
+    void slotAddCanvas();
+    void slotTabCloseRequest(int i);
+    void slotCurrentTabCanvas(int i);
+    void slotCurrentTabMaps(int i);
+    void slotCurrentTabDem(int i);
+    void slotMousePosition(const QPointF& pos, qreal ele);
+    void slotUpdateCurrentWidget();
+    void slotSetupMapFont();
+    void slotSetupGrid();
+    void slotSetupMapPath();
+    void slotSetupDemPath();
+    void slotSetupMapView();
+    void slotSetupTimeZone();
+    void slotSetupUnits();
+    void slotSetupWorkspace();
+    void slotImportDatabase();
+    void slotLoadGISData();
+
+private:
+    friend int main(int argc, char ** argv);
+    CMainWindow();
+    void loadGISData(const QStringList& filenames);
+
+    static CMainWindow * pSelf;
+
+    /// status bar label
+    QLabel * lblPosWGS84;
+    QLabel * lblElevation;
+    QLabel * lblPosGrid;
+
+    QFont mapFont;
+
+    CGisWidget * gisWidget;
 };
 
 #endif //CMAINWINDOW_H
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index fc5e197..1067c81 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -12,6 +12,7 @@ find_package(Qt5Script)
 find_package(Qt5Sql)
 find_package(Qt5WebKitWidgets)
 find_package(Qt5LinguistTools)
+find_package(Qt5PrintSupport)
 find_package(GDAL REQUIRED)
 find_package(PROJ REQUIRED)
 
@@ -30,6 +31,8 @@ set( SRCS
     helpers/CHistoryListWidget.cpp
     helpers/CElevationDialog.cpp
     helpers/CLinksDialog.cpp
+    helpers/CPhotoAlbum.cpp
+    helpers/CPhotoViewer.cpp
     canvas/CCanvas.cpp
     canvas/CCanvasSetup.cpp
     canvas/IDrawContext.cpp
@@ -127,6 +130,7 @@ set( SRCS
     gis/trk/CCombineTrk.cpp
     gis/trk/filter/filter.cpp
     gis/trk/filter/CFilterDouglasPeuker.cpp
+    gis/trk/filter/CFilterReset.cpp
     gis/trk/filter/CFilterDelete.cpp
     gis/trk/filter/CFilterMedian.cpp
     gis/trk/filter/CFilterReplaceElevation.cpp
@@ -146,6 +150,7 @@ set( SRCS
     plot/CPlotProfile.cpp
     plot/CPlotSpeed.cpp
     plot/CPlotDistance.cpp
+    plot/ITrack.cpp
     plot/CPlotTrack.cpp
     qlgt/converter.cpp
     qlgt/CQlb.cpp
@@ -180,6 +185,8 @@ set( HDRS
     helpers/CHistoryListWidget.h
     helpers/CElevationDialog.h
     helpers/CLinksDialog.h
+    helpers/CPhotoAlbum.h
+    helpers/CPhotoViewer.h
     canvas/CCanvas.h
     canvas/CCanvasSetup.h
     canvas/IDrawContext.h
@@ -274,6 +281,7 @@ set( HDRS
     gis/trk/CDetailsTrk.h
     gis/trk/CCombineTrk.h
     gis/trk/filter/CFilterDouglasPeuker.h
+    gis/trk/filter/CFilterReset.h
     gis/trk/filter/CFilterDelete.h
     gis/trk/filter/CFilterMedian.h
     gis/trk/filter/CFilterReplaceElevation.h
@@ -295,6 +303,7 @@ set( HDRS
     plot/CPlotProfile.h
     plot/CPlotSpeed.h
     plot/CPlotDistance.h
+    plot/ITrack.h
     plot/CPlotTrack.h
     qlgt/CQlb.h
     qlgt/IItem.h
@@ -320,6 +329,7 @@ set( UIS
     helpers/ISelectCopyAction.ui
     helpers/IElevationDialog.ui
     helpers/ILinksDialog.ui
+    helpers/IPhotoAlbum.ui
     canvas/ICanvasSetup.ui
     dem/IDemList.ui
     dem/IDemPathSetup.ui
@@ -346,6 +356,7 @@ set( UIS
     gis/trk/IDetailsTrk.ui
     gis/trk/ICombineTrk.ui
     gis/trk/filter/IFilterDouglasPeuker.ui
+    gis/trk/filter/IFilterReset.ui
     gis/trk/filter/IFilterDelete.ui
     gis/trk/filter/IFilterMedian.ui
     gis/trk/filter/IFilterReplaceElevation.ui
@@ -411,6 +422,7 @@ target_link_libraries(${APPLICATION_NAME}
     Qt5::Script
     Qt5::Sql
     Qt5::WebKitWidgets
+    Qt5::PrintSupport
     CGetOpt
     ${GDAL_LIBRARIES}
     ${PROJ_LIBRARIES}
diff --git a/src/GeoMath.cpp b/src/GeoMath.cpp
index eef1510..7e0ed16 100644
--- a/src/GeoMath.cpp
+++ b/src/GeoMath.cpp
@@ -50,7 +50,7 @@ bool GPS_Math_Deg_To_DegMin(qreal v, qint32 *d, qreal *m)
     *d = deg;
     *m = min;
 
-    return(sign);
+    return sign;
 }
 
 
@@ -87,7 +87,7 @@ bool GPS_Math_Str_To_Deg(const QString& str, qreal& lon, qreal& lat)
     if(!re.exactMatch(str))
     {
         QMessageBox::warning(0,QObject::tr("Error"),QObject::tr("Bad position format. Must be: [N|S] ddd mm.sss [W|E] ddd mm.sss"),QMessageBox::Abort,QMessageBox::Abort);
-        return(false);
+        return false;
     }
 
     bool signLat    = re.cap(1) == "S";
@@ -102,7 +102,7 @@ bool GPS_Math_Str_To_Deg(const QString& str, qreal& lon, qreal& lat)
 
     GPS_Math_DegMin_To_Deg(signLon, degLon, minLon, lon);
 
-    return(true);
+    return true;
 }
 
 // from http://www.movable-type.co.uk/scripts/LatLongVincenty.html
@@ -135,7 +135,7 @@ qreal GPS_Math_Distance(const qreal u1, const qreal v1, const qreal u2, const qr
 
         if (sinSigma==0)
         {
-            return(0);  // co-incident points
+            return 0;   // co-incident points
         }
 
         cosSigma = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda;
@@ -155,7 +155,7 @@ qreal GPS_Math_Distance(const qreal u1, const qreal v1, const qreal u2, const qr
     }
     if (iterLimit==0)
     {
-        return( FP_NAN);              // formula failed to converge
+        return FP_NAN;                // formula failed to converge
     }
     qreal uSq = cosSqAlpha * (a*a - b*b) / (b*b);
     qreal A = 1 + uSq/16384*(4096+uSq*(-768+uSq*(320-175*uSq)));
@@ -165,7 +165,7 @@ qreal GPS_Math_Distance(const qreal u1, const qreal v1, const qreal u2, const qr
 
     a1 = atan2(cosU2 * sinLambda, cosU1 * sinU2 - sinU1 * cosU2 * cosLambda) * 360 / TWOPI;
     a2 = atan2(cosU1 * sinLambda, -sinU1 * cosU2 + cosU1 * sinU2 * cosLambda) * 360 / TWOPI;
-    return(s);
+    return s;
 }
 
 qreal GPS_Math_Distance(const qreal u1, const qreal v1, const qreal u2, const qreal v2)
@@ -197,7 +197,7 @@ qreal GPS_Math_Distance(const qreal u1, const qreal v1, const qreal u2, const qr
 
         if (sinSigma==0)
         {
-            return(0);  // co-incident points
+            return 0;   // co-incident points
         }
 
         cosSigma = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda;
@@ -217,7 +217,7 @@ qreal GPS_Math_Distance(const qreal u1, const qreal v1, const qreal u2, const qr
     }
     if (iterLimit==0)
     {
-        return( FP_NAN);              // formula failed to converge
+        return FP_NAN;                // formula failed to converge
     }
     qreal uSq = cosSqAlpha * (a*a - b*b) / (b*b);
     qreal A = 1 + uSq/16384*(4096+uSq*(-768+uSq*(320-175*uSq)));
@@ -225,7 +225,7 @@ qreal GPS_Math_Distance(const qreal u1, const qreal v1, const qreal u2, const qr
     qreal deltaSigma = B*sinSigma*(cos2SigmaM+B/4*(cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)-B/6*cos2SigmaM*(-3+4*sinSigma*sinSigma)*(-3+4*cos2SigmaM*cos2SigmaM)));
     qreal s = b*A*(sigma-deltaSigma);
 
-    return(s);
+    return s;
 }
 
 qreal GPS_Math_DistanceQuick(const qreal u1, const qreal v1, const qreal u2, const qreal v2)
@@ -235,7 +235,7 @@ qreal GPS_Math_DistanceQuick(const qreal u1, const qreal v1, const qreal u2, con
 
     qreal d = 2*asin(sqrt(sin(dV/2) * sin(dV/2) + cos(v1) * cos(v2) * sin(dU/2) * sin(dU/2)));
 
-    return(6371010 * d);
+    return 6371010 * d;
 }
 
 void GPS_Math_Wpt_Projection(const qreal lon1, const qreal lat1, const qreal distance, const qreal bearing, qreal& lon2, qreal& lat2)
@@ -276,7 +276,7 @@ qreal GPS_Math_distPointLine3D(point3D& x1, point3D& x2, point3D& x0)
     // |(x2 - x1)|
     a3      = v3.x*v3.x + v3.y*v3.y + v3.z*v3.z;
 
-    return(sqrt(a1x2/a3));
+    return sqrt(a1x2/a3);
 }
 
 
@@ -348,7 +348,7 @@ QPointF GPS_Math_Wpt_Projection(const QPointF& pt1, qreal distance, qreal bearin
 
     pt2.rx() = lon2;
     pt2.ry() = lat2;
-    return(pt2);
+    return pt2;
 }
 
 
@@ -357,7 +357,7 @@ bool GPS_Math_LineCrossesRect(const QPointF &p1, const QPointF &p2, const QRectF
     // the trival case
     if(rect.contains(p1) || rect.contains(p2))
     {
-        return(true);
+        return true;
     }
 
     qreal slope    = qreal(p2.y() - p1.y()) / (p2.x() - p1.x());
@@ -367,14 +367,14 @@ bool GPS_Math_LineCrossesRect(const QPointF &p1, const QPointF &p2, const QRectF
 
     if((y1 < rect.top()) && (y2 < rect.top()))
     {
-        return(false);
+        return false;
     }
     else if((y1 > rect.bottom()) && (y2 > rect.bottom()))
     {
-        return(false);
+        return false;
     }
 
-    return(true);
+    return true;
 }
 
 
diff --git a/src/GeoMath.h b/src/GeoMath.h
index a6a66f3..6436a5f 100644
--- a/src/GeoMath.h
+++ b/src/GeoMath.h
@@ -19,9 +19,9 @@
 
 #ifndef GEOMATH_H
 #define GEOMATH_H
-#include <QString>
 #include <QPointF>
 #include <QRectF>
+#include <QString>
 
 #include <stdint.h>
 
@@ -30,7 +30,9 @@ class IDrawContext;
 
 struct point3D
 {
-    point3D() : x(0), y(0), z(0){}
+    point3D() : x(0), y(0), z(0)
+    {
+    }
     qreal x;
     qreal y;
     qreal z;
@@ -38,13 +40,18 @@ struct point3D
 
 struct pointDP : public point3D
 {
-    pointDP():used(true){}
+    pointDP() : used(true), idx(-1)
+    {
+    }
     bool used;
+    qint32 idx;
 };
 
 struct segment_t
 {
-    segment_t() : idx11(-1), idx12(-1), idx21(-1){}
+    segment_t() : idx11(-1), idx12(-1), idx21(-1)
+    {
+    }
 
     void apply(const QPolygonF& coords, const QPolygonF& pixel, QPolygonF& segCoord, QPolygonF& segPixel, IDrawContext * context);
 
diff --git a/src/IMainWindow.ui b/src/IMainWindow.ui
index d40e571..15466d7 100644
--- a/src/IMainWindow.ui
+++ b/src/IMainWindow.ui
@@ -69,7 +69,7 @@
     <property name="title">
      <string>View</string>
     </property>
-    <addaction name="actionAddMapWorkspace"/>
+    <addaction name="actionAddMapView"/>
     <addaction name="separator"/>
     <addaction name="actionShowScale"/>
     <addaction name="actionShowGrid"/>
@@ -81,7 +81,7 @@
     <addaction name="actionSetupMapFont"/>
     <addaction name="actionSetupUnits"/>
     <addaction name="actionSetupGrid"/>
-    <addaction name="actionSetupMapWks"/>
+    <addaction name="actionSetupMapView"/>
     <addaction name="actionSetupTimeZone"/>
    </widget>
    <widget class="QMenu" name="menuWindow">
@@ -202,13 +202,16 @@
    </attribute>
    <widget class="QWidget" name="dockWidgetContents_2"/>
   </widget>
-  <action name="actionAddMapWorkspace">
+  <action name="actionAddMapView">
    <property name="icon">
     <iconset resource="resources.qrc">
      <normaloff>:/icons/32x32/AddMapWorkspace.png</normaloff>:/icons/32x32/AddMapWorkspace.png</iconset>
    </property>
    <property name="text">
-    <string>Add Map Workspace</string>
+    <string>Add Map View</string>
+   </property>
+   <property name="toolTip">
+    <string>Add Map View</string>
    </property>
    <property name="shortcut">
     <string>Ctrl+T</string>
@@ -349,13 +352,16 @@
     <string>Help</string>
    </property>
   </action>
-  <action name="actionSetupMapWks">
+  <action name="actionSetupMapView">
    <property name="icon">
     <iconset resource="resources.qrc">
      <normaloff>:/icons/32x32/SetupMapWorkspace.png</normaloff>:/icons/32x32/SetupMapWorkspace.png</iconset>
    </property>
    <property name="text">
-    <string>Setup Map Workspace</string>
+    <string>Setup Map View</string>
+   </property>
+   <property name="toolTip">
+    <string>Setup Map View</string>
    </property>
   </action>
   <action name="actionLoadGISData">
diff --git a/src/canvas/CCanvas.cpp b/src/canvas/CCanvas.cpp
index 218f600..85d0dae 100644
--- a/src/canvas/CCanvas.cpp
+++ b/src/canvas/CCanvas.cpp
@@ -17,24 +17,24 @@
 **********************************************************************************************/
 
 #include "CMainWindow.h"
+#include "GeoMath.h"
 #include "canvas/CCanvas.h"
 #include "canvas/CCanvasSetup.h"
-#include "GeoMath.h"
-#include "map/CMapDraw.h"
 #include "dem/CDemDraw.h"
+#include "gis/CGisDraw.h"
+#include "gis/CGisWidget.h"
+#include "gis/ovl/CGisItemOvlArea.h"
+#include "gis/trk/CGisItemTrk.h"
 #include "grid/CGrid.h"
 #include "grid/CGridSetup.h"
-#include "units/IUnit.h"
-#include "mouse/CMouseNormal.h"
-#include "mouse/CMouseMoveWpt.h"
-#include "mouse/CMouseEditTrk.h"
+#include "map/CMapDraw.h"
 #include "mouse/CMouseEditArea.h"
+#include "mouse/CMouseEditTrk.h"
+#include "mouse/CMouseMoveWpt.h"
+#include "mouse/CMouseNormal.h"
 #include "mouse/CMouseRangeTrk.h"
-#include "gis/CGisWidget.h"
-#include "gis/CGisDraw.h"
-#include "gis/trk/CGisItemTrk.h"
-#include "gis/ovl/CGisItemOvlArea.h"
 #include "plot/CPlotProfile.h"
+#include "units/IUnit.h"
 
 
 #include <QtWidgets>
@@ -56,7 +56,7 @@ CCanvas::CCanvas(QWidget *parent)
     int count = 1;
     while(1)
     {
-        QString name = tr("Workspace %1").arg(count);
+        QString name = tr("View %1").arg(count);
         if(CMainWindow::self().findChild<CCanvas*>(name) == 0)
         {
             setObjectName(name);
@@ -113,7 +113,6 @@ CCanvas::CCanvas(QWidget *parent)
 
 CCanvas::~CCanvas()
 {
-
 }
 
 void CCanvas::saveConfig(QSettings& cfg)
@@ -127,7 +126,7 @@ void CCanvas::saveConfig(QSettings& cfg)
 
 void CCanvas::loadConfig(QSettings& cfg)
 {
-    map->loadConfig(cfg);    
+    map->loadConfig(cfg);
     dem->loadConfig(cfg);
     grid->loadConfig(cfg);
     posFocus = cfg.value("posFocus", posFocus).toPointF();
@@ -161,7 +160,6 @@ void CCanvas::setMouseMoveWpt(CGisItemWpt& wpt)
 
 void CCanvas::setMouseEditTrk(const QPointF &pt)
 {
-
     mouse->deleteLater();
     mouse = new CMouseEditTrk(pt, gis, this);
     if(underMouse())
@@ -231,7 +229,7 @@ void CCanvas::reportStatus(const QString& key, const QString& msg)
     QString report;
     QStringList keys = statusMessages.keys();
     keys.sort();
-    foreach(const QString& key, keys)
+    foreach(const QString &key, keys)
     {
         report += statusMessages[key] + "\n";
     }
@@ -244,7 +242,7 @@ void CCanvas::reportStatus(const QString& key, const QString& msg)
     {
         labelStatusMessages->show();
         labelStatusMessages->setText(report);
-        labelStatusMessages->adjustSize();        
+        labelStatusMessages->adjustSize();
     }
     update();
 }
@@ -254,9 +252,18 @@ void CCanvas::resizeEvent(QResizeEvent * e)
     needsRedraw = eRedrawAll;
 
     QSize s = e->size();
-    if(map) map->resize(s);
-    if(dem) dem->resize(s);
-    if(gis) gis->resize(s);
+    if(map)
+    {
+        map->resize(s);
+    }
+    if(dem)
+    {
+        dem->resize(s);
+    }
+    if(gis)
+    {
+        gis->resize(s);
+    }
 
     QWidget::resizeEvent(e);
 
@@ -321,7 +328,6 @@ void CCanvas::paintEvent(QPaintEvent * e)
 
     p.end();
     needsRedraw = eRedrawNone;
-
 }
 
 void CCanvas::mousePressEvent(QMouseEvent * e)
@@ -448,9 +454,8 @@ void CCanvas::drawText(const QString& str, QPainter& p, const QPoint& center, co
 
 void CCanvas::drawText(const QString& str, QPainter& p, const QPoint& center, const QColor& color, const QFont& font)
 {
-
-    QFontMetrics    fm(font);
-    QRect           r = fm.boundingRect(str);
+    QFontMetrics fm(font);
+    QRect r = fm.boundingRect(str);
 
     r.moveCenter(center);
 
@@ -470,13 +475,11 @@ void CCanvas::drawText(const QString& str, QPainter& p, const QPoint& center, co
 
     p.setPen(color);
     p.drawText(r.topLeft(),str);
-
 }
 
 
 void CCanvas::drawText(const QString& str, QPainter& p, const QRect& r, const QColor& color)
 {
-
     p.setPen(Qt::white);
     p.setFont(CMainWindow::self().getMapFont());
 
@@ -493,7 +496,6 @@ void CCanvas::drawText(const QString& str, QPainter& p, const QRect& r, const QC
 
     p.setPen(color);
     p.drawText(r,Qt::AlignCenter,str);
-
 }
 
 void CCanvas::drawStatusMessages(QPainter& p)
@@ -511,7 +513,6 @@ void CCanvas::drawStatusMessages(QPainter& p)
 
 void CCanvas::drawScale(QPainter& p)
 {
-
     if(!CMainWindow::self().isScaleVisible())
     {
         return;
diff --git a/src/canvas/CCanvas.h b/src/canvas/CCanvas.h
index 66c5741..cd74e2d 100644
--- a/src/canvas/CCanvas.h
+++ b/src/canvas/CCanvas.h
@@ -19,10 +19,10 @@
 #ifndef CCANVAS_H
 #define CCANVAS_H
 
-#include <QWidget>
+#include <QMap>
 #include <QPainter>
 #include <QPointer>
-#include <QMap>
+#include <QWidget>
 
 #include "gis/IGisItem.h"
 
@@ -41,18 +41,18 @@ class QMovie;
 class QLabel;
 class IPlot;
 
-inline  void USE_ANTI_ALIASING(QPainter& p, bool useAntiAliasing)
+inline void USE_ANTI_ALIASING(QPainter& p, bool useAntiAliasing)
 {
     p.setRenderHints(QPainter::TextAntialiasing|QPainter::Antialiasing|QPainter::SmoothPixmapTransform|QPainter::HighQualityAntialiasing, useAntiAliasing);
 }
 
 #define PROGRESS_SETUP(lbl, max) \
-QProgressDialog progress(lbl, "Abort", 0, max, 0);\
-progress.setWindowModality(Qt::WindowModal);\
+    QProgressDialog progress(lbl, "Abort", 0, max, 0); \
+    progress.setWindowModality(Qt::WindowModal); \
 
 #define PROGRESS(x, cmd) \
-progress.setValue(x); \
-if (progress.wasCanceled()) cmd;\
+    progress.setValue(x); \
+    if (progress.wasCanceled()) { cmd; } \
 
 #define PAINT_ROUNDED_RECT(p,r) p.drawRoundedRect(r,5,5)
 
@@ -60,147 +60,147 @@ if (progress.wasCanceled()) cmd;\
 class CCanvas : public QWidget
 {
     Q_OBJECT
-    public:
-        CCanvas(QWidget * parent);
-        virtual ~CCanvas();
-
-        void saveConfig(QSettings& cfg);
-        void loadConfig(QSettings& cfg);
-
-        void setupGrid();
-        void convertGridPos2Str(const QPointF& pos, QString& str);
-
-        void setup();
-        QString getProjection();
-        void  setProjection(const QString& proj);
-        qreal getElevationAt(const QPointF &pos);
-        void  getElevationAt(const QPolygonF& pos, QPolygonF &ele);
-
-        void moveMap(const QPointF &delta);
-        void zoomTo(const QRectF& rect);
-        void displayInfo(const QPoint& px);        
-
-        static void drawText(const QString& str, QPainter& p, const QPoint& center, const QColor& color);
-        static void drawText(const QString& str, QPainter& p, const QPoint& center, const QColor& color, const QFont& font);
-        static void drawText(const QString& str, QPainter& p, const QRect& r, const QColor& color);
-
-        enum redraw_e
-        {
-              eRedrawNone = 0
-            , eRedrawMap = 0x01
-            , eRedrawDem = 0x02
-            , eRedrawGis = 0x04
-            , eRedrawAll = 0xFFFFFFFF
-        };
-
-        static QPen penBorderBlue;
-        static QPen penBorderGray;
-        static QPen penBorderBlack;
-        static QBrush brushBackWhite;
-        static QBrush brushBackYellow;
-
-        void resetMouse();
-        void setMouseMoveWpt(CGisItemWpt& wpt);
-        void setMouseEditTrk(CGisItemTrk& trk);
-        void setMouseRangeTrk(CGisItemTrk& trk);
-        void setMouseEditTrk(const QPointF& pt);        
-        void setMouseEditArea(CGisItemOvlArea& area);
-        void setMouseEditArea(const QPointF& pt);
-
-
-        /**
-           @brief Add a message by key to be reported on the canvas
-
-           Messages from various sources will be collected in a list and displayed in the top left corner
-           of the widget.
-
-           @note The object reporting has to take care to remove the message by reporting an empty string.
-
-           @param key   the key to identify the reporting object
-           @param msg   the message to report
-         */
-        void reportStatus(const QString& key, const QString& msg);
-
-        /**
-           @brief Find a matching street polyline
-
-           The polyline must be close enough in terms of pixel to point 1 and 2. "Close enough" is defined by
-           the threshold. The returned poylline uses lon/lat as coordinates.
-
-           @param pt1           first point in [rad]
-           @param pt2           second point in [rad]
-           @param threshold     the "close enough" threshold in [pixel]
-           @param polyline      the resulting polyline, if any, in [rad]
-           @return              Return true if a line has been found.
-        */
-        bool findPolylineCloseBy(QPointF& pt1, QPointF& pt2, qint32 threshold, QPolygonF& polyline);
-
-    signals:
-        void sigMousePosition(const QPointF& pos, qreal ele);
-
-    public slots:
-        void slotTriggerCompleteUpdate(CCanvas::redraw_e flags);
-
-    protected:
-        void resizeEvent(QResizeEvent * e);
-        void paintEvent(QPaintEvent * e);
-        void mousePressEvent(QMouseEvent * e);
-        void mouseMoveEvent(QMouseEvent * e);
-        void mouseReleaseEvent(QMouseEvent *e);
-        void mouseDoubleClickEvent(QMouseEvent * e);
-        void wheelEvent(QWheelEvent * e);
-        void enterEvent(QEvent * e);
-        void leaveEvent(QEvent * e);
-        void keyPressEvent(QKeyEvent * e);
-
-
-    private slots:
-        void slotToolTip();
-        void slotCheckTrackOnFocus();
-
-    private:
-        void drawStatusMessages(QPainter& p);
-        void drawScale(QPainter& p);
-        void setZoom(bool in, redraw_e &needsRedraw);
-
-        /// 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 convas
-        CGisDraw * gis;
-        /// the grid attached to this canvas
-        CGrid * grid;
-        /// the current point of focus (usually the canvas center)
-        QPointF posFocus;
-
-        /// the current mouse handler
-        IMouse * mouse;
-
-        /// tool tip timer for vector map tool tips
-        QTimer * timerToolTip;
-        /// the position of the tool tip
-        QPoint posToolTip;
-
-        /// load indicator for maps
-        QMovie * loadIndicator1;
-        QLabel * mapLoadIndicator;
-
-        /// load indicator for DEM
-        QMovie * loadIndicator2;
-        QLabel * demLoadIndicator;
-
-        /// timer to poll for track gaining/loosing focus
-        QTimer * timerTrackOnFocus;
-        /// the key of the currentl focused track
-        IGisItem::key_t keyTrackOnFocus;
-        /// the track profile plot
-        QPointer<IPlot>  plotTrackProfile;
-
-        QLabel * labelStatusMessages;
-        QMap<QString, QString> statusMessages;
+public:
+    CCanvas(QWidget * parent);
+    virtual ~CCanvas();
+
+    void saveConfig(QSettings& cfg);
+    void loadConfig(QSettings& cfg);
+
+    void setupGrid();
+    void convertGridPos2Str(const QPointF& pos, QString& str);
+
+    void setup();
+    QString getProjection();
+    void  setProjection(const QString& proj);
+    qreal getElevationAt(const QPointF &pos);
+    void  getElevationAt(const QPolygonF& pos, QPolygonF &ele);
+
+    void moveMap(const QPointF &delta);
+    void zoomTo(const QRectF& rect);
+    void displayInfo(const QPoint& px);
+
+    static void drawText(const QString& str, QPainter& p, const QPoint& center, const QColor& color);
+    static void drawText(const QString& str, QPainter& p, const QPoint& center, const QColor& color, const QFont& font);
+    static void drawText(const QString& str, QPainter& p, const QRect& r, const QColor& color);
+
+    enum redraw_e
+    {
+        eRedrawNone = 0
+        , eRedrawMap = 0x01
+        , eRedrawDem = 0x02
+        , eRedrawGis = 0x04
+        , eRedrawAll = 0xFFFFFFFF
+    };
+
+    static QPen penBorderBlue;
+    static QPen penBorderGray;
+    static QPen penBorderBlack;
+    static QBrush brushBackWhite;
+    static QBrush brushBackYellow;
+
+    void resetMouse();
+    void setMouseMoveWpt(CGisItemWpt& wpt);
+    void setMouseEditTrk(CGisItemTrk& trk);
+    void setMouseRangeTrk(CGisItemTrk& trk);
+    void setMouseEditTrk(const QPointF& pt);
+    void setMouseEditArea(CGisItemOvlArea& area);
+    void setMouseEditArea(const QPointF& pt);
+
+
+    /**
+       @brief Add a message by key to be reported on the canvas
+
+       Messages from various sources will be collected in a list and displayed in the top left corner
+       of the widget.
+
+       @note The object reporting has to take care to remove the message by reporting an empty string.
+
+       @param key   the key to identify the reporting object
+       @param msg   the message to report
+     */
+    void reportStatus(const QString& key, const QString& msg);
+
+    /**
+       @brief Find a matching street polyline
+
+       The polyline must be close enough in terms of pixel to point 1 and 2. "Close enough" is defined by
+       the threshold. The returned poylline uses lon/lat as coordinates.
+
+       @param pt1           first point in [rad]
+       @param pt2           second point in [rad]
+       @param threshold     the "close enough" threshold in [pixel]
+       @param polyline      the resulting polyline, if any, in [rad]
+       @return              Return true if a line has been found.
+     */
+    bool findPolylineCloseBy(QPointF& pt1, QPointF& pt2, qint32 threshold, QPolygonF& polyline);
+
+signals:
+    void sigMousePosition(const QPointF& pos, qreal ele);
+
+public slots:
+    void slotTriggerCompleteUpdate(CCanvas::redraw_e flags);
+
+protected:
+    void resizeEvent(QResizeEvent * e);
+    void paintEvent(QPaintEvent * e);
+    void mousePressEvent(QMouseEvent * e);
+    void mouseMoveEvent(QMouseEvent * e);
+    void mouseReleaseEvent(QMouseEvent *e);
+    void mouseDoubleClickEvent(QMouseEvent * e);
+    void wheelEvent(QWheelEvent * e);
+    void enterEvent(QEvent * e);
+    void leaveEvent(QEvent * e);
+    void keyPressEvent(QKeyEvent * e);
+
+
+private slots:
+    void slotToolTip();
+    void slotCheckTrackOnFocus();
+
+private:
+    void drawStatusMessages(QPainter& p);
+    void drawScale(QPainter& p);
+    void setZoom(bool in, redraw_e &needsRedraw);
+
+    /// 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 convas
+    CGisDraw * gis;
+    /// the grid attached to this canvas
+    CGrid * grid;
+    /// the current point of focus (usually the canvas center)
+    QPointF posFocus;
+
+    /// the current mouse handler
+    IMouse * mouse;
+
+    /// tool tip timer for vector map tool tips
+    QTimer * timerToolTip;
+    /// the position of the tool tip
+    QPoint posToolTip;
+
+    /// load indicator for maps
+    QMovie * loadIndicator1;
+    QLabel * mapLoadIndicator;
+
+    /// load indicator for DEM
+    QMovie * loadIndicator2;
+    QLabel * demLoadIndicator;
+
+    /// timer to poll for track gaining/loosing focus
+    QTimer * timerTrackOnFocus;
+    /// the key of the currentl focused track
+    IGisItem::key_t keyTrackOnFocus;
+    /// the track profile plot
+    QPointer<IPlot>  plotTrackProfile;
+
+    QLabel * labelStatusMessages;
+    QMap<QString, QString> statusMessages;
 };
 
 #endif //CCANVAS_H
diff --git a/src/canvas/CCanvasSetup.cpp b/src/canvas/CCanvasSetup.cpp
index 2aceacb..8153d53 100644
--- a/src/canvas/CCanvasSetup.cpp
+++ b/src/canvas/CCanvasSetup.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "canvas/CCanvasSetup.h"
 #include "canvas/CCanvas.h"
+#include "canvas/CCanvasSetup.h"
 #include "grid/CProjWizard.h"
 
 CCanvasSetup::CCanvasSetup(CCanvas * canvas)
@@ -34,7 +34,6 @@ CCanvasSetup::CCanvasSetup(CCanvas * canvas)
 
 CCanvasSetup::~CCanvasSetup()
 {
-
 }
 
 void CCanvasSetup::slotProjWizard()
diff --git a/src/canvas/CCanvasSetup.h b/src/canvas/CCanvasSetup.h
index f015743..23794b2 100644
--- a/src/canvas/CCanvasSetup.h
+++ b/src/canvas/CCanvasSetup.h
@@ -19,27 +19,27 @@
 #ifndef CCANVASSETUP_H
 #define CCANVASSETUP_H
 
-#include <QDialog>
 #include "ui_ICanvasSetup.h"
+#include <QDialog>
 
 class CCanvas;
 
 class CCanvasSetup : public QDialog, private Ui::ICanvasSetup
 {
     Q_OBJECT
-    public:
-        CCanvasSetup(CCanvas *canvas);
-        virtual ~CCanvasSetup();
+public:
+    CCanvasSetup(CCanvas *canvas);
+    virtual ~CCanvasSetup();
 
-    public slots:
-        void accept();
+public slots:
+    void accept();
 
 
-    protected slots:
-        void slotProjWizard();
+protected slots:
+    void slotProjWizard();
 
-    protected:
-        CCanvas * canvas;
+protected:
+    CCanvas * canvas;
 };
 
 #endif //CCANVASSETUP_H
diff --git a/src/canvas/ICanvasSetup.ui b/src/canvas/ICanvasSetup.ui
index f1148e0..9d3f1f6 100644
--- a/src/canvas/ICanvasSetup.ui
+++ b/src/canvas/ICanvasSetup.ui
@@ -11,7 +11,7 @@
    </rect>
   </property>
   <property name="windowTitle">
-   <string>Setup Map Workspace...</string>
+   <string>Setup Map View...</string>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
diff --git a/src/canvas/IDrawContext.cpp b/src/canvas/IDrawContext.cpp
index f9423d1..0a1c03a 100644
--- a/src/canvas/IDrawContext.cpp
+++ b/src/canvas/IDrawContext.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "canvas/IDrawContext.h"
 #include "canvas/CCanvas.h"
+#include "canvas/IDrawContext.h"
 
 #include <QtWidgets>
 
@@ -50,7 +50,7 @@
 #define N_ZOOM_LEVELS 31
 const qreal IDrawContext::scales[N_ZOOM_LEVELS] =
 {
-      0.10
+    0.10
     , 0.15
     , 0.20
     , 0.30
@@ -123,14 +123,12 @@ IDrawContext::IDrawContext(const QString& name, CCanvas::redraw_e maskRedraw, CC
     resize(canvas->size());
     connect(this, SIGNAL(finished()), canvas, SLOT(update()));
     connect(this, SIGNAL(finished()), SIGNAL(sigStopThread()));
-
 }
 
 IDrawContext::~IDrawContext()
 {
     pj_free(pjtar);
     pj_free(pjsrc);
-
 }
 
 void IDrawContext::emitSigCanvasUpdate()
@@ -188,7 +186,10 @@ bool IDrawContext::needsRedraw()
 
 void IDrawContext::zoom(const QRectF& rect)
 {
-    if(pjsrc == 0) return;
+    if(pjsrc == 0)
+    {
+        return;
+    }
 
     // special case for elements with no extent
     if(rect.width() == 0 || rect.height() == 0)
@@ -217,7 +218,10 @@ void IDrawContext::zoom(const QRectF& rect)
 
 void IDrawContext::zoom(bool in, CCanvas::redraw_e& needsRedraw)
 {
-    if(pjsrc == 0) return;
+    if(pjsrc == 0)
+    {
+        return;
+    }
     zoom(zoomIndex + (in ? -1 : 1));
     needsRedraw = CCanvas::eRedrawAll;
 }
@@ -242,7 +246,7 @@ void IDrawContext::zoom(int idx)
         zoomFactor.ry() = scales[idx];
         intNeedsRedraw  = true;
 
-        emit  sigScaleChanged(scale*zoomFactor);
+        emit sigScaleChanged(scale*zoomFactor);
     }
     mutex.unlock(); // --------- stop serialize with thread
 }
@@ -260,7 +264,7 @@ void IDrawContext::convertRad2M(QPointF &p)
         range of -180..180°. But the draw context has no
         turnaround. It exceeds the values. We have to
         apply fixes in that case.
-    */
+     */
     bool fixWest = p.x() < (-180*DEG_TO_RAD);
     bool fixEast = p.x() > ( 180*DEG_TO_RAD);
 
@@ -270,7 +274,7 @@ void IDrawContext::convertRad2M(QPointF &p)
         The idea of the fix is to calculate a point
         at the boundary with the same latitude and use it
         as offset.
-    */
+     */
     if(fixWest)
     {
         QPointF o(-180*DEG_TO_RAD,y);
@@ -284,7 +288,6 @@ void IDrawContext::convertRad2M(QPointF &p)
         convertRad2M(o);
         p.rx() = 2*o.x() + p.x();
     }
-
 }
 
 void IDrawContext::convertM2Rad(QPointF &p)
@@ -295,7 +298,6 @@ void IDrawContext::convertM2Rad(QPointF &p)
     }
 
     pj_transform(pjsrc,pjtar,1,0,&p.rx(),&p.ry(),0);
-
 }
 
 void IDrawContext::convertPx2Rad(QPointF &p)
@@ -344,7 +346,10 @@ void IDrawContext::convertRad2Px(QPolygonF& poly)
 
 void IDrawContext::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QPointF& f)
 {
-    if(pjsrc == 0) return;
+    if(pjsrc == 0)
+    {
+        return;
+    }
 
     // convert global coordinate of focus into point of map
     focus = f;
@@ -395,7 +400,7 @@ void IDrawContext::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QPoint
     // get current active buffer
     buffer_t& currentBuffer = buffer[bufIndex];
 
-    // convert buffers top left reference point to local coordinate system    
+    // convert buffers top left reference point to local coordinate system
     QPointF ref = currentBuffer.ref1;
     convertRad2M(ref);
 
@@ -414,7 +419,10 @@ void IDrawContext::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QPoint
     p.restore();
 
     // intNeedsRedraw is reset by the thread
-    if(needsRedraw & maskRedraw) intNeedsRedraw = true;
+    if(needsRedraw & maskRedraw)
+    {
+        intNeedsRedraw = true;
+    }
     mutex.unlock(); // --------- stop serialize with thread
 
     if((needsRedraw  & maskRedraw) && !isRunning())
@@ -422,7 +430,6 @@ void IDrawContext::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QPoint
         emit sigStartThread();
         start();
     }
-
 }
 
 void IDrawContext::run()
@@ -435,7 +442,6 @@ void IDrawContext::run()
     IDrawContext::buffer_t& currentBuffer = buffer[!bufIndex];
     while(intNeedsRedraw)
     {
-
         // copy all projection information need by the
         // map render objects to buffer structure
         currentBuffer.pjsrc         = pjsrc;
@@ -448,7 +454,7 @@ void IDrawContext::run()
         currentBuffer.focus         = focus;
         intNeedsRedraw              = false;
 
-        mutex.unlock();        
+        mutex.unlock();
 
         qDebug() << "bufferScale" << (currentBuffer.scale * currentBuffer.zoomFactor);
         // ----- reset buffer -----
@@ -462,6 +468,5 @@ void IDrawContext::run()
     bufIndex = !bufIndex;
     qDebug() << objectName() << "stop thread" << t.elapsed();
     mutex.unlock();
-
 }
 
diff --git a/src/canvas/IDrawContext.h b/src/canvas/IDrawContext.h
index 2939ff6..4ead935 100644
--- a/src/canvas/IDrawContext.h
+++ b/src/canvas/IDrawContext.h
@@ -20,10 +20,10 @@
 #define IDRAWCONTEXT_H
 
 
-#include <QThread>
+#include <QImage>
 #include <QMutex>
 #include <QPointF>
-#include <QImage>
+#include <QThread>
 #include <proj_api.h>
 
 
@@ -32,182 +32,186 @@
 class IDrawContext : public QThread
 {
     Q_OBJECT
-    public:
-        IDrawContext(const QString &name, CCanvas::redraw_e maskRedraw, CCanvas *parent);
-        virtual ~IDrawContext();
+public:
+    IDrawContext(const QString &name, CCanvas::redraw_e maskRedraw, CCanvas *parent);
+    virtual ~IDrawContext();
 
-        struct buffer_t
+    struct buffer_t
+    {
+        buffer_t() : zoomFactor(1.0,1.0), scale(1.0,1.0)
         {
-            buffer_t() : zoomFactor(1.0,1.0), scale(1.0,1.0){}
-
-            /// @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;
-            /// the scale of the global viewport
-            QPointF scale;
-            /// 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;
-        };
-
-        /**
-           @brief resize the internal buffer
-           @param size  the new size of the canvas
-         */
-        void resize(const QSize& size);
-        /**
-           @brief Zoom in and out of the map by the scale factors defined in CMapDB::scales.
-           @param in            set true to zoom in, and false to zoom out
-           @param needsRedraw   if the zoom action makes a redraw nesseccary needsRedraw is set true
-         */
-        void zoom(bool in, CCanvas::redraw_e &needsRedraw);
-        void zoom(int idx);
-        void zoom(const QRectF& rect);
-        int  zoom(){return zoomIndex;}
-
-        /**
-           @brief Convert a geo coordinate of format lon/lat WGS84 into the currently used coordinate/projection/datum system.
-           @note  The unit is dependent on the currently used projection and must not nesseccarily be meter
-           @param p             the point to convert
-         */
-        void convertRad2M(QPointF &p);
-        /**
-           @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 nesseccarily be meter
-           @param p             the point to convert
-         */
-        void convertM2Rad(QPointF &p);
-        /**
-           @brief Convert a pixel coordinate from the viewport to a geo coordinate in [rad]
-           @param p             the point to convert
-         */
-        void convertPx2Rad(QPointF& p);
-        /**
-           @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);
-
-        /**
-           @brief Check if the internal needs redraw flag is set
-           @return intNeedsRedraw is returned
-         */
-        bool needsRedraw();
-
-        /**
-            @brief Draw the active map buffer to the painter
-            @param p            the painte used to draw the map
-            @param needsRedraw  set true to trigger a redraw in the background thread
-            @param f            the point of focus in [°] that is drawn in the middle of the viewport.
-         */
-        void draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QPointF &f);
-
-        /**
-           @brief Get the projection string of this map object
-           @return A proj4 string.
-         */
-        QString getProjection();
-
-        /**
-           @brief Set the projection of the draw context
-
-           This will just create a new source projection object (pjsrc). Most likely you want to
-           overide this method to:
-
-           1) save what ever has to be saved
-           2) call this method
-           3) restore everything with the new projection
-
-           @param proj a Proj4 projection string
-         */
-        virtual void setProjection(const QString& proj);
-
-    signals:
-        void sigCanvasUpdate(CCanvas::redraw_e flags);
-        void sigStartThread();
-        void sigStopThread();
-        void sigScaleChanged(const QPointF& scale);
-
-    public slots:
-        void emitSigCanvasUpdate();
-
-    protected:
-        void run();
-        /**
-           @brief The draw method called from the thread.
-
-           That's where the actual drawing has to be done
-
-           @param currentBuffer this is the current buffer reserved for the thread to draw on.
-         */
-        virtual void drawt(buffer_t& currentBuffer) = 0;
-
-        /**
-           @brief The global list of available scale factors
-         */
-        static const qreal scales[];
-
-        /// the mutex to serialize access
-        QMutex mutex;
-
-        /// internal needs redraw flag
-        bool intNeedsRedraw;
-
-        /// the canvas this map object is attached to
-        CCanvas * canvas;
-
-        const CCanvas::redraw_e maskRedraw;
-        /// map canvas twin buffer
-        buffer_t buffer[2];
-        /// the main threads currently used map canvas buffer
-        bool bufIndex;
-        /// buffer width [px]
-        int  bufWidth;
-        /// buffer height [px]
-        int  bufHeight;
-        /// the viewports width [px]
-        int  viewWidth;
-        /// the viewports height [px]
-        int  viewHeight;
-        /// 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;
-
-        /// the basic scale of the map canvas
-        QPointF scale;
-        /// index into scales table
-        int     zoomIndex;
-        /// 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
+        /// @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;
+        /// the scale of the global viewport
+        QPointF scale;
+        /// top left corner
         QPointF ref1;
-        /// top right corner of next buffer
+        /// top right corner
         QPointF ref2;
-        /// bottom right corner of next buffer
+        /// bottom right corner
         QPointF ref3;
-        /// bottom left corner of next buffer
+        /// bottom left corner
         QPointF ref4;
-
+        /// point of focus
+        QPointF focus;
+    };
+
+    /**
+       @brief resize the internal buffer
+       @param size  the new size of the canvas
+     */
+    void resize(const QSize& size);
+    /**
+       @brief Zoom in and out of the map by the scale factors defined in CMapDB::scales.
+       @param in            set true to zoom in, and false to zoom out
+       @param needsRedraw   if the zoom action makes a redraw nesseccary needsRedraw is set true
+     */
+    void zoom(bool in, CCanvas::redraw_e &needsRedraw);
+    void zoom(int idx);
+    void zoom(const QRectF& rect);
+    int  zoom()
+    {
+        return zoomIndex;
+    }
+
+    /**
+       @brief Convert a geo coordinate of format lon/lat WGS84 into the currently used coordinate/projection/datum system.
+       @note  The unit is dependent on the currently used projection and must not nesseccarily be meter
+       @param p             the point to convert
+     */
+    void convertRad2M(QPointF &p);
+    /**
+       @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 nesseccarily be meter
+       @param p             the point to convert
+     */
+    void convertM2Rad(QPointF &p);
+    /**
+       @brief Convert a pixel coordinate from the viewport to a geo coordinate in [rad]
+       @param p             the point to convert
+     */
+    void convertPx2Rad(QPointF& p);
+    /**
+       @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);
+
+    /**
+       @brief Check if the internal needs redraw flag is set
+       @return intNeedsRedraw is returned
+     */
+    bool needsRedraw();
+
+    /**
+        @brief Draw the active map buffer to the painter
+        @param p            the painte used to draw the map
+        @param needsRedraw  set true to trigger a redraw in the background thread
+        @param f            the point of focus in [°] that is drawn in the middle of the viewport.
+     */
+    void draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QPointF &f);
+
+    /**
+       @brief Get the projection string of this map object
+       @return A proj4 string.
+     */
+    QString getProjection();
+
+    /**
+       @brief Set the projection of the draw context
+
+       This will just create a new source projection object (pjsrc). Most likely you want to
+       overide this method to:
+
+       1) save what ever has to be saved
+       2) call this method
+       3) restore everything with the new projection
+
+       @param proj a Proj4 projection string
+     */
+    virtual void setProjection(const QString& proj);
+
+signals:
+    void sigCanvasUpdate(CCanvas::redraw_e flags);
+    void sigStartThread();
+    void sigStopThread();
+    void sigScaleChanged(const QPointF& scale);
+
+public slots:
+    void emitSigCanvasUpdate();
+
+protected:
+    void run();
+    /**
+       @brief The draw method called from the thread.
+
+       That's where the actual drawing has to be done
+
+       @param currentBuffer this is the current buffer reserved for the thread to draw on.
+     */
+    virtual void drawt(buffer_t& currentBuffer) = 0;
+
+    /**
+       @brief The global list of available scale factors
+     */
+    static const qreal scales[];
+
+    /// the mutex to serialize access
+    QMutex mutex;
+
+    /// internal needs redraw flag
+    bool intNeedsRedraw;
+
+    /// the canvas this map object is attached to
+    CCanvas * canvas;
+
+    const CCanvas::redraw_e maskRedraw;
+    /// map canvas twin buffer
+    buffer_t buffer[2];
+    /// the main threads currently used map canvas buffer
+    bool bufIndex;
+    /// buffer width [px]
+    int bufWidth;
+    /// buffer height [px]
+    int bufHeight;
+    /// the viewports width [px]
+    int viewWidth;
+    /// the viewports height [px]
+    int viewHeight;
+    /// 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;
+
+    /// the basic scale of the map canvas
+    QPointF scale;
+    /// index into scales table
+    int zoomIndex;
+    /// 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;
 };
 
 extern QPointF operator*(const QPointF& p1, const QPointF& p2);
diff --git a/src/canvas/IDrawObject.cpp b/src/canvas/IDrawObject.cpp
index 6404a1e..a5a9f18 100644
--- a/src/canvas/IDrawObject.cpp
+++ b/src/canvas/IDrawObject.cpp
@@ -33,12 +33,10 @@ IDrawObject::IDrawObject(QObject *parent)
     , cacheSizeMB(100)
     , cacheExpiration(8)
 {
-
 }
 
 IDrawObject::~IDrawObject()
 {
-
 }
 
 void IDrawObject::saveConfig(QSettings& cfg)
@@ -52,8 +50,6 @@ void IDrawObject::saveConfig(QSettings& cfg)
     cfg.setValue("cachePath", cachePath);
     cfg.setValue("cacheSizeMB", cacheSizeMB);
     cfg.setValue("cacheExpiration", cacheExpiration);
-
-
 }
 
 void IDrawObject::loadConfig(QSettings& cfg)
diff --git a/src/canvas/IDrawObject.h b/src/canvas/IDrawObject.h
index 8f240b5..1ef9adc 100644
--- a/src/canvas/IDrawObject.h
+++ b/src/canvas/IDrawObject.h
@@ -27,130 +27,179 @@ class QListWidget;
 class IDrawObject : public QObject
 {
     Q_OBJECT
-    public:
-        IDrawObject(QObject * parent);
-        virtual ~IDrawObject();
-
-        virtual void saveConfig(QSettings& cfg);
-
-        virtual void loadConfig(QSettings& cfg);
-
-        /**
-           @brief Read opacity value
-           @return Return the opacity in a range of 0..100(full opacity)
-         */
-        int getOpacity(){return opacity;}
-
-        /**
-           @brief Read the minimum scale factor the object should be displayed
-           @return A factor or NOFLOAT if no minimum has been set
-         */
-        qreal getMinScale(){return minScale;}
-        /**
-           @brief Read the maximum scale factor the object should be displayed
-           @return A factor or NOFLOAT if no maximum has been set
-         */
-        qreal getMaxScale(){return maxScale;}
-        /**
-           @brief Write the minimum scale the object should be displayed at.
-           @param s A factor or NOFLOAT if no minimum should be set
-         */
-        void setMinScale(qreal s);
-        /**
-           @brief Write the maximum scale the object should be displayed at.
-           @param s A factor or NOFLOAT if no maximum should be set
-         */
-        void setMaxScale(qreal s);
-
-        bool getShowPolygons(){return showPolygons;}
-
-        bool getShowPolylines(){return showPolylines;}
-
-        bool getShowPOIs(){return showPOIs;}
-
-        const QString& getCachePath(){return cachePath;}
-
-        qint32 getCacheSize(){return cacheSizeMB;}
-
-        qint32 getCacheExpiration(){return cacheExpiration;}
-
-        /**
-           @brief Get QListWidgetItems to enable/disable map layers.
-
-           As this property is a bit more complex the idea is to reimplement the method
-           if the map type has layers. The implementation probably will clear the list
-           and insert a checkable list widget item into the list. Additionally it will
-           connect to the QListWidget's signals to be noticed by a change.
-
-           Different to other properties, that will get queried when ever the property
-           widget think it needs an update, getLayers() will only be called once uppon
-           property widget creation.
-
-           The default implementation will simply clear the list.
-
-           @param list
-         */
-        virtual void getLayers(QListWidget& list);
-
-    public slots:
-        /**
-           @brief Write opacity value
-           @param value must be in the range of 0..100(full opacity)
-         */
-        void slotSetOpacity(int value){opacity = value;}
-
-        void slotSetShowPolygons(bool yes){showPolygons = yes;}
-        void slotSetShowPolylines(bool yes){showPolylines = yes;}
-        void slotSetShowPOIs(bool yes){showPOIs = yes;}
-
-        void slotSetCachePath(const QString& path){cachePath = path; configureCache();}
-        void slotSetCacheSize(qint32 size){cacheSizeMB = size; configureCache();}
-        void slotSetCacheExpiration(qint32 days){cacheExpiration = days; configureCache();}
-
-    signals:
-        /**
-           @brief Emitted every time a property of the object is changed
-         */
-        void sigPropertiesChanged();
-
-    protected:
-        /**
-           @brief Test if the given scale is out of the min/max scale
-           @param scale A scale factor for x and y axis
-           @return True if x scale is out of the min/max range
-         */
-        bool isOutOfScale(const QPointF& scale);
-
-        /**
-           @brief Setup a map cache using cachePath, cacheSizeMB and cacheExpiration
-
-           The default implementation does noting. Streaming maps will probably override
-           it to reconfigure their cache. The method is called when ever a cache property is
-           changed.
-         */
-        virtual void configureCache(){}
-
-    private:
-        /// the opacity level of a map
-        qreal opacity;
-        /// the minimum scale a map is visible
-        qreal minScale;
-        /// the maximum scale a map is visible
-        qreal maxScale;
-        /// vector maps only: hide/show polygons
-        bool showPolygons;
-        /// vector maps only: hide/show polylines
-        bool showPolylines;
-        /// vector maps only: hide/show point of interest
-        bool showPOIs;
-
-        /// streaming map only: path to cached tiles
-        QString cachePath;
-        /// streaming map only: maximum size of all tiles in cache [MByte]
-        qint32 cacheSizeMB;
-        /// streaming map only: maximum age of tiles in cache [days]
-        qint32 cacheExpiration;
-
+public:
+    IDrawObject(QObject * parent);
+    virtual ~IDrawObject();
+
+    virtual void saveConfig(QSettings& cfg);
+
+    virtual void loadConfig(QSettings& cfg);
+
+    /**
+       @brief Read opacity value
+       @return Return the opacity in a range of 0..100(full opacity)
+     */
+    int getOpacity()
+    {
+        return opacity;
+    }
+
+    /**
+       @brief Read the minimum scale factor the object should be displayed
+       @return A factor or NOFLOAT if no minimum has been set
+     */
+    qreal getMinScale()
+    {
+        return minScale;
+    }
+    /**
+       @brief Read the maximum scale factor the object should be displayed
+       @return A factor or NOFLOAT if no maximum has been set
+     */
+    qreal getMaxScale()
+    {
+        return maxScale;
+    }
+    /**
+       @brief Write the minimum scale the object should be displayed at.
+       @param s A factor or NOFLOAT if no minimum should be set
+     */
+    void setMinScale(qreal s);
+    /**
+       @brief Write the maximum scale the object should be displayed at.
+       @param s A factor or NOFLOAT if no maximum should be set
+     */
+    void setMaxScale(qreal s);
+
+    bool getShowPolygons()
+    {
+        return showPolygons;
+    }
+
+    bool getShowPolylines()
+    {
+        return showPolylines;
+    }
+
+    bool getShowPOIs()
+    {
+        return showPOIs;
+    }
+
+    const QString& getCachePath()
+    {
+        return cachePath;
+    }
+
+    qint32 getCacheSize()
+    {
+        return cacheSizeMB;
+    }
+
+    qint32 getCacheExpiration()
+    {
+        return cacheExpiration;
+    }
+
+    /**
+       @brief Get QListWidgetItems to enable/disable map layers.
+
+       As this property is a bit more complex the idea is to reimplement the method
+       if the map type has layers. The implementation probably will clear the list
+       and insert a checkable list widget item into the list. Additionally it will
+       connect to the QListWidget's signals to be noticed by a change.
+
+       Different to other properties, that will get queried when ever the property
+       widget think it needs an update, getLayers() will only be called once uppon
+       property widget creation.
+
+       The default implementation will simply clear the list.
+
+       @param list
+     */
+    virtual void getLayers(QListWidget& list);
+
+public slots:
+    /**
+       @brief Write opacity value
+       @param value must be in the range of 0..100(full opacity)
+     */
+    void slotSetOpacity(int value)
+    {
+        opacity = value;
+    }
+
+    void slotSetShowPolygons(bool yes)
+    {
+        showPolygons = yes;
+    }
+    void slotSetShowPolylines(bool yes)
+    {
+        showPolylines = yes;
+    }
+    void slotSetShowPOIs(bool yes)
+    {
+        showPOIs = yes;
+    }
+
+    void slotSetCachePath(const QString& path)
+    {
+        cachePath = path; configureCache();
+    }
+    void slotSetCacheSize(qint32 size)
+    {
+        cacheSizeMB = size; configureCache();
+    }
+    void slotSetCacheExpiration(qint32 days)
+    {
+        cacheExpiration = days; configureCache();
+    }
+
+signals:
+    /**
+       @brief Emitted every time a property of the object is changed
+     */
+    void sigPropertiesChanged();
+
+protected:
+    /**
+       @brief Test if the given scale is out of the min/max scale
+       @param scale A scale factor for x and y axis
+       @return True if x scale is out of the min/max range
+     */
+    bool isOutOfScale(const QPointF& scale);
+
+    /**
+       @brief Setup a map cache using cachePath, cacheSizeMB and cacheExpiration
+
+       The default implementation does noting. Streaming maps will probably override
+       it to reconfigure their cache. The method is called when ever a cache property is
+       changed.
+     */
+    virtual void configureCache()
+    {
+    }
+
+private:
+    /// the opacity level of a map
+    qreal opacity;
+    /// the minimum scale a map is visible
+    qreal minScale;
+    /// the maximum scale a map is visible
+    qreal maxScale;
+    /// vector maps only: hide/show polygons
+    bool showPolygons;
+    /// vector maps only: hide/show polylines
+    bool showPolylines;
+    /// vector maps only: hide/show point of interest
+    bool showPOIs;
+
+    /// streaming map only: path to cached tiles
+    QString cachePath;
+    /// streaming map only: maximum size of all tiles in cache [MByte]
+    qint32 cacheSizeMB;
+    /// streaming map only: maximum age of tiles in cache [days]
+    qint32 cacheExpiration;
 };
 
 #endif //IDRAWOBJECT_H
diff --git a/src/dem/CDemDraw.cpp b/src/dem/CDemDraw.cpp
index 66e1b77..e89c40f 100644
--- a/src/dem/CDemDraw.cpp
+++ b/src/dem/CDemDraw.cpp
@@ -16,15 +16,15 @@
 
 **********************************************************************************************/
 
-#include "canvas/CCanvas.h"
 #include "CMainWindow.h"
-#include "dem/IDem.h"
+#include "canvas/CCanvas.h"
 #include "dem/CDemDraw.h"
-#include "dem/CDemList.h"
 #include "dem/CDemItem.h"
+#include "dem/CDemList.h"
 #include "dem/CDemPathSetup.h"
-#include "units/IUnit.h"
+#include "dem/IDem.h"
 #include "helpers/CSettings.h"
+#include "units/IUnit.h"
 
 #include <QtWidgets>
 
@@ -37,7 +37,6 @@ QStringList CDemDraw::supportedFormats = QString("*.vrt").split('|');
 CDemDraw::CDemDraw(CCanvas *canvas)
     : IDrawContext("dem", CCanvas::eRedrawDem, canvas)
 {
-
     demList = new CDemList(canvas);
     CMainWindow::self().addDemList(demList, canvas->objectName());
     connect(canvas, SIGNAL(destroyed()), demList, SLOT(deleteLater()));
@@ -103,7 +102,6 @@ void CDemDraw::saveConfig(QSettings& cfg)
     saveActiveMapsList(keys, cfg);
     cfg.setValue("active", keys);
     cfg.endGroup();
-
 }
 
 void CDemDraw::loadConfig(QSettings& cfg)
@@ -123,11 +121,11 @@ void CDemDraw::buildMapList()
     QMutexLocker lock(&CDemItem::mutexActiveDems);
     demList->clear();
 
-    foreach(const QString& path, demPaths)
+    foreach(const QString &path, demPaths)
     {
         QDir dir(path);
         // find available maps
-        foreach(const QString& filename, dir.entryList(supportedFormats, QDir::Files|QDir::Readable, QDir::Name))
+        foreach(const QString &filename, dir.entryList(supportedFormats, QDir::Files|QDir::Readable, QDir::Name))
         {
             QFileInfo fi(filename);
 
@@ -189,7 +187,7 @@ void CDemDraw::restoreActiveMapsList(const QStringList& keys)
 {
     QMutexLocker lock(&CDemItem::mutexActiveDems);
 
-    foreach(const QString& key, keys)
+    foreach(const QString &key, keys)
     {
         for(int i = 0; i < demList->count(); i++)
         {
@@ -200,7 +198,7 @@ void CDemDraw::restoreActiveMapsList(const QStringList& keys)
                 /**
                     @Note   the item will load it's configuration uppon successful activation
                             by calling loadConfigForDemItem().
-                */
+                 */
                 item->activate();
                 break;
             }
@@ -235,7 +233,6 @@ qreal CDemDraw::getElevationAt(const QPointF& pos)
                 {
                     break;
                 }
-
             }
         }
         CDemItem::mutexActiveDems.unlock();
@@ -270,9 +267,7 @@ void CDemDraw::drawt(buffer_t& currentBuffer)
             }
 
             item->demfile->draw(currentBuffer);
-
         }
     }
     CDemItem::mutexActiveDems.unlock();
-
 }
diff --git a/src/dem/CDemDraw.h b/src/dem/CDemDraw.h
index ab60775..3bda64a 100644
--- a/src/dem/CDemDraw.h
+++ b/src/dem/CDemDraw.h
@@ -29,67 +29,68 @@ class CDemItem;
 
 class CDemDraw : public IDrawContext
 {
-    public:
-        CDemDraw(CCanvas * canvas);
-        virtual ~CDemDraw();
+public:
+    CDemDraw(CCanvas * canvas);
+    virtual ~CDemDraw();
 
-        void saveConfig(QSettings& cfg);
-        void loadConfig(QSettings& cfg);
-        /**
-           @brief This is called most likely from the item itself to call it's loadConfig() method.
+    void saveConfig(QSettings& cfg);
+    void loadConfig(QSettings& cfg);
+    /**
+       @brief This is called most likely from the item itself to call it's loadConfig() method.
 
-           As the setup of a map is stored in the context of the workspace the correct groups have
-           to be set prior to call the item's loadConfig() method. However the item does not know
-           all that stuff. That is why it has to ask it's CMapDraw object to prepare the QSettings object
-           and to call loadConfig();
+       As the setup of a map is stored in the context of the view the correct groups have
+       to be set prior to call the item's loadConfig() method. However the item does not know
+       all that stuff. That is why it has to ask it's CMapDraw object to prepare the QSettings object
+       and to call loadConfig();
 
-           @param item the item to call it's loadConfig() method
-        */
-        void loadConfigForDemItem(CDemItem * item);
+       @param item the item to call it's loadConfig() method
+     */
+    void loadConfigForDemItem(CDemItem * item);
 
-        qreal getElevationAt(const QPointF& pos);
-        void  getElevationAt(const QPolygonF& pos, QPolygonF& ele);
+    qreal getElevationAt(const QPointF& pos);
+    void  getElevationAt(const QPolygonF& pos, QPolygonF& ele);
 
-        void setProjection(const QString& proj);
+    void setProjection(const QString& proj);
 
-        static void setupDemPath();
-        static void saveDemPath(QSettings &cfg);
-        static void loadDemPath(QSettings &cfg);
-        static const QStringList& getSupportedFormats(){return supportedFormats;}
+    static void setupDemPath();
+    static void saveDemPath(QSettings &cfg);
+    static void loadDemPath(QSettings &cfg);
+    static const QStringList& getSupportedFormats()
+    {
+        return supportedFormats;
+    }
 
-    protected:
-        void drawt(buffer_t& currentBuffer);
+protected:
+    void drawt(buffer_t& currentBuffer);
 
-    private:
-        /**
-           @brief Search in paths found in mapPaths for files with supported extensions and add them to mapList.
+private:
+    /**
+       @brief Search in paths found in mapPaths for files with supported extensions and add them to mapList.
 
-         */
-        void buildMapList();
+     */
+    void buildMapList();
 
-        /**
-           @brief Save list of active maps to configuration file
-         */
-        void saveActiveMapsList(QStringList &keys, QSettings &cfg);
-        void saveActiveMapsList(QStringList &keys);
-        /**
-           @brief Restore list of active maps from configuration file
-         */
-        void restoreActiveMapsList(const QStringList &keys);
+    /**
+       @brief Save list of active maps to configuration file
+     */
+    void saveActiveMapsList(QStringList &keys, QSettings &cfg);
+    void saveActiveMapsList(QStringList &keys);
+    /**
+       @brief Restore list of active maps from configuration file
+     */
+    void restoreActiveMapsList(const QStringList &keys);
 
-        CDemList * demList;
+    CDemList * demList;
 
-        /// the group label used in QSettings
-        QString cfgGroup;
+    /// the group label used in QSettings
+    QString cfgGroup;
 
-        static QStringList demPaths;
-
-        static QList<CDemDraw*> dems;
-
-        /// a list of supported map formats
-        static QStringList supportedFormats;
+    static QStringList demPaths;
 
+    static QList<CDemDraw*> dems;
 
+    /// a list of supported map formats
+    static QStringList supportedFormats;
 };
 
 #endif //CDEMDRAW_H
diff --git a/src/dem/CDemItem.cpp b/src/dem/CDemItem.cpp
index 5230192..7a3abf2 100644
--- a/src/dem/CDemItem.cpp
+++ b/src/dem/CDemItem.cpp
@@ -16,9 +16,9 @@
 
 **********************************************************************************************/
 
+#include "dem/CDemDraw.h"
 #include "dem/CDemItem.h"
 #include "dem/CDemVRT.h"
-#include "dem/CDemDraw.h"
 #include "dem/IDemProp.h"
 
 #include <QtWidgets>
@@ -34,7 +34,6 @@ CDemItem::CDemItem(QTreeWidget * parent, CDemDraw *dem)
 
 CDemItem::~CDemItem()
 {
-
 }
 
 void CDemItem::saveConfig(QSettings& cfg)
@@ -47,7 +46,6 @@ void CDemItem::saveConfig(QSettings& cfg)
     cfg.beginGroup(key);
     demfile->saveConfig(cfg);
     cfg.endGroup();
-
 }
 
 void CDemItem::loadConfig(QSettings& cfg)
@@ -60,7 +58,6 @@ void CDemItem::loadConfig(QSettings& cfg)
     cfg.beginGroup(key);
     demfile->loadConfig(cfg);
     cfg.endGroup();
-
 }
 
 void CDemItem::showChildren(bool yes)
@@ -177,7 +174,7 @@ bool CDemItem::activate()
        the correct group context in the QSetting object.
        This call will result into a call of loadConfig() of this CMapItem
        object.
-    */
+     */
     dem->loadConfigForDemItem(this);
 
     // Add the demfile setup dialog as child of this item
@@ -199,7 +196,6 @@ void CDemItem::moveToTop()
 
 void CDemItem::moveToBottom()
 {
-
     int row;
     QTreeWidget * w = treeWidget();
     QMutexLocker lock(&mutexActiveDems);
diff --git a/src/dem/CDemItem.h b/src/dem/CDemItem.h
index 76b6394..50f43c5 100644
--- a/src/dem/CDemItem.h
+++ b/src/dem/CDemItem.h
@@ -19,10 +19,10 @@
 #ifndef CDEMITEM_H
 #define CDEMITEM_H
 
-#include <QTreeWidgetItem>
 #include <QMutex>
 #include <QPointer>
 #include <QString>
+#include <QTreeWidgetItem>
 
 class IDem;
 class CDemDraw;
@@ -30,68 +30,67 @@ class QSettings;
 
 class CDemItem : public QTreeWidgetItem
 {
-    public:
-        CDemItem(QTreeWidget *parent, CDemDraw *dem);
-        virtual ~CDemItem();
-
-        void saveConfig(QSettings& cfg);
-        void loadConfig(QSettings& cfg);
-
-        /**
-           @brief As the drawing thread is using the list widget to iterate of all maps to draw, all access has to be synchronised.
-         */
-        static QMutex mutexActiveDems;
-
-        /**
-           @brief Query if dem objects are loaded
-           @return True if the internal list of dem objects is not empty.
-         */
-        bool isActivated();
-        /**
-           @brief Either loads or destroys internal map objects
-           @return True if the internal list of maps is not empty after the operation.
-         */
-        bool toggleActivate();
-        /**
-         * @brief Load all internal map objects
-         * @return Return true on success.
-         */
-        bool activate();
-        /**
-           @brief Delete all internal map objects
-         */
-        void deactivate();
-        /**
-           @brief Move item to top of list widget
-         */
-        void moveToTop();
-        void moveToBottom();
-
-        void updateIcon();
-
-        /**
-           @brief Show or hide child treewidget items
-           @param yes set true to add children, false will remove all children and delete the attached widgets
-         */
-        void showChildren(bool yes);
-
-
-    private:
-        friend class CDemDraw;
-        CDemDraw * dem;
-        /**
-           @brief A MD5 hash over the first 1024 bytes of the map file, to identify the map
-         */
-        QString         key;
-        /**
-           @brief List of map files forming that particular map
-         */
-        QString     filename;
-        /**
-           @brief List of loaded map objects when map is activated.
-         */
-        QPointer<IDem> demfile;
-
+public:
+    CDemItem(QTreeWidget *parent, CDemDraw *dem);
+    virtual ~CDemItem();
+
+    void saveConfig(QSettings& cfg);
+    void loadConfig(QSettings& cfg);
+
+    /**
+       @brief As the drawing thread is using the list widget to iterate of all maps to draw, all access has to be synchronised.
+     */
+    static QMutex mutexActiveDems;
+
+    /**
+       @brief Query if dem objects are loaded
+       @return True if the internal list of dem objects is not empty.
+     */
+    bool isActivated();
+    /**
+       @brief Either loads or destroys internal map objects
+       @return True if the internal list of maps is not empty after the operation.
+     */
+    bool toggleActivate();
+    /**
+     * @brief Load all internal map objects
+     * @return Return true on success.
+     */
+    bool activate();
+    /**
+       @brief Delete all internal map objects
+     */
+    void deactivate();
+    /**
+       @brief Move item to top of list widget
+     */
+    void moveToTop();
+    void moveToBottom();
+
+    void updateIcon();
+
+    /**
+       @brief Show or hide child treewidget items
+       @param yes set true to add children, false will remove all children and delete the attached widgets
+     */
+    void showChildren(bool yes);
+
+
+private:
+    friend class CDemDraw;
+    CDemDraw * dem;
+    /**
+       @brief A MD5 hash over the first 1024 bytes of the map file, to identify the map
+     */
+    QString key;
+    /**
+       @brief List of map files forming that particular map
+     */
+    QString filename;
+    /**
+       @brief List of loaded map objects when map is activated.
+     */
+    QPointer<IDem> demfile;
 };
 
 #endif //CDEMITEM_H
diff --git a/src/dem/CDemList.cpp b/src/dem/CDemList.cpp
index fe1df4b..d219f22 100644
--- a/src/dem/CDemList.cpp
+++ b/src/dem/CDemList.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "dem/CDemList.h"
 #include "dem/CDemItem.h"
+#include "dem/CDemList.h"
 
 #include <QtWidgets>
 
@@ -71,7 +71,6 @@ CDemList::CDemList(QWidget *parent)
 
 CDemList::~CDemList()
 {
-
 }
 
 void CDemList::clear()
@@ -118,7 +117,10 @@ void CDemList::updateHelpText()
 void CDemList::slotActivate()
 {
     CDemItem * item = dynamic_cast<CDemItem*>(treeWidget->currentItem());
-    if(item == 0) return;
+    if(item == 0)
+    {
+        return;
+    }
 
     bool activated = item->toggleActivate();
     if(!activated)
diff --git a/src/dem/CDemList.h b/src/dem/CDemList.h
index b762b9b..e89b11b 100644
--- a/src/dem/CDemList.h
+++ b/src/dem/CDemList.h
@@ -19,23 +19,25 @@
 #ifndef CDEMLIST_H
 #define CDEMLIST_H
 
-#include <QWidget>
 #include <QTreeWidget>
+#include <QWidget>
 
 class CDemItem;
 
 class CDemTreeWidget : public QTreeWidget
 {
     Q_OBJECT
-    public:
-        CDemTreeWidget(QWidget * parent): QTreeWidget(parent){}
+public:
+    CDemTreeWidget(QWidget * parent) : QTreeWidget(parent)
+    {
+    }
 
-    signals:
-        void sigChanged();
+signals:
+    void sigChanged();
 
-    protected:
-        void dragMoveEvent ( QDragMoveEvent  * event );
-        void dropEvent ( QDropEvent  * event );
+protected:
+    void dragMoveEvent ( QDragMoveEvent  * event );
+    void dropEvent ( QDropEvent  * event );
 };
 
 
@@ -44,26 +46,29 @@ class CDemTreeWidget : public QTreeWidget
 class CDemList : public QWidget, private Ui::IDemsList
 {
     Q_OBJECT
-    public:
-        CDemList(QWidget * parent);
-        virtual ~CDemList();
+public:
+    CDemList(QWidget * parent);
+    virtual ~CDemList();
 
-        void clear();
-        int count();
-        CDemItem * item(int i);
-        operator QTreeWidget*(){return treeWidget;}
+    void clear();
+    int count();
+    CDemItem * item(int i);
+    operator QTreeWidget*()
+    {
+        return treeWidget;
+    }
 
-        void updateHelpText();
+    void updateHelpText();
 
-    signals:
-        void sigChanged();
+signals:
+    void sigChanged();
 
-    private slots:
-        void slotActivate();
-        void slotContextMenu(const QPoint &point);
+private slots:
+    void slotActivate();
+    void slotContextMenu(const QPoint &point);
 
-    private:
-        QMenu * menu;
+private:
+    QMenu * menu;
 };
 
 #endif //CDEMLIST_H
diff --git a/src/dem/CDemPathSetup.cpp b/src/dem/CDemPathSetup.cpp
index 50cca63..8ecaa82 100644
--- a/src/dem/CDemPathSetup.cpp
+++ b/src/dem/CDemPathSetup.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "dem/CDemPathSetup.h"
 #include "dem/CDemDraw.h"
+#include "dem/CDemPathSetup.h"
 
 #include <QtWidgets>
 
@@ -30,7 +30,7 @@ CDemPathSetup::CDemPathSetup(QStringList &paths)
     connect(toolDelete, SIGNAL(clicked()), this, SLOT(slotDelPath()));
     connect(listWidget, SIGNAL(itemSelectionChanged()), this, SLOT(slotItemSelectionChanged()));
 
-    foreach(const QString& path, paths)
+    foreach(const QString &path, paths)
     {
         QListWidgetItem * item = new QListWidgetItem(listWidget);
         item->setText(path);
@@ -41,7 +41,6 @@ CDemPathSetup::CDemPathSetup(QStringList &paths)
 
 CDemPathSetup::~CDemPathSetup()
 {
-
 }
 
 void CDemPathSetup::slotItemSelectionChanged()
diff --git a/src/dem/CDemPathSetup.h b/src/dem/CDemPathSetup.h
index a06d048..03c2dd7 100644
--- a/src/dem/CDemPathSetup.h
+++ b/src/dem/CDemPathSetup.h
@@ -19,27 +19,27 @@
 #ifndef CDEMPATHSETUP_H
 #define CDEMPATHSETUP_H
 
-#include <QDialog>
 #include "ui_IDemPathSetup.h"
+#include <QDialog>
 
 class CDemPathSetup : public QDialog, private Ui::IDemPathSetup
 {
     Q_OBJECT
-    public:
-        CDemPathSetup(QStringList& paths);
-        virtual ~CDemPathSetup();
+public:
+    CDemPathSetup(QStringList& paths);
+    virtual ~CDemPathSetup();
 
-    public slots:
-        void accept();
+public slots:
+    void accept();
 
-    private slots:
-        void slotAddPath();
-        void slotDelPath();
-        void slotItemSelectionChanged();
+private slots:
+    void slotAddPath();
+    void slotDelPath();
+    void slotItemSelectionChanged();
 
 
-    private:
-        QStringList& paths;
+private:
+    QStringList& paths;
 };
 
 #endif //CDEMPATHSETUP_H
diff --git a/src/dem/CDemPropSetup.cpp b/src/dem/CDemPropSetup.cpp
index a55a25f..da56cc1 100644
--- a/src/dem/CDemPropSetup.cpp
+++ b/src/dem/CDemPropSetup.cpp
@@ -16,9 +16,9 @@
 
 **********************************************************************************************/
 
+#include "dem/CDemDraw.h"
 #include "dem/CDemPropSetup.h"
 #include "dem/IDem.h"
-#include "dem/CDemDraw.h"
 #include "units/IUnit.h"
 
 #include <QtWidgets>
@@ -60,12 +60,10 @@ CDemPropSetup::CDemPropSetup(IDem * demfile, CDemDraw *dem)
     labelColor2->setPixmap(pixmap);
     pixmap.fill(colortable[1]);
     labelColor1->setPixmap(pixmap);
-
 }
 
 CDemPropSetup::~CDemPropSetup()
 {
-
 }
 
 void CDemPropSetup::resizeEvent(QResizeEvent * e)
@@ -106,7 +104,6 @@ void CDemPropSetup::slotPropertiesChanged()
     sliderHillshading->blockSignals(false);
     checkSlopeColor->blockSignals(false);
     sliderSlopeColor->blockSignals(false);
-
 }
 
 void CDemPropSetup::slotScaleChanged(const QPointF& s)
@@ -167,7 +164,6 @@ void CDemPropSetup::updateScaleLabel()
         p.setPen(Qt::NoPen);
         p.setBrush(Qt::darkGreen);
         p.drawRect(range);
-
     }
 
     // draw scale indicator
@@ -193,5 +189,4 @@ void CDemPropSetup::slotSetGradeSlopeColor(int val)
     labelValue3->setText(QString("> %1%2").arg(g[3]).arg(QChar(0260)));
     labelValue4->setText(QString("> %1%2").arg(g[4]).arg(QChar(0260)));
     labelValue5->setText(QString("> %1%2").arg(g[5]).arg(QChar(0260)));
-
 }
diff --git a/src/dem/CDemPropSetup.h b/src/dem/CDemPropSetup.h
index 761d888..a18f4b1 100644
--- a/src/dem/CDemPropSetup.h
+++ b/src/dem/CDemPropSetup.h
@@ -26,27 +26,26 @@
 class CDemPropSetup : public IDemProp, private Ui::IDemPropSetup
 {
     Q_OBJECT
-    public:
-        CDemPropSetup(IDem *demfile, CDemDraw *dem);
-        virtual ~CDemPropSetup();
+public:
+    CDemPropSetup(IDem *demfile, CDemDraw *dem);
+    virtual ~CDemPropSetup();
 
-    protected slots:
-        void slotPropertiesChanged();
+protected slots:
+    void slotPropertiesChanged();
 
-    protected:
-        void resizeEvent(QResizeEvent * e);
+protected:
+    void resizeEvent(QResizeEvent * e);
 
-    private slots:
-        void slotScaleChanged(const QPointF& s);
-        void slotSetMinScale(bool checked);
-        void slotSetMaxScale(bool checked);
-        void slotSetGradeSlopeColor(int val);
+private slots:
+    void slotScaleChanged(const QPointF& s);
+    void slotSetMinScale(bool checked);
+    void slotSetMaxScale(bool checked);
+    void slotSetGradeSlopeColor(int val);
 
-    private:
-        void updateScaleLabel();
-
-        static QPointF scale;
+private:
+    void updateScaleLabel();
 
+    static QPointF scale;
 };
 
 #endif //CDEMPROPSETUP_H
diff --git a/src/dem/CDemVRT.cpp b/src/dem/CDemVRT.cpp
index e4dec23..0e32a47 100644
--- a/src/dem/CDemVRT.cpp
+++ b/src/dem/CDemVRT.cpp
@@ -16,15 +16,15 @@
 
 **********************************************************************************************/
 
-#include "dem/CDemVRT.h"
-#include "dem/CDemDraw.h"
-#include "units/IUnit.h"
 #include "GeoMath.h"
 #include "canvas/CCanvas.h"
+#include "dem/CDemDraw.h"
+#include "dem/CDemVRT.h"
+#include "units/IUnit.h"
 
+#include <QtWidgets>
 #include <gdal_priv.h>
 #include <ogr_spatialref.h>
-#include <QtWidgets>
 
 #define TILELIMIT 30000
 #define TILESIZEX 64
@@ -107,7 +107,6 @@ CDemVRT::CDemVRT(const QString &filename, CDemDraw *parent)
 
     if(pj_is_latlong(pjsrc))
     {
-
         xscale *= 111120;
         yscale *= 111120;
         // convert to RAD to match internal notations
@@ -137,7 +136,10 @@ CDemVRT::~CDemVRT()
 
 qreal CDemVRT::getElevationAt(const QPointF& pos)
 {
-    if(pjsrc == 0) return NOFLOAT;
+    if(pjsrc == 0)
+    {
+        return NOFLOAT;
+    }
 
     qint16 e[4];
     QPointF pt = pos;
@@ -219,17 +221,41 @@ void CDemVRT::draw(IDrawContext::buffer_t& buf)
     top      = qRound(pt1.y() < pt2.y() ? pt1.y() : pt2.y());
     bottom   = qRound(pt4.y() > pt3.y() ? pt4.y() : pt3.y());
 
-    if(left <= 0) left = 1;
-    if(left >= xsize_px) left = xsize_px - 1;
+    if(left <= 0)
+    {
+        left = 1;
+    }
+    if(left >= xsize_px)
+    {
+        left = xsize_px - 1;
+    }
 
-    if(top <= 0) top  = 1;
-    if(top >= ysize_px) top = ysize_px - 1;
+    if(top <= 0)
+    {
+        top  = 1;
+    }
+    if(top >= ysize_px)
+    {
+        top = ysize_px - 1;
+    }
 
-    if(right >= xsize_px) right = xsize_px - 1;
-    if(right <= 0) right = 1;
+    if(right >= xsize_px)
+    {
+        right = xsize_px - 1;
+    }
+    if(right <= 0)
+    {
+        right = 1;
+    }
 
-    if(bottom >= ysize_px) bottom = ysize_px - 1;
-    if(bottom <= 0) bottom = 1;
+    if(bottom >= ysize_px)
+    {
+        bottom = ysize_px - 1;
+    }
+    if(bottom <= 0)
+    {
+        bottom = 1;
+    }
 
     qreal imgw = TILESIZEX;
     qreal imgh = TILESIZEY;
@@ -239,13 +265,13 @@ void CDemVRT::draw(IDrawContext::buffer_t& buf)
     /*
         As the 3x3 window will create a border of one pixel
         more data is read than displayed to compensate.
-    */
+     */
     int wp2 = w + 2;
     int hp2 = h + 2;
 
     // start to draw the map
     QPainter p(&buf.image);
-    USE_ANTI_ALIASING(p,true);    
+    USE_ANTI_ALIASING(p,true);
     p.translate(-pp);
 
     qreal o1 = getOpacity()/100.0;
diff --git a/src/dem/CDemVRT.h b/src/dem/CDemVRT.h
index 019d715..9b85c22 100644
--- a/src/dem/CDemVRT.h
+++ b/src/dem/CDemVRT.h
@@ -29,34 +29,33 @@ class GDALDataset;
 class CDemVRT : public IDem
 {
     Q_OBJECT
-    public:
-        CDemVRT(const QString& filename, CDemDraw *parent);
-        virtual ~CDemVRT();
+public:
+    CDemVRT(const QString& filename, CDemDraw *parent);
+    virtual ~CDemVRT();
 
-        void draw(IDrawContext::buffer_t& buf);
+    void draw(IDrawContext::buffer_t& buf);
 
-        qreal getElevationAt(const QPointF& pos);
+    qreal getElevationAt(const QPointF& pos);
 
-    private:
-        QMutex mutex;
+private:
+    QMutex mutex;
 
-        QString filename;
-        /// instance of GDAL dataset
-        GDALDataset * dataset;
+    QString filename;
+    /// instance of GDAL dataset
+    GDALDataset * dataset;
 
 
-        QPointF ref1;
-        QPointF ref2;
-        QPointF ref3;
-        QPointF ref4;
+    QPointF ref1;
+    QPointF ref2;
+    QPointF ref3;
+    QPointF ref4;
 
-        QTransform trFwd;
-        QTransform trInv;
+    QTransform trFwd;
+    QTransform trInv;
 
-        bool hasOverviews;
-
-        QRectF boundingBox;
+    bool hasOverviews;
 
+    QRectF boundingBox;
 };
 
 #endif //CDEMVRT_H
diff --git a/src/dem/IDem.cpp b/src/dem/IDem.cpp
index 389ec43..7ce3375 100644
--- a/src/dem/IDem.cpp
+++ b/src/dem/IDem.cpp
@@ -16,9 +16,9 @@
 
 **********************************************************************************************/
 
-#include "dem/IDem.h"
 #include "dem/CDemDraw.h"
 #include "dem/CDemPropSetup.h"
+#include "dem/IDem.h"
 
 #include <QtWidgets>
 
@@ -30,19 +30,19 @@ inline qint16 getValue(QVector<qint16>& data, int x, int y, int dx)
 inline void fillWindow(QVector<qint16>& data, int x, int y, int dx, qint16 * w)
 {
     w[0] = getValue(data, x - 1, y - 1, dx);
-    w[1] = getValue(data, x    , y - 1, dx);
+    w[1] = getValue(data, x, y - 1, dx);
     w[2] = getValue(data, x + 1, y - 1, dx);
-    w[3] = getValue(data, x - 1, y    , dx);
-    w[4] = getValue(data, x    , y    , dx);
-    w[5] = getValue(data, x + 1, y    , dx);
+    w[3] = getValue(data, x - 1, y, dx);
+    w[4] = getValue(data, x, y, dx);
+    w[5] = getValue(data, x + 1, y, dx);
     w[6] = getValue(data, x - 1, y + 1, dx);
-    w[7] = getValue(data, x    , y + 1, dx);
+    w[7] = getValue(data, x, y + 1, dx);
     w[8] = getValue(data, x + 1, y + 1, dx);
 }
 
 const qreal IDem::tblGrade[5][6] =
 {
-     {0,0,0,0,0,0}
+    {0,0,0,0,0,0}
     ,{0.0,27.0,31.0,34.0,39.0,50.0}
     ,{0.0,27.0,30.0,32.0,35.0,39.0}
     ,{0.0,27.0,29.0,30.0,31.0,34.0}
@@ -124,7 +124,7 @@ void IDem::slotSetFactorHillshade(int f)
     }
     else if(f < 0)
     {
-        factorHillshading = - 1.0/f;
+        factorHillshading = -1.0/f;
     }
     else
     {
@@ -146,7 +146,7 @@ int IDem::getFactorHillshading()
     }
     else if(factorHillshading < 1)
     {
-        return - 1.0/factorHillshading;
+        return -1.0/factorHillshading;
     }
     else
     {
@@ -237,7 +237,6 @@ void IDem::slopecolor(QVector<qint16>& data, qreal w, qreal h, QImage &img)
             {
                 img.setPixel(n - 1, m - 1, 0);
             }
-
         }
     }
 }
@@ -265,5 +264,4 @@ void IDem::drawTile(QImage& img, QPolygonF& l, QPainter& p)
     p.rotate(a);
     p.drawImage(0,0,img);
     p.restore();
-
 }
diff --git a/src/dem/IDem.h b/src/dem/IDem.h
index 225eea8..5e5278b 100644
--- a/src/dem/IDem.h
+++ b/src/dem/IDem.h
@@ -33,118 +33,137 @@ class QSettings;
 class IDem : public IDrawObject
 {
     Q_OBJECT
-    public:
-        IDem(CDemDraw * parent);
-        virtual ~IDem();
+public:
+    IDem(CDemDraw * parent);
+    virtual ~IDem();
 
-        void saveConfig(QSettings& cfg);
+    void saveConfig(QSettings& cfg);
 
-        void loadConfig(QSettings& cfg);
+    void loadConfig(QSettings& cfg);
 
-        virtual void draw(IDrawContext::buffer_t& buf) = 0;
+    virtual void draw(IDrawContext::buffer_t& buf) = 0;
 
-        virtual qreal getElevationAt(const QPointF& pos) = 0;
+    virtual qreal getElevationAt(const QPointF& pos) = 0;
 
-        bool activated(){return isActivated;}
+    bool activated()
+    {
+        return isActivated;
+    }
 
-        /**
-           @brief Get the dem's setup widget.
+    /**
+       @brief Get the dem's setup widget.
 
-           As default an instance of CDemPropSetup is used. For other setups you have
-           to override this method.
+       As default an instance of CDemPropSetup is used. For other setups you have
+       to override this method.
 
-           @return A pointer to the widget. Use a smart pointer to store as the widget can be destroyed at any time
-         */
-        virtual IDemProp * getSetup();
+       @return A pointer to the widget. Use a smart pointer to store as the widget can be destroyed at any time
+     */
+    virtual IDemProp * getSetup();
 
-        bool doHillshading(){return bHillshading;}
+    bool doHillshading()
+    {
+        return bHillshading;
+    }
 
-        int getFactorHillshading();
+    int getFactorHillshading();
 
-        bool doSlopeColor(){return bSlopeColor;}
+    bool doSlopeColor()
+    {
+        return bSlopeColor;
+    }
 
-        int getGradeSlopeColor(){return gradeSlopeColor;}
+    int getGradeSlopeColor()
+    {
+        return gradeSlopeColor;
+    }
 
 
-        const QVector<QRgb> getSlopeColorTable(){return slopetable;}
+    const QVector<QRgb> getSlopeColorTable()
+    {
+        return slopetable;
+    }
 
-        static const qreal tblGrade[5][6];
+    static const qreal tblGrade[5][6];
 
-    public slots:
-        void slotSetHillshading(bool yes){bHillshading = yes;}
+public slots:
+    void slotSetHillshading(bool yes)
+    {
+        bHillshading = yes;
+    }
 
-        void slotSetFactorHillshade(int f);
+    void slotSetFactorHillshade(int f);
 
-        void slotSetSlopeColor(bool yes){bSlopeColor = yes;}
+    void slotSetSlopeColor(bool yes)
+    {
+        bSlopeColor = yes;
+    }
 
-        void slotSetGradeSlopeColor(int g);
+    void slotSetGradeSlopeColor(int g);
 
-    protected:
+protected:
 
-        void hillshading(QVector<qint16>& data, qreal w, qreal h, QImage &img);
+    void hillshading(QVector<qint16>& data, qreal w, qreal h, QImage &img);
 
-        void slopecolor(QVector<qint16>& data, qreal w, qreal h, QImage &img);
+    void slopecolor(QVector<qint16>& data, qreal w, qreal h, QImage &img);
 
-        /**
-           @brief Reproject (translate, rotate, scale) tile befor drwaing it.
-           @param img   the tile as QImage
-           @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);
+    /**
+       @brief Reproject (translate, rotate, scale) tile befor drwaing it.
+       @param img   the tile as QImage
+       @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);
 
-        CDemDraw * dem;
+    CDemDraw * dem;
 
-        /// source projection of the current map file
-        /**
-            Has to be set by subclass. Destruction has to be
-            handeled by subclass.
-        */
-        projPJ  pjsrc;
-        /// target projection
-        /**
-            Is set by IMap() to WGS84. Will be freed by ~IMap()
-        */
-        projPJ  pjtar;
+    /// source projection of the current map file
+    /**
+        Has to be set by subclass. Destruction has to be
+        handeled by subclass.
+     */
+    projPJ pjsrc;
+    /// target projection
+    /**
+        Is set by IMap() to WGS84. Will be freed by ~IMap()
+     */
+    projPJ pjtar;
 
-        /// width in number of px
-        quint32 xsize_px;
-        /// height in number of px
-        quint32 ysize_px;
+    /// width in number of px
+    quint32 xsize_px;
+    /// height in number of px
+    quint32 ysize_px;
 
-        /// scale [px/m]
-        qreal xscale;
-        /// scale [px/m]
-        qreal yscale;
+    /// scale [px/m]
+    qreal xscale;
+    /// scale [px/m]
+    qreal yscale;
 
 
 
-        /**
-           @brief True if map was loaded successfully
-         */
-        bool isActivated;
+    /**
+       @brief True if map was loaded successfully
+     */
+    bool isActivated;
 
-        /// the setup dialog. Use getSetup() for access
-        QPointer<IDemProp> setup;
+    /// the setup dialog. Use getSetup() for access
+    QPointer<IDemProp> setup;
 
-        QVector<QRgb> graytable;
+    QVector<QRgb> graytable;
 
-        QVector<QRgb> slopetable;
+    QVector<QRgb> slopetable;
 
-        int hasNoData;
+    int hasNoData;
 
-        double noData;        
+    double noData;
 
-    private:
-        bool bHillshading;        
+private:
+    bool bHillshading;
 
-        qreal factorHillshading;
-
-        bool bSlopeColor;
-
-        int gradeSlopeColor;
+    qreal factorHillshading;
 
+    bool bSlopeColor;
 
+    int gradeSlopeColor;
 };
 
 #endif //IDEM_H
diff --git a/src/dem/IDemProp.cpp b/src/dem/IDemProp.cpp
index fdcf078..ae87eeb 100644
--- a/src/dem/IDemProp.cpp
+++ b/src/dem/IDemProp.cpp
@@ -16,9 +16,9 @@
 
 **********************************************************************************************/
 
-#include "dem/IDemProp.h"
 #include "dem/CDemDraw.h"
 #include "dem/IDem.h"
+#include "dem/IDemProp.h"
 
 IDemProp::IDemProp(IDem *demfile, CDemDraw *dem)
     : demfile(demfile)
@@ -29,6 +29,5 @@ IDemProp::IDemProp(IDem *demfile, CDemDraw *dem)
 
 IDemProp::~IDemProp()
 {
-
 }
 
diff --git a/src/dem/IDemProp.h b/src/dem/IDemProp.h
index 4af3175..b4b1e3f 100644
--- a/src/dem/IDemProp.h
+++ b/src/dem/IDemProp.h
@@ -27,17 +27,16 @@ class CDemDraw;
 class IDemProp : public QWidget
 {
     Q_OBJECT
-    public:
-        IDemProp(IDem *demfile, CDemDraw *dem);
-        virtual ~IDemProp();
+public:
+    IDemProp(IDem *demfile, CDemDraw *dem);
+    virtual ~IDemProp();
 
-    protected slots:
-        virtual void slotPropertiesChanged()= 0;
-
-    protected:
-        IDem * demfile;
-        CDemDraw * dem;
+protected slots:
+    virtual void slotPropertiesChanged()= 0;
 
+protected:
+    IDem * demfile;
+    CDemDraw * dem;
 };
 
 #endif //IDEMPROP_H
diff --git a/src/gis/CGisDraw.cpp b/src/gis/CGisDraw.cpp
index 311dfd9..8f6a620 100644
--- a/src/gis/CGisDraw.cpp
+++ b/src/gis/CGisDraw.cpp
@@ -16,9 +16,9 @@
 
 **********************************************************************************************/
 
+#include "canvas/CCanvas.h"
 #include "gis/CGisDraw.h"
 #include "gis/CGisWidget.h"
-#include "canvas/CCanvas.h"
 
 #include <QtWidgets>
 
@@ -30,7 +30,6 @@ CGisDraw::CGisDraw(CCanvas *parent)
 
 CGisDraw::~CGisDraw()
 {
-
 }
 
 void CGisDraw::draw(QPainter& p, const QRect& rect)
@@ -40,7 +39,6 @@ void CGisDraw::draw(QPainter& p, const QRect& rect)
 
 void CGisDraw::drawt(buffer_t& currentBuffer)
 {
-
     QPointF pt1 = currentBuffer.ref1;
     QPointF pt2 = currentBuffer.ref2;
     QPointF pt3 = currentBuffer.ref3;
@@ -66,5 +64,4 @@ void CGisDraw::drawt(buffer_t& currentBuffer)
     p.translate(-pp);
 
     CGisWidget::self().draw(p,viewport, this);
-
 }
diff --git a/src/gis/CGisDraw.h b/src/gis/CGisDraw.h
index cb493db..9e9589e 100644
--- a/src/gis/CGisDraw.h
+++ b/src/gis/CGisDraw.h
@@ -25,15 +25,15 @@ class CCanvas;
 
 class CGisDraw : public IDrawContext
 {
-    public:
-        CGisDraw(CCanvas *parent);
-        virtual ~CGisDraw();
+public:
+    CGisDraw(CCanvas *parent);
+    virtual ~CGisDraw();
 
-        using IDrawContext::draw;
-        void draw(QPainter& p, const QRect& rect);
+    using IDrawContext::draw;
+    void draw(QPainter& p, const QRect& rect);
 
-    protected:
-        void drawt(buffer_t& currentBuffer);
+protected:
+    void drawt(buffer_t& currentBuffer);
 };
 
 #endif //CGISDRAW_H
diff --git a/src/gis/CGisListDB.cpp b/src/gis/CGisListDB.cpp
index 6fb20d2..2a369a3 100644
--- a/src/gis/CGisListDB.cpp
+++ b/src/gis/CGisListDB.cpp
@@ -16,50 +16,49 @@
 
 **********************************************************************************************/
 
+#include "config.h"
 #include "gis/CGisListDB.h"
 #include "gis/CGisWidget.h"
-#include "gis/db/macros.h"
 #include "gis/db/CDBFolderDatabase.h"
 #include "gis/db/CDBFolderLostFound.h"
 #include "gis/db/CDBItem.h"
-#include "gis/db/CSetupFolder.h"
 #include "gis/db/CSetupDatabase.h"
+#include "gis/db/CSetupFolder.h"
+#include "gis/db/macros.h"
 #include "helpers/CSettings.h"
-#include "config.h"
 
 #include <QtSql>
 #include <QtWidgets>
 
 class CGisListDBEditLock
 {
-    public:
-        CGisListDBEditLock(bool waitCursor, CGisListDB * widget) : widget(widget), waitCursor(waitCursor)
+public:
+    CGisListDBEditLock(bool waitCursor, CGisListDB * widget) : widget(widget), waitCursor(waitCursor)
+    {
+        if(waitCursor)
         {
-            if(waitCursor)
-            {
-                QApplication::setOverrideCursor(Qt::WaitCursor);
-            }
-            widget->isInternalEdit += 1;
+            QApplication::setOverrideCursor(Qt::WaitCursor);
         }
-        ~CGisListDBEditLock()
+        widget->isInternalEdit += 1;
+    }
+    ~CGisListDBEditLock()
+    {
+        if(waitCursor)
         {
-            if(waitCursor)
-            {
-                QApplication::restoreOverrideCursor();
-            }
-            widget->isInternalEdit -= 1;
+            QApplication::restoreOverrideCursor();
         }
-    private:
-        CGisListDB * widget;
-        bool waitCursor;
+        widget->isInternalEdit -= 1;
+    }
+private:
+    CGisListDB * widget;
+    bool waitCursor;
 };
 
 
 CGisListDB::CGisListDB(QWidget *parent)
     : QTreeWidget(parent)
     , isInternalEdit(0)
-{   
-
+{
     SETTINGS;
     QStringList names = cfg.value("Database/names").toStringList();
     QStringList files = cfg.value("Database/files").toStringList();
@@ -115,7 +114,6 @@ CGisListDB::~CGisListDB()
 
     cfg.setValue("Database/names", names);
     cfg.setValue("Database/files", files);
-
 }
 
 
@@ -230,7 +228,7 @@ void CGisListDB::slotAddDatabase()
     CSetupDatabase dlg(name, filename, *this);
     if(dlg.exec() != QDialog::Accepted)
     {
-        return ;
+        return;
     }
 
     addDatabase(name, filename);
@@ -240,7 +238,6 @@ void CGisListDB::slotAddDatabase()
 void CGisListDB::addDatabase(const QString& name, const QString& filename)
 {
     new CDBFolderDatabase(filename, name, this);
-
 }
 
 void CGisListDB::slotDelDatabase()
@@ -345,7 +342,6 @@ void CGisListDB::slotDelLostFoundItem()
     QList<QTreeWidgetItem*> items = selectedItems();
     foreach(QTreeWidgetItem * item, items)
     {
-
         CDBItem * dbItem            = dynamic_cast<CDBItem*>(item);
         CDBFolderLostFound * folder = dynamic_cast<CDBFolderLostFound*>(dbItem->parent());
 
@@ -353,8 +349,8 @@ void CGisListDB::slotDelLostFoundItem()
         {
             if(folder->delItem(dbItem))
             {
-                delItems    << dbItem;
-                folders     << folder;
+                delItems << dbItem;
+                folders << folder;
             }
         }
     }
@@ -369,7 +365,7 @@ void CGisListDB::slotDelLostFoundItem()
 
 
 void CGisListDB::slotItemExpanded(QTreeWidgetItem * item)
-{   
+{
     CGisListDBEditLock lock(true, this);
 
     IDBFolder * folder = dynamic_cast<IDBFolder*>(item);
@@ -429,7 +425,6 @@ void CGisListDB::slotDelItem()
     {
         dbFolder->updateLostFound();
     }
-
 }
 
 void CGisListDB::slotItemChanged(QTreeWidgetItem * item, int column)
diff --git a/src/gis/CGisListDB.h b/src/gis/CGisListDB.h
index f6f8227..870f381 100644
--- a/src/gis/CGisListDB.h
+++ b/src/gis/CGisListDB.h
@@ -19,8 +19,8 @@
 #ifndef CGISLISTDB_H
 #define CGISLISTDB_H
 
-#include <QTreeWidget>
 #include <QSqlDatabase>
+#include <QTreeWidget>
 
 #include <gis/db/IDBFolder.h>
 
@@ -31,60 +31,60 @@ class CDBFolderDatabase;
 class CGisListDB : public QTreeWidget
 {
     Q_OBJECT
-    public:
-        CGisListDB(QWidget * parent);
-        virtual ~CGisListDB();
+public:
+    CGisListDB(QWidget * parent);
+    virtual ~CGisListDB();
 
-        enum column_e
-        {
-             eColumnCheckbox = 0
-            ,eColumnName = 1
-        };
+    enum column_e
+    {
+        eColumnCheckbox = 0
+        ,eColumnName = 1
+    };
 
-        bool hasDatabase(const QString& name);
-        bool event(QEvent * e);
+    bool hasDatabase(const QString& name);
+    bool event(QEvent * e);
 
-    signals:
-        void sigChanged();
+signals:
+    void sigChanged();
 
-    private slots:
-        void slotContextMenu(const QPoint& point);
-        void slotAddFolder();
-        void slotDelFolder();
-        void slotDelLostFound();
-        void slotDelLostFoundItem();
-        void slotItemExpanded(QTreeWidgetItem * item);
-        void slotItemChanged(QTreeWidgetItem * item, int column);
-        void slotAddDatabase();
-        void slotDelDatabase();
-        void slotDelItem();
+private slots:
+    void slotContextMenu(const QPoint& point);
+    void slotAddFolder();
+    void slotDelFolder();
+    void slotDelLostFound();
+    void slotDelLostFoundItem();
+    void slotItemExpanded(QTreeWidgetItem * item);
+    void slotItemChanged(QTreeWidgetItem * item, int column);
+    void slotAddDatabase();
+    void slotDelDatabase();
+    void slotDelItem();
 
-    private:
-        friend class CGisListDBEditLock;
+private:
+    friend class CGisListDBEditLock;
 
-        CDBFolderDatabase *getDataBase(const QString& name);
-        void addDatabase(const QString& name, const QString& filename);
+    CDBFolderDatabase *getDataBase(const QString& name);
+    void addDatabase(const QString& name, const QString& filename);
 
-        int isInternalEdit;
+    int isInternalEdit;
 
-        QMenu * menuNone;
-        QAction * actionAddDatabase;
+    QMenu * menuNone;
+    QAction * actionAddDatabase;
 
-        QMenu * menuFolder;
-        QAction * actionAddFolder;
-        QAction * actionDelFolder;
+    QMenu * menuFolder;
+    QAction * actionAddFolder;
+    QAction * actionDelFolder;
 
-        QMenu * menuDatabase;
-        QAction * actionDelDatabase;
+    QMenu * menuDatabase;
+    QAction * actionDelDatabase;
 
-        QMenu * menuItem;
-        QAction * actionDelItem;
+    QMenu * menuItem;
+    QAction * actionDelItem;
 
-        QMenu * menuLostFound;
-        QAction * actionDelLostFound;
+    QMenu * menuLostFound;
+    QAction * actionDelLostFound;
 
-        QMenu * menuLostFoundItem;
-        QAction * actionDelLostFoundItem;
+    QMenu * menuLostFoundItem;
+    QAction * actionDelLostFoundItem;
 
 
 //        CDBFolderDatabase *  folderDatabase;
diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
index fb1de05..161b56d 100644
--- a/src/gis/CGisListWks.cpp
+++ b/src/gis/CGisListWks.cpp
@@ -32,8 +32,8 @@
 #include "gis/search/CSearchGoogle.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
-#include "helpers/CSelectProjectDialog.h"
 #include "helpers/CSelectCopyAction.h"
+#include "helpers/CSelectProjectDialog.h"
 #include "helpers/CSettings.h"
 
 #include <QtSql>
@@ -43,27 +43,26 @@
 
 class CGisListWksEditLock
 {
-    public:
-        CGisListWksEditLock(bool waitCursor, QMutex& mutex) : mutex(mutex), waitCursor(waitCursor)
+public:
+    CGisListWksEditLock(bool waitCursor, QMutex& mutex) : mutex(mutex), waitCursor(waitCursor)
+    {
+        if(waitCursor)
         {
-            if(waitCursor)
-            {
-                QApplication::setOverrideCursor(Qt::WaitCursor);
-            }
-            mutex.lock();
+            QApplication::setOverrideCursor(Qt::WaitCursor);
         }
-        ~CGisListWksEditLock()
+        mutex.lock();
+    }
+    ~CGisListWksEditLock()
+    {
+        if(waitCursor)
         {
-            if(waitCursor)
-            {
-                QApplication::restoreOverrideCursor();
-            }
-            mutex.unlock();
+            QApplication::restoreOverrideCursor();
         }
-    private:
-        QMutex& mutex;
-        bool waitCursor;
-
+        mutex.unlock();
+    }
+private:
+    QMutex& mutex;
+    bool waitCursor;
 };
 
 
@@ -79,9 +78,9 @@ CGisListWks::CGisListWks(QWidget *parent)
     configDB();
 
     menuProject     = new QMenu(this);
+    actionEditPrj   = menuProject->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit.."), this, SLOT(slotEditPrj()));
     actionSaveAs    = menuProject->addAction(QIcon("://icons/32x32/SaveGISAs.png"),tr("Save As..."), this, SLOT(slotSaveAsProject()));
     actionSave      = menuProject->addAction(QIcon("://icons/32x32/SaveGIS.png"),tr("Save"), this, SLOT(slotSaveProject()));
-    actionEditPrj   = menuProject->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit.."), this, SLOT(slotEditPrj()));
     actionClose     = menuProject->addAction(QIcon("://icons/32x32/Close.png"),tr("Close"), this, SLOT(slotCloseProject()));
 
     connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
@@ -339,7 +338,6 @@ void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
 
 void CGisListWks::dropEvent ( QDropEvent  * e )
 {
-
     QList<QTreeWidgetItem*> items   = selectedItems();
     if(items.isEmpty())
     {
@@ -364,7 +362,7 @@ void CGisListWks::dropEvent ( QDropEvent  * e )
         5) Test if item under cursor is a project
         6) If project and project is not item's project create a copy
 
-    */
+     */
     if(items.size() == 1)
     {
         // calc. index offset (below/above item)
@@ -510,11 +508,11 @@ bool CGisListWks::hasProject(IGisProject * project)
         {
             if(item != project)
             {
-                return(true);
+                return true;
             }
         }
     }
-    return(false);
+    return false;
 }
 
 IGisProject * CGisListWks::getProjectByKey(const QString& key)
@@ -545,7 +543,6 @@ CDBProject * CGisListWks::getProjectById(quint64 id, const QString& db)
         }
     }
     return 0;
-
 }
 
 void CGisListWks::slotSaveWorkspace()
@@ -686,7 +683,7 @@ void CGisListWks::slotContextMenu(const QPoint& point)
         IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
         if(project != 0)
         {
-            actionEditPrj->setVisible(false);           
+            actionEditPrj->setVisible(false);
             menuProject->exec(p);
             return;
         }
@@ -719,21 +716,24 @@ void CGisListWks::slotContextMenu(const QPoint& point)
             return;
         }
 
-        IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());       
+        IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
         if(gisItem != 0)
-        {          
+        {
             switch(gisItem->type())
             {
             case IGisItem::eTypeTrk:
                 actionFocusTrk->setChecked(gisItem->hasUserFocus());
                 menuItemTrk->exec(p);
                 break;
+
             case IGisItem::eTypeWpt:
                 menuItemWpt->exec(p);
                 break;
+
             case IGisItem::eTypeRte:
                 menuItemRte->exec(p);
                 break;
+
             case IGisItem::eTypeOvl:
                 menuItemOvl->exec(p);
                 break;
@@ -797,7 +797,6 @@ void CGisListWks::slotEditPrj()
     {
         project->edit();
     }
-
 }
 
 void CGisListWks::slotItemDoubleClicked(QTreeWidgetItem * item, int )
@@ -822,7 +821,7 @@ void CGisListWks::slotEditItem()
 }
 
 void CGisListWks::slotDeleteItem()
-{        
+{
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
 
     QList<QTreeWidgetItem*> items       = selectedItems();
@@ -845,7 +844,7 @@ void CGisListWks::slotDeleteItem()
             /*
                 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);
@@ -1049,6 +1048,7 @@ bool CGisListWks::event(QEvent * e)
         emit sigChanged();
         return true;
     }
+
     case eEvtD2WShowFolder:
     {
         CEvtD2WShowFolder * evt = (CEvtD2WShowFolder*)e;
@@ -1072,6 +1072,7 @@ bool CGisListWks::event(QEvent * e)
         emit sigChanged();
         return true;
     }
+
     case eEvtD2WHideFolder:
     {
         CEvtD2WHideFolder * evt = (CEvtD2WHideFolder*)e;
@@ -1082,6 +1083,7 @@ bool CGisListWks::event(QEvent * e)
         emit sigChanged();
         return true;
     }
+
     case eEvtD2WShowItems:
     {
         CEvtD2WShowItems * evt = (CEvtD2WShowItems*)e;
@@ -1094,6 +1096,7 @@ bool CGisListWks::event(QEvent * e)
         emit sigChanged();
         return true;
     }
+
     case eEvtD2WHideItems:
     {
         CEvtD2WHideItems * evt = (CEvtD2WHideItems*)e;
@@ -1106,6 +1109,7 @@ bool CGisListWks::event(QEvent * e)
         emit sigChanged();
         return true;
     }
+
     case eEvtD2WUpdateLnF:
     {
         CEvtD2WUpdateLnF * evt = (CEvtD2WUpdateLnF*)e;
diff --git a/src/gis/CGisListWks.h b/src/gis/CGisListWks.h
index d595a74..9739cd7 100644
--- a/src/gis/CGisListWks.h
+++ b/src/gis/CGisListWks.h
@@ -19,9 +19,9 @@
 #ifndef CGISLISTWKS_H
 #define CGISLISTWKS_H
 
-#include <QTreeWidget>
 #include <QPointer>
 #include <QSqlDatabase>
+#include <QTreeWidget>
 
 struct action_t;
 class QAction;
@@ -32,94 +32,93 @@ class CDBProject;
 class CGisListWks : public QTreeWidget
 {
     Q_OBJECT
-    public:
-        CGisListWks(QWidget * parent);
-        virtual ~CGisListWks();
-
-        enum column_e
-        {
-             eColumnDecoration = 0
-            ,eColumnName = 1
-        };
-
-
-        void setExternalMenu(QMenu * project);
-        bool hasProject(IGisProject *project);
-
-        IGisProject * getProjectByKey(const QString& key);
-        CDBProject * getProjectById(quint64 id, const QString& db);
-
-        bool event(QEvent * e);
-
-    signals:
-        void sigChanged();
-
-    protected:
-        void dragMoveEvent (QDragMoveEvent  * e );
-        void dropEvent ( QDropEvent  * e );
-
-    private slots:
-        void slotSaveWorkspace();
-        void slotLoadWorkspace();
-        void slotContextMenu(const QPoint& point);
-        void slotSaveProject();
-        void slotSaveAsProject();
-        void slotEditPrj();
-        void slotCloseProject();
-        void slotItemDoubleClicked(QTreeWidgetItem * item, int);
-        void slotEditItem();
-        void slotDeleteItem();
-        void slotProjWpt();
-        void slotMoveWpt();        
-        void slotFocusTrk(bool on);
-        void slotEditTrk();
-        void slotReverseTrk();
-        void slotCombineTrk();
-        void slotRangeTrk();
-        void slotEditArea();
-        void slotAddEmptyProject();
-        void slotCloseAllProjects();
-        void slotSearchGoogle(bool on);
-        void slotCopyItem();
-
-
-    private:
-        void configDB();
-        void initDB();
-        void migrateDB(int version);
-
-        QSqlDatabase db;
-
-        QMenu * menuProject;
-        QAction  * actionSave;
-        QAction  * actionSaveAs;
-        QAction  * actionEditPrj;
-        QAction  * actionClose;
-
-        QMenu * menuItem;
-        QMenu * menuItemTrk;
-        QMenu * menuItemWpt;
-        QMenu * menuItemRte;
-        QMenu * menuItemOvl;
-        QAction * actionEditDetails;
-        QAction * actionCopyItem;
-        QAction * actionDelete;
-        QAction * actionProjWpt;
-        QAction * actionMoveWpt;
-        QAction * actionFocusTrk;
-        QAction * actionEditTrk;
-        QAction * actionReverseTrk;
-        QAction * actionCombineTrk;
-        QAction * actionRangeTrk;
-        QAction * actionEditArea;
-
-        QMenu * menuNone;
-
-        QPointer<CSearchGoogle> searchGoogle;
-
-        bool saveOnExit;
-        qint32 saveEvery;
-
+public:
+    CGisListWks(QWidget * parent);
+    virtual ~CGisListWks();
+
+    enum column_e
+    {
+        eColumnDecoration = 0
+        ,eColumnName = 1
+    };
+
+
+    void setExternalMenu(QMenu * project);
+    bool hasProject(IGisProject *project);
+
+    IGisProject * getProjectByKey(const QString& key);
+    CDBProject * getProjectById(quint64 id, const QString& db);
+
+    bool event(QEvent * e);
+
+signals:
+    void sigChanged();
+
+protected:
+    void dragMoveEvent (QDragMoveEvent  * e );
+    void dropEvent ( QDropEvent  * e );
+
+private slots:
+    void slotSaveWorkspace();
+    void slotLoadWorkspace();
+    void slotContextMenu(const QPoint& point);
+    void slotSaveProject();
+    void slotSaveAsProject();
+    void slotEditPrj();
+    void slotCloseProject();
+    void slotItemDoubleClicked(QTreeWidgetItem * item, int);
+    void slotEditItem();
+    void slotDeleteItem();
+    void slotProjWpt();
+    void slotMoveWpt();
+    void slotFocusTrk(bool on);
+    void slotEditTrk();
+    void slotReverseTrk();
+    void slotCombineTrk();
+    void slotRangeTrk();
+    void slotEditArea();
+    void slotAddEmptyProject();
+    void slotCloseAllProjects();
+    void slotSearchGoogle(bool on);
+    void slotCopyItem();
+
+
+private:
+    void configDB();
+    void initDB();
+    void migrateDB(int version);
+
+    QSqlDatabase db;
+
+    QMenu * menuProject;
+    QAction  * actionSave;
+    QAction  * actionSaveAs;
+    QAction  * actionEditPrj;
+    QAction  * actionClose;
+
+    QMenu * menuItem;
+    QMenu * menuItemTrk;
+    QMenu * menuItemWpt;
+    QMenu * menuItemRte;
+    QMenu * menuItemOvl;
+    QAction * actionEditDetails;
+    QAction * actionCopyItem;
+    QAction * actionDelete;
+    QAction * actionProjWpt;
+    QAction * actionMoveWpt;
+    QAction * actionFocusTrk;
+    QAction * actionEditTrk;
+    QAction * actionReverseTrk;
+    QAction * actionCombineTrk;
+    QAction * actionRangeTrk;
+    QAction * actionEditArea;
+
+    QMenu * menuNone;
+
+    QPointer<CSearchGoogle> searchGoogle;
+
+    bool saveOnExit;
+    qint32 saveEvery;
 };
 
 #endif //CGISLISTWKS_H
diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
index 0331d29..4ec0e24 100644
--- a/src/gis/CGisWidget.cpp
+++ b/src/gis/CGisWidget.cpp
@@ -20,16 +20,16 @@
 #include "gis/CGisDraw.h"
 #include "gis/CGisWidget.h"
 #include "gis/IGisItem.h"
-#include "gis/prj/IGisProject.h"
+#include "gis/db/CDBProject.h"
 #include "gis/gpx/CGpxProject.h"
 #include "gis/ovl/CGisItemOvlArea.h"
+#include "gis/prj/IGisProject.h"
 #include "gis/qms/CQmsProject.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
 #include "gis/wpt/CProjWpt.h"
-#include "gis/db/CDBProject.h"
-#include "helpers/CSelectProjectDialog.h"
 #include "helpers/CSelectCopyAction.h"
+#include "helpers/CSelectProjectDialog.h"
 #include "helpers/CSettings.h"
 
 #include <QtWidgets>
@@ -161,7 +161,6 @@ IGisProject * CGisWidget::selectProject()
                 break;
             }
         }
-
     }
     else if(!name.isEmpty())
     {
@@ -176,7 +175,7 @@ IGisProject * CGisWidget::selectProject()
         }
     }
 
-    return(project);
+    return project;
 }
 
 void CGisWidget::getItemsByPos(const QPointF& pos, QList<IGisItem*>& items)
@@ -191,7 +190,6 @@ void CGisWidget::getItemsByPos(const QPointF& pos, QList<IGisItem*>& items)
         }
         project->getItemByPos(pos, items);
     }
-
 }
 
 IGisItem * CGisWidget::getItemByKey(const IGisItem::key_t& key)
@@ -218,7 +216,7 @@ IGisItem * CGisWidget::getItemByKey(const IGisItem::key_t& key)
         }
     }
 
-    return(item);
+    return item;
 }
 
 void CGisWidget::delItemByKey(const IGisItem::key_t& key)
@@ -277,14 +275,12 @@ void CGisWidget::copyItemByKey(const IGisItem::key_t &key)
     IGisItem * item = getItemByKey(key);
     if(item == 0)
     {
-
         return;
     }
 
     IGisProject * project = selectProject();
     if(project == 0)
     {
-
         return;
     }
 
@@ -322,7 +318,6 @@ void CGisWidget::moveWptByKey(const IGisItem::key_t& key)
             canvas->setMouseMoveWpt(*wpt);
         }
     }
-
 }
 
 void CGisWidget::focusTrkByKey(bool yes, const IGisItem::key_t& key)
@@ -395,8 +390,6 @@ void CGisWidget::editTrkByKey(const IGisItem::key_t& key)
             canvas->setMouseEditTrk(*trk);
         }
     }
-
-
 }
 
 void CGisWidget::rangeTrkByKey(const IGisItem::key_t& key)
@@ -412,8 +405,6 @@ void CGisWidget::rangeTrkByKey(const IGisItem::key_t& key)
             canvas->setMouseRangeTrk(*trk);
         }
     }
-
-
 }
 
 void CGisWidget::editAreaByKey(const IGisItem::key_t& key)
@@ -429,8 +420,6 @@ void CGisWidget::editAreaByKey(const IGisItem::key_t& key)
             canvas->setMouseEditArea(*area);
         }
     }
-
-
 }
 
 void CGisWidget::draw(QPainter& p, const QPolygonF& viewport, CGisDraw * gis)
@@ -470,7 +459,6 @@ void CGisWidget::draw(QPainter& p, const QPolygonF& viewport, CGisDraw * gis)
         }
         project->drawLabel(p, viewport, blockedAreas, fm, gis);
     }
-
 }
 
 void CGisWidget::fastDraw(QPainter& p, const QRectF& viewport, CGisDraw *gis)
diff --git a/src/gis/CGisWidget.h b/src/gis/CGisWidget.h
index 54610e0..a7fcc6b 100644
--- a/src/gis/CGisWidget.h
+++ b/src/gis/CGisWidget.h
@@ -19,10 +19,10 @@
 #ifndef CGISWIDGET_H
 #define CGISWIDGET_H
 
-#include <QWidget>
-#include <QSqlDatabase>
-#include <QEvent>
 #include "ui_IGisWidget.h"
+#include <QEvent>
+#include <QSqlDatabase>
+#include <QWidget>
 
 #include "gis/IGisItem.h"
 
@@ -31,7 +31,7 @@ class IGisProject;
 
 enum event_types_e
 {
-     eEvtD2WReqInfo     = QEvent::User + 1
+    eEvtD2WReqInfo     = QEvent::User + 1
     ,eEvtD2WShowFolder  = QEvent::User + 2
     ,eEvtD2WHideFolder  = QEvent::User + 3
     ,eEvtD2WShowItems   = QEvent::User + 4
@@ -43,78 +43,93 @@ enum event_types_e
 
 struct evt_item_t
 {
-    evt_item_t(quint64 id, quint32 type) : id(id), type(type){}
+    evt_item_t(quint64 id, quint32 type) : id(id), type(type)
+    {
+    }
     quint64 id;
     quint32 type;
 };
 
 class CEvtD2WReqInfo : public QEvent
 {
-    public:
-        CEvtD2WReqInfo(quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtD2WReqInfo)), id(id), db(db){}
+public:
+    CEvtD2WReqInfo(quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtD2WReqInfo)), id(id), db(db)
+    {
+    }
 
-        quint64 id;
-        QString db;
+    quint64 id;
+    QString db;
 };
 
 class CEvtD2WShowFolder : public QEvent
 {
-    public:
-        CEvtD2WShowFolder(quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtD2WShowFolder)), id(id), db(db){}
+public:
+    CEvtD2WShowFolder(quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtD2WShowFolder)), id(id), db(db)
+    {
+    }
 
-        quint64 id;
-        QString db;
+    quint64 id;
+    QString db;
 };
 
 class CEvtD2WHideFolder : public QEvent
 {
-    public:
-        CEvtD2WHideFolder(quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtD2WHideFolder)), id(id), db(db){}
+public:
+    CEvtD2WHideFolder(quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtD2WHideFolder)), id(id), db(db)
+    {
+    }
 
-        quint64 id;
-        QString db;
+    quint64 id;
+    QString db;
 };
 
 class CEvtD2WShowItems : public QEvent
 {
-    public:
-        CEvtD2WShowItems(quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtD2WShowItems)), id(id), db(db){}
+public:
+    CEvtD2WShowItems(quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtD2WShowItems)), id(id), db(db)
+    {
+    }
 
-        quint64 id;
-        QString db;
-        QList<evt_item_t> items;
+    quint64 id;
+    QString db;
+    QList<evt_item_t> items;
 };
 
 class CEvtD2WHideItems : public QEvent
 {
-    public:
-        CEvtD2WHideItems(quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtD2WHideItems)), id(id), db(db){}
+public:
+    CEvtD2WHideItems(quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtD2WHideItems)), id(id), db(db)
+    {
+    }
 
-        quint64 id;
-        QString db;
-        QSet<QString> keys;
+    quint64 id;
+    QString db;
+    QSet<QString> keys;
 };
 
 class CEvtW2DAckInfo : public QEvent
 {
-    public:
-        CEvtW2DAckInfo(bool loaded, quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtW2DAckInfo)), isLoaded(loaded), updateLostFound(false), id(id), db(db){}
-
-        bool isLoaded;
-        bool updateLostFound;
-        quint64 id;
-        QString db;
-        QSet<QString> keysChildren;
+public:
+    CEvtW2DAckInfo(bool loaded, quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtW2DAckInfo)), isLoaded(loaded), updateLostFound(false), id(id), db(db)
+    {
+    }
 
+    bool isLoaded;
+    bool updateLostFound;
+    quint64 id;
+    QString db;
+    QSet<QString> keysChildren;
 };
 
 class CEvtD2WUpdateLnF : public QEvent
 {
-    public:
-        CEvtD2WUpdateLnF(quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtD2WUpdateLnF)), id(id), db(db){}
+public:
+    CEvtD2WUpdateLnF(quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtD2WUpdateLnF)), id(id), db(db)
+    {
+    }
 
-        quint64 id;
-        QString db;
+    quint64 id;
+    QString db;
 };
 
 
@@ -122,133 +137,136 @@ class CEvtD2WUpdateLnF : public QEvent
 class CGisWidget : public QWidget, private Ui::IGisWidget
 {
     Q_OBJECT
-    public:
-        static CGisWidget& self(){return *pSelf;}
-        virtual ~CGisWidget();
+public:
+    static CGisWidget& self()
+    {
+        return *pSelf;
+    }
+    virtual ~CGisWidget();
 
-        void loadGisProject(const QString& filename);
-        /**
-           @brief Draw all loaded data in the workspace that is visible
+    void loadGisProject(const QString& filename);
+    /**
+       @brief Draw all loaded data in the workspace that is visible
 
-           This method is called from The CGisDraw thread. The thread has to make sure
-           that everything is thread safe.
+       This method is called from The CGisDraw thread. The thread has to make sure
+       that everything is thread safe.
 
-           @param p         the painter to be used
-           @param viewport  the viewport in units of rad
-           @param gis       the draw context to be used
-        */
-        void draw(QPainter& p, const QPolygonF &viewport, CGisDraw *gis);
+       @param p         the painter to be used
+       @param viewport  the viewport in units of rad
+       @param gis       the draw context to be used
+     */
+    void draw(QPainter& p, const QPolygonF &viewport, CGisDraw *gis);
 
 
-        /**
-           @brief Draw all data that is time variant and can't wait for a full update
+    /**
+       @brief Draw all data that is time variant and can't wait for a full update
 
-           This method is called directly from the main thread's paintEvent() method.
+       This method is called directly from the main thread's paintEvent() method.
 
-           @param p         the painter to be used
-           @param viewport  the viewport in units of rad
-           @param gis       the draw context to be used
-        */
-        void fastDraw(QPainter& p, const QRectF& viewport, CGisDraw *gis);
+       @param p         the painter to be used
+       @param viewport  the viewport in units of rad
+       @param gis       the draw context to be used
+     */
+    void fastDraw(QPainter& p, const QRectF& viewport, CGisDraw *gis);
 
-        /**
-           @brief Get items close to the given point
+    /**
+       @brief Get items close to the given point
 
-           Note: Do not store the pointers of items permanently as they can become invalid
-           once you reach the main event loop again. Store the key instead.
+       Note: Do not store the pointers of items permanently as they can become invalid
+       once you reach the main event loop again. Store the key instead.
 
-           @param pos       the position in pixel
-           @param items     an empty item list that will get filled with temporary pointers
-        */
-        void getItemsByPos(const QPointF& pos, QList<IGisItem *> &items);
+       @param pos       the position in pixel
+       @param items     an empty item list that will get filled with temporary pointers
+     */
+    void getItemsByPos(const QPointF& pos, 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);
+    /**
+       @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);
 
-        /**
-           @brief Delete all items with matching key from workspace
+    /**
+       @brief Delete all items with matching key from workspace
 
-           @param key       the item's key as it is returned from IGisItem::getKey()
-         */
-        void delItemByKey(const IGisItem::key_t &key);
+       @param key       the item's key as it is returned from IGisItem::getKey()
+     */
+    void delItemByKey(const IGisItem::key_t &key);
 
-        /**
-           @brief Edit / view item details
-           @param key       the item's key as it is returned from IGisItem::getKey()
-         */
-        void editItemByKey(const IGisItem::key_t &key);
+    /**
+       @brief Edit / view item details
+       @param key       the item's key as it is returned from IGisItem::getKey()
+     */
+    void editItemByKey(const IGisItem::key_t &key);
 
-        /**
-           @brief Select a project and add a copy of the item to the project
-           @param key       the item's key as it is returned from IGisItem::getKey()
-        */
-        void copyItemByKey(const IGisItem::key_t &key);
+    /**
+       @brief Select a project and add a copy of the item to the project
+       @param key       the item's key as it is returned from IGisItem::getKey()
+     */
+    void copyItemByKey(const IGisItem::key_t &key);
 
-        /**
-           @brief Clone waypoint and move clone
-           @param key       the item's key as it is returned from IGisItem::getKey()
-         */
-        void projWptByKey(const IGisItem::key_t &key);
+    /**
+       @brief Clone waypoint and move clone
+       @param key       the item's key as it is returned from IGisItem::getKey()
+     */
+    void projWptByKey(const IGisItem::key_t &key);
 
-        /**
-           @brief Move waypoint via mouse
-           @param key       the item's key as it is returned from IGisItem::getKey()
-         */
-        void moveWptByKey(const IGisItem::key_t &key);
+    /**
+       @brief Move waypoint via mouse
+       @param key       the item's key as it is returned from IGisItem::getKey()
+     */
+    void moveWptByKey(const IGisItem::key_t &key);
 
-        /**
-           @brief Set user focus to track
-           @param yes       true if focus is set
-           @param key       the item's key as it is returned from IGisItem::getKey()
-         */
-        void focusTrkByKey(bool yes, const IGisItem::key_t &key);
+    /**
+       @brief Set user focus to track
+       @param yes       true if focus is set
+       @param key       the item's key as it is returned from IGisItem::getKey()
+     */
+    void focusTrkByKey(bool yes, const IGisItem::key_t &key);
 
 
-        void cutTrkByKey(const IGisItem::key_t &key);
+    void cutTrkByKey(const IGisItem::key_t &key);
 
-        void editTrkByKey(const IGisItem::key_t &key);
+    void editTrkByKey(const IGisItem::key_t &key);
 
-        void reverseTrkByKey(const IGisItem::key_t &key);
+    void reverseTrkByKey(const IGisItem::key_t &key);
 
-        void combineTrkByKey(const IGisItem::key_t &key);
+    void combineTrkByKey(const IGisItem::key_t &key);
 
-        void rangeTrkByKey(const IGisItem::key_t &key);
+    void rangeTrkByKey(const IGisItem::key_t &key);
 
-        void editAreaByKey(const IGisItem::key_t &key);
+    void editAreaByKey(const IGisItem::key_t &key);
 
-        /**
-           @brief Select a project via dialog
+    /**
+       @brief Select a project via dialog
 
-           If a new project name is entered a new project is created. Else the pointer
-           to an existing project is passed back.
+       If a new project name is entered a new project is created. Else the pointer
+       to an existing project is passed back.
 
-           @return 0 if no project was selected.
-         */
-        IGisProject * selectProject();
+       @return 0 if no project was selected.
+     */
+    IGisProject * selectProject();
 
-        void postEventForWks(QEvent * event);
-        void postEventForDb(QEvent * event);
+    void postEventForWks(QEvent * event);
+    void postEventForDb(QEvent * event);
 
 
-    signals:
-        void sigChanged();
+signals:
+    void sigChanged();
 
-    public slots:
-        void slotSaveAll();
+public slots:
+    void slotSaveAll();
 
-    private slots:
-        void slotHelpText();
+private slots:
+    void slotHelpText();
 
 
-    private:
-        friend class CMainWindow;
-        CGisWidget(QMenu * menuProject, QWidget * parent);
+private:
+    friend class CMainWindow;
+    CGisWidget(QMenu * menuProject, QWidget * parent);
 
-        static CGisWidget * pSelf;
+    static CGisWidget * pSelf;
 };
 
 #endif //CGISWIDGET_H
diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
index afb0bc8..d78a66c 100644
--- a/src/gis/IGisItem.cpp
+++ b/src/gis/IGisItem.cpp
@@ -16,21 +16,21 @@
 
 **********************************************************************************************/
 
-#include "gis/IGisItem.h"
+#include "GeoMath.h"
+#include "canvas/CCanvas.h"
 #include "gis/CGisDraw.h"
 #include "gis/CGisListWks.h"
+#include "gis/IGisItem.h"
+#include "gis/db/macros.h"
 #include "gis/prj/IGisProject.h"
+#include "gis/rte/CGisItemRte.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
-#include "gis/rte/CGisItemRte.h"
-#include "gis/db/macros.h"
 #include "units/IUnit.h"
-#include "canvas/CCanvas.h"
-#include "GeoMath.h"
 
-#include <QtXml>
-#include <QtWidgets>
 #include <QtSql>
+#include <QtWidgets>
+#include <QtXml>
 
 QMutex IGisItem::mutexItems(QMutex::Recursive);
 
@@ -38,7 +38,7 @@ QString IGisItem::noKey;
 
 const IGisItem::color_t IGisItem::colorMap[] =
 {
-     {"Black",       QColor(Qt::black)}
+    {"Black",       QColor(Qt::black)}
     ,{"DarkRed",     QColor(Qt::darkRed)}
     ,{"DarkGreen",   QColor(Qt::darkGreen)}
     ,{"DarkYellow",  QColor(Qt::darkYellow)}
@@ -56,7 +56,6 @@ const IGisItem::color_t IGisItem::colorMap[] =
     ,{"White",       QColor(Qt::white)}
     ,{"Transparent", QColor(Qt::transparent)}
     ,{0, QColor()}
-
 };
 
 IGisItem::IGisItem(IGisProject *parent, type_e typ, int idx)
@@ -154,7 +153,6 @@ IGisItem::IGisItem(IGisProject *parent, type_e typ, int idx)
 
 IGisItem::~IGisItem()
 {
-
 }
 
 void IGisItem::genKey()
@@ -172,6 +170,14 @@ void IGisItem::genKey()
         md5.addData(buffer);
         key.item = md5.result().toHex();
     }
+    if(key.project.isEmpty())
+    {
+        IGisProject * project = dynamic_cast<IGisProject*>(parent());
+        if(project)
+        {
+            key.project = project->getKey();
+        }
+    }
 }
 
 void IGisItem::loadFromDb(quint64 id, QSqlDatabase& db)
@@ -179,7 +185,7 @@ void IGisItem::loadFromDb(quint64 id, QSqlDatabase& db)
     QSqlQuery query(db);
     query.prepare("SELECT data FROM items WHERE id=:id");
     query.bindValue(":id", id);
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
     if(query.next())
     {
         QByteArray data(query.value(0).toByteArray());
@@ -233,12 +239,12 @@ void IGisItem::updateDecoration(mark_e enable, mark_e disable)
 
 
 void IGisItem::changed(const QString &what, const QString &icon)
-{    
+{
     /*
         If item gets changed but if it's origin is not QMapShack
         then it is assumed to be tainted, as imported data should
         never be changed without notice.
-    */
+     */
     if(!(flags & eFlagCreatedInQms))
     {
         flags |= eFlagTainted;
@@ -273,7 +279,7 @@ void IGisItem::changed(const QString &what, const QString &icon)
 }
 
 void IGisItem::setupHistory()
-{    
+{
     history.histIdxInitial = -1;
     history.histIdxCurrent = -1;
 
@@ -284,7 +290,7 @@ void IGisItem::setupHistory()
         history_event_t& event = history.events.last();
         event.time      = QDateTime::currentDateTimeUtc();
         event.comment   = QObject::tr("Initial version.");
-        event.icon      = "://icons/48x48/Start.png";        
+        event.icon      = "://icons/48x48/Start.png";
     }
 
     // search for the first item with data
@@ -358,7 +364,7 @@ bool IGisItem::isReadOnly() const
 
 bool IGisItem::isTainted() const
 {
-    return (flags & eFlagTainted);
+    return flags & eFlagTainted;
 }
 
 void IGisItem::setReadOnlyMode(bool readOnly)
@@ -388,7 +394,7 @@ void IGisItem::setReadOnlyMode(bool readOnly)
 
 const IGisItem::key_t &IGisItem::getKey()
 {
-    if(key.item.isEmpty())
+    if(key.item.isEmpty() || key.project.isEmpty())
     {
         genKey();
     }
@@ -466,7 +472,6 @@ void IGisItem::splitLineToViewport(const QPolygonF& line, const QRectF& extViewp
     {
         lines << subline;
     }
-
 }
 
 void IGisItem::drawArrows(const QPolygonF& line, const QRectF& extViewport, QPainter& p)
@@ -479,11 +484,11 @@ void IGisItem::drawArrows(const QPolygonF& line, const QRectF& extViewport, QPai
         QPointF( 0.0, 15.0)      //lower tail
     };
 
-    QPointF  pt, pt1, ptt;
+    QPointF pt, pt1, ptt;
 
     // draw direction arrows
-    bool    start = true;
-    qreal  heading;
+    bool start = true;
+    qreal heading;
 
     //generate arrow pic on-the-fly
     QImage arrow_pic(21,16, QImage::Format_ARGB32);
@@ -543,83 +548,123 @@ QString IGisItem::removeHtml(const QString &str)
 }
 
 
-QString IGisItem::toLink(bool isReadOnly, const QString& href, const QString& str)
+QString IGisItem::toLink(bool isReadOnly, const QString& href, const QString& str, const QString &key)
 {
     if(isReadOnly)
     {
         return QString("%1").arg(str);
     }
-
-    return QString("<a href='%1'>%2</a>").arg(href).arg(str);
-}
-
-QString IGisItem::createText(bool isReadOnly, const QString& cmt, const QString& desc, const QList<link_t>& links)
-{
-    QString str;
-
-    str += toLink(isReadOnly, "comment", QObject::tr("<h4>Comment:</h4>"));
-    if(removeHtml(cmt).simplified().isEmpty())
+    if(key.isEmpty())
     {
-        str += QObject::tr("<p>--- no comment ---</p>");
+        return QString("<a href='%1'>%2</a>").arg(href).arg(str);
     }
     else
     {
-        str += cmt;
+        return QString("<a href='%1?key=%3'>%2</a>").arg(href).arg(str).arg(key);
     }
+}
 
-    str += toLink(isReadOnly, "description", QObject::tr("<h4>Description:</h4>"));
-    if(removeHtml(desc).simplified().isEmpty())
-    {
-        str += QObject::tr("<p>--- no description ---</p>");
-    }
-    else
+QString IGisItem::createText(bool isReadOnly, const QString& cmt, const QString& desc, const QList<link_t>& links, const QString &key)
+{
+    QString str;
+    bool isEmpty;
+
+    isEmpty = removeHtml(cmt).simplified().isEmpty();
+    if(!isReadOnly || !isEmpty)
     {
-        str += desc;
+        str += toLink(isReadOnly, "comment", QObject::tr("<h4>Comment:</h4>"), key);
+        if(isEmpty)
+        {
+            str += QObject::tr("<p>--- no comment ---</p>");
+        }
+        else
+        {
+            str += cmt;
+        }
     }
 
-    str += toLink(isReadOnly, "links", QObject::tr("<h4>Links:</h4>"));
-    if(links.isEmpty())
+    isEmpty = removeHtml(desc).simplified().isEmpty();
+    if(!isReadOnly || !isEmpty)
     {
-        str += QObject::tr("<p>--- no links ---</p>");
+        str += toLink(isReadOnly, "description", QObject::tr("<h4>Description:</h4>"), key);
+        if(removeHtml(desc).simplified().isEmpty())
+        {
+            str += QObject::tr("<p>--- no description ---</p>");
+        }
+        else
+        {
+            str += desc;
+        }
     }
-    else
+
+    isEmpty = links.isEmpty();
+    if(!isReadOnly || !isEmpty)
     {
-        foreach(const link_t& link, links)
+        str += toLink(isReadOnly, "links", QObject::tr("<h4>Links:</h4>"), key);
+        if(isEmpty)
+        {
+            str += QObject::tr("<p>--- no links ---</p>");
+        }
+        else
         {
-            str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.text);
+            foreach(const link_t &link, links)
+            {
+                if(link.text.isEmpty())
+                {
+                    str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.uri.toString());
+                }
+                else
+                {
+                    str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.text);
+                }
+            }
         }
     }
-
     return str;
 }
 
-QString IGisItem::createText(bool isReadOnly, const QString& desc, const QList<link_t>& links)
+QString IGisItem::createText(bool isReadOnly, const QString& desc, const QList<link_t>& links, const QString& key)
 {
     QString str;
+    bool isEmpty;
 
-    str += toLink(isReadOnly, "description", QObject::tr("<h4>Description:</h4>"));
-    if(removeHtml(desc).simplified().isEmpty())
-    {
-        str += QObject::tr("<p>--- no description ---</p>");
-    }
-    else
+    isEmpty = removeHtml(desc).simplified().isEmpty();
+    if(!isReadOnly || !isEmpty)
     {
-        str += desc;
+        str += toLink(isReadOnly, "description", QObject::tr("<h4>Description:</h4>"), key);
+        if(removeHtml(desc).simplified().isEmpty())
+        {
+            str += QObject::tr("<p>--- no description ---</p>");
+        }
+        else
+        {
+            str += desc;
+        }
     }
 
-    str += toLink(isReadOnly, "links", QObject::tr("<h4>Links:</h4>"));
-    if(links.isEmpty())
+    isEmpty = links.isEmpty();
+    if(!isReadOnly || !isEmpty)
     {
-        str += QObject::tr("<p>--- no links ---</p>");
-    }
-    else
-    {
-        foreach(const link_t& link, links)
+        str += toLink(isReadOnly, "links", QObject::tr("<h4>Links:</h4>"), key);
+        if(isEmpty)
+        {
+            str += QObject::tr("<p>--- no links ---</p>");
+        }
+        else
         {
-            str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.text);
+            foreach(const link_t &link, links)
+            {
+                if(link.text.isEmpty())
+                {
+                    str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.uri.toString());
+                }
+                else
+                {
+                    str += QString("<p><a href='%1'>%2</a></p>").arg(link.uri.toString()).arg(link.text);
+                }
+            }
         }
     }
-
     return str;
 }
 
@@ -648,6 +693,5 @@ bool IGisItem::isVisible(const QPointF& point, const QPolygonF& viewport, CGisDr
     gis->convertRad2Px(pt);
 
     return tmp2.boundingRect().contains(pt);
-
 }
 
diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
index 5037f4d..ed56526 100644
--- a/src/gis/IGisItem.h
+++ b/src/gis/IGisItem.h
@@ -21,15 +21,15 @@
 
 #include <QTreeWidgetItem>
 
+#include <QColor>
 #include <QDateTime>
+#include <QDomNode>
+#include <QMap>
+#include <QMutex>
 #include <QString>
 #include <QStringList>
-#include <QMap>
-#include <QVariant>
 #include <QUrl>
-#include <QDomNode>
-#include <QMutex>
-#include <QColor>
+#include <QVariant>
 
 #include "units/IUnit.h"
 
@@ -42,335 +42,373 @@ class IGisProject;
 
 class IGisItem : public QTreeWidgetItem
 {
-
-    public:
-        struct history_event_t
-        {
-            QDateTime time;
-            QString   hash;
-            QString   icon;
-            QString   comment;
-            QByteArray data;
-        };
-
-        struct history_t
-        {
-            qint32 histIdxInitial;
-            qint32 histIdxCurrent;
-            QList<history_event_t> events;
-        };
-
-
-        struct link_t
+public:
+    struct history_event_t
+    {
+        QDateTime time;
+        QString hash;
+        QString icon;
+        QString comment;
+        QByteArray data;
+    };
+
+    struct history_t
+    {
+        qint32 histIdxInitial;
+        qint32 histIdxCurrent;
+        QList<history_event_t> events;
+    };
+
+
+    struct link_t
+    {
+        QUrl uri;
+        QString text;
+        QString type;
+    };
+
+    struct wpt_t
+    {
+        wpt_t() :
+            lat(NOFLOAT),
+            lon(NOFLOAT),
+            ele(NOINT),
+            magvar(NOINT),
+            geoidheight(NOINT),
+            sat(NOINT),
+            hdop(NOINT),
+            vdop(NOINT),
+            pdop(NOINT),
+            ageofdgpsdata(NOINT),
+            dgpsid(NOINT)
         {
-            QUrl    uri;
-            QString text;
-            QString type;
-        };
-
-        struct wpt_t
+        }
+        // -- all gpx tags - start
+        qreal lat;
+        qreal lon;
+        qint32 ele;
+        QDateTime time;
+        qint32 magvar;
+        qint32 geoidheight;
+        QString name;
+        QString cmt;
+        QString desc;
+        QString src;
+        QList<link_t> links;
+        QString sym;
+        QString type;
+        QString fix;
+        qint32 sat;
+        qint32 hdop;
+        qint32 vdop;
+        qint32 pdop;
+        qint32 ageofdgpsdata;
+        qint32 dgpsid;
+        // -- all gpx tags - stop
+        QMap<QString, QVariant> extensions;
+    };
+
+    /// never ever change these numbers. it will break binary data files
+    enum type_e
+    {
+        eTypeWpt = 1
+        , eTypeTrk = 2
+        , eTypeRte = 3
+        , eTypeOvl = 4
+        , eTypeMax = 5
+    };
+
+    enum mark_e
+    {
+        eMarkNone      = 0
+        ,eMarkChanged   = 0x00000001
+    };
+
+    struct key_t
+    {
+        bool operator==(const key_t& k) const
         {
-            wpt_t() :
-                lat(NOFLOAT),
-                lon(NOFLOAT),
-                ele(NOINT),
-                magvar(NOINT),
-                geoidheight(NOINT),
-                sat(NOINT),
-                hdop(NOINT),
-                vdop(NOINT),
-                pdop(NOINT),
-                ageofdgpsdata(NOINT),
-                dgpsid(NOINT)
-            {}
-            // -- all gpx tags - start
-            qreal lat;
-            qreal lon;
-            qint32 ele;
-            QDateTime time;
-            qint32 magvar;
-            qint32 geoidheight;
-            QString name;
-            QString cmt;
-            QString desc;
-            QString src;
-            QList<link_t> links;
-            QString sym;
-            QString type;
-            QString fix;
-            qint32 sat;
-            qint32 hdop;
-            qint32 vdop;
-            qint32 pdop;
-            qint32 ageofdgpsdata;
-            qint32 dgpsid;
-            // -- all gpx tags - stop
-            QMap<QString, QVariant> extensions;
-        };
-
-        /// never ever change these numbers. it will break binary data files
-        enum type_e
+            return (item == k.item) && (project == k.project);
+        }
+        bool operator!=(const key_t& k) const
         {
-              eTypeWpt = 1
-            , eTypeTrk = 2
-            , eTypeRte = 3
-            , eTypeOvl = 4
-            , eTypeMax = 5
-        };
-
-        enum mark_e
+            return (item != k.item) || (project != k.project);
+        }
+        void clear()
         {
-             eMarkNone      = 0
-            ,eMarkChanged   = 0x00000001
-        };
-
-        struct key_t
-        {
-            bool operator==(const key_t& k) const {return ((item == k.item) && (project == k.project));}
-            bool operator!=(const key_t& k) const {return ((item != k.item) || (project != k.project));}
-            void clear(){item.clear(); project.clear();}
-            QString item;
-            QString project;
-        };
-
-        IGisItem(IGisProject *parent, type_e typ, int idx);
-        virtual ~IGisItem();
-
-        /// this mutex has to be locked when ever the item list is accessed.
-        static QMutex mutexItems;
-
-        /**
-           @brief Update the visual representation of the QTreeWidgetItem
-           @param enable
-           @param disable
-         */
-        virtual void updateDecoration(mark_e enable, mark_e disable);
-
-        /**
-           @brief Save the item's data into a GPX structure
-           @param gpx       the files <gpx> tag to attach the data to
-         */
-        virtual void save(QDomNode& gpx) = 0;
-
-        /**
-           @brief Get key string to identify object
-           @return
-         */
-        const key_t& getKey();
-
-
-        /**
-           @brief Get the icon attached to object
-           @return
-         */
-        virtual const QPixmap& getIcon() const {return icon;}
-        /**
-           @brief Get name of this item.
-           @return A reference to the internal string object
-         */
-        virtual const QString& getName() const = 0;
-
-        /**
-           @brief Get name of this item extended by the project name
-           @return A string object.
-        */
-        virtual QString getNameEx() const;
-
-        /**
-           @brief Get a short string with the items properties to be displayed in tool tips or similar
-           @return A string object.
-        */
-        virtual QString getInfo() const = 0;
-
-        /**
-            @brief Edit content of item.
-
-            This is quite dependent on the item. The default implemntation does nothing. It has to be
-            overwritten and the item has to generate what ever is needed to edit/view it's details.
-
-         */
-        virtual void edit(){}
-
-        /**
-           @brief Get the dimension of the item
-
-           All coordinates are in Rad. Items with no
-
-           @return
-         */
-        virtual const QRectF& getBoundingRect() const {return boundingRect;}
-
-        /**
-           @brief Get screen option object to display and handle actions for this item.
-           @param mouse     a pointer to the mouse object initiating the action
-           @return A null pointer is returned if no screen option are available
-         */
-        virtual IScrOpt * getScreenOptions(const QPoint& origin, IMouse * mouse){return 0;}
-
-        /**
-           @brief Get a point of the item that is close by the given screen pixel coordinate
-           @param point     a point in screen pixels
-           @return If no point is found NOPOINTF is returned.
-         */
-        virtual QPointF getPointCloseBy(const QPoint& point){return NOPOINTF;}
-
-        /**
-           @brief Test if the item is close to a given pixel coordinate of the screen
-
-           @param pos       the coordinate on the screen in pixel
-           @return If no point can be found NOPOINTF is returned.
-        */
-        virtual bool isCloseTo(const QPointF& pos) = 0;
-
-        /**
-           @brief Query if this item is read only
-           @return True if it is read only.
-         */
-        bool isReadOnly() const;
-
-        /**
-           @brief Query if the item is imported and was changed
-           @return True if content was changed.
-         */
-        bool isTainted() const;
-        /**
-           @brief Set the read only mode.
-
-           This is quite dependent on the item. The default implementation will display a
-           message box with a warning and ask the user to confirm.
-
-           @param readOnly      set true to make item read only
-         */
-        virtual void setReadOnlyMode(bool readOnly);
-
-        virtual void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis) = 0;
-        virtual void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis){}
-        virtual void drawLabel(QPainter& p, const QPolygonF& viewport,QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis) = 0;
-        virtual void drawHighlight(QPainter& p) = 0;        
-
-        virtual void gainUserFocus(bool yes) = 0;
-
-        /**
-           @brief Check for user focus
-
-           @return True if the item has user focus. The default implementation is always false.
-         */
-        virtual bool hasUserFocus() const {return false;}
-
-
-        /**
-           @brief Serialize object out of a QDataStream
-
-           See CGisSerialization.cpp for implementation
-
-           @param stream the binary data stream
-           @return The stream object.
-        */
-        virtual QDataStream& operator<<(QDataStream& stream) = 0;
-        /**
-           @brief Serialize object into a QDataStream
-
-           See CGisSerialization.cpp for implementation
-
-           @param stream the binary data stream
-           @return The stream object.
-        */
-        virtual QDataStream& operator>>(QDataStream& stream) = 0;
-
-        /**
-           @brief Get read access to history of changes
-
-           @return A reference to the history structure.
-        */
-        const history_t& getHistory() const {return history;}
-
-        /**
-           @brief Load a given state of chnage from the history
-           @param idx
-        */
-        void loadHistory(int idx);
-
-        void cutHistory();
-
-        static QString removeHtml(const QString &str);
-        static QString createText(bool isReadOnly, const QString& cmt, const QString& desc, const QList<link_t>& links);
-        static QString createText(bool isReadOnly, const QString& desc, const QList<link_t>& links);
-        static QString toLink(bool isReadOnly, const QString& href, const QString& str);
-
-        static QString noKey;
-
-    protected:
-        struct color_t;
-
-        /// set icon of QTreeWidgetItem
-        virtual void setSymbol() = 0;
-        /// read waypoint data from an XML snippet
-        void readWpt(const QDomNode& xml, wpt_t &wpt);
-        /// write waypoint data to an XML snippet
-        void writeWpt(QDomElement &xml, const wpt_t &wpt);
-        /// gnerate a unique key from item's data
-        virtual void genKey();
-        /// setup the history structure right after the creation of the item
-        void setupHistory();
-        /// convert a color string from GPX to a QT color
-        QColor str2color(const QString& name);
-        /// convertr a QT color to a string to be used in a GPX file
-        QString color2str(const QColor &color);
-        /// to optimize drawing of large polylines split the line into sections that are visible
-        void splitLineToViewport(const QPolygonF& line, const QRectF& extViewport, QList<QPolygonF>& lines);
-        /// ditribute arrows over a polyline
-        void drawArrows(const QPolygonF &line, const QRectF &extViewport, QPainter& p);
-        /// call when ever you make a change to the item's data
-        virtual void changed(const QString& what, const QString& icon);
-
-        virtual 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);
+            item.clear(); project.clear();
+        }
+        QString item;
+        QString project;
+    };
+
+    IGisItem(IGisProject *parent, type_e typ, int idx);
+    virtual ~IGisItem();
+
+    /// this mutex has to be locked when ever the item list is accessed.
+    static QMutex mutexItems;
+
+    /**
+       @brief Update the visual representation of the QTreeWidgetItem
+       @param enable
+       @param disable
+     */
+    virtual void updateDecoration(mark_e enable, mark_e disable);
+
+    /**
+       @brief Save the item's data into a GPX structure
+       @param gpx       the files <gpx> tag to attach the data to
+     */
+    virtual void save(QDomNode& gpx) = 0;
+
+    /**
+       @brief Get key string to identify object
+       @return
+     */
+    const key_t& getKey();
+
+
+    /**
+       @brief Get the icon attached to object
+       @return
+     */
+    virtual const QPixmap& getIcon() const
+    {
+        return icon;
+    }
+    /**
+       @brief Get name of this item.
+       @return A reference to the internal string object
+     */
+    virtual const QString& getName() const = 0;
+
+    /**
+       @brief Get name of this item extended by the project name
+       @return A string object.
+     */
+    virtual QString getNameEx() const;
+
+    /**
+       @brief Get a short string with the items properties to be displayed in tool tips or similar
+       @return A string object.
+     */
+    virtual QString getInfo() const = 0;
+
+    virtual const QString& getComment() const = 0;
+    virtual const QString& getDescription() const = 0;
+    virtual const QList<link_t>& getLinks() const = 0;
+
+
+    virtual void setComment(const QString& str) = 0;
+    virtual void setDescription(const QString& str) = 0;
+    virtual void setLinks(const QList<link_t>& links) = 0;
+
+    /**
+        @brief Edit content of item.
+
+        This is quite dependent on the item. The default implemntation does nothing. It has to be
+        overwritten and the item has to generate what ever is needed to edit/view it's details.
+
+     */
+    virtual void edit()
+    {
+    }
+
+    /**
+       @brief Get the dimension of the item
+
+       All coordinates are in Rad. Items with no
+
+       @return
+     */
+    virtual const QRectF& getBoundingRect() const
+    {
+        return boundingRect;
+    }
+
+    /**
+       @brief Get screen option object to display and handle actions for this item.
+       @param mouse     a pointer to the mouse object initiating the action
+       @return A null pointer is returned if no screen option are available
+     */
+    virtual IScrOpt * getScreenOptions(const QPoint& origin, IMouse * mouse)
+    {
+        return 0;
+    }
+
+    /**
+       @brief Get a point of the item that is close by the given screen pixel coordinate
+       @param point     a point in screen pixels
+       @return If no point is found NOPOINTF is returned.
+     */
+    virtual QPointF getPointCloseBy(const QPoint& point)
+    {
+        return NOPOINTF;
+    }
+
+    /**
+       @brief Test if the item is close to a given pixel coordinate of the screen
+
+       @param pos       the coordinate on the screen in pixel
+       @return If no point can be found NOPOINTF is returned.
+     */
+    virtual bool isCloseTo(const QPointF& pos) = 0;
+
+    /**
+       @brief Query if this item is read only
+       @return True if it is read only.
+     */
+    bool isReadOnly() const;
+
+    /**
+       @brief Query if the item is imported and was changed
+       @return True if content was changed.
+     */
+    bool isTainted() const;
+    /**
+       @brief Set the read only mode.
+
+       This is quite dependent on the item. The default implementation will display a
+       message box with a warning and ask the user to confirm.
+
+       @param readOnly      set true to make item read only
+     */
+    virtual void setReadOnlyMode(bool readOnly);
+
+    virtual void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis) = 0;
+    virtual void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
+    {
+    }
+    virtual void drawLabel(QPainter& p, const QPolygonF& viewport,QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis) = 0;
+    virtual void drawHighlight(QPainter& p) = 0;
+
+    virtual void gainUserFocus(bool yes) = 0;
+
+    /**
+       @brief Check for user focus
+
+       @return True if the item has user focus. The default implementation is always false.
+     */
+    virtual bool hasUserFocus() const
+    {
+        return false;
+    }
+
+
+    /**
+       @brief Serialize object out of a QDataStream
+
+       See CGisSerialization.cpp for implementation
+
+       @param stream the binary data stream
+       @return The stream object.
+     */
+    virtual QDataStream& operator<<(QDataStream& stream) = 0;
+    /**
+       @brief Serialize object into a QDataStream
+
+       See CGisSerialization.cpp for implementation
+
+       @param stream the binary data stream
+       @return The stream object.
+     */
+    virtual QDataStream& operator>>(QDataStream& stream) = 0;
+
+    /**
+       @brief Get read access to history of changes
+
+       @return A reference to the history structure.
+     */
+    const history_t& getHistory() const
+    {
+        return history;
+    }
+
+    /**
+       @brief Load a given state of chnage from the history
+       @param idx
+     */
+    void loadHistory(int idx);
+
+    void cutHistory();
+
+    static QString removeHtml(const QString &str);
+    static QString createText(bool isReadOnly, const QString& cmt, const QString& desc, const QList<link_t>& links, const QString& key = "");
+    static QString createText(bool isReadOnly, const QString& desc, const QList<link_t>& links, const QString& key = "");
+    static QString toLink(bool isReadOnly, const QString& href, const QString& str, const QString& key);
+
+    static QString noKey;
+
+protected:
+    struct color_t;
+
+    /// set icon of QTreeWidgetItem
+    virtual void setSymbol() = 0;
+    /// read waypoint data from an XML snippet
+    void readWpt(const QDomNode& xml, wpt_t &wpt);
+    /// write waypoint data to an XML snippet
+    void writeWpt(QDomElement &xml, const wpt_t &wpt);
+    /// gnerate a unique key from item's data
+    virtual void genKey();
+    /// setup the history structure right after the creation of the item
+    void setupHistory();
+    /// convert a color string from GPX to a QT color
+    QColor str2color(const QString& name);
+    /// convertr a QT color to a string to be used in a GPX file
+    QString color2str(const QColor &color);
+    /// to optimize drawing of large polylines split the line into sections that are visible
+    void splitLineToViewport(const QPolygonF& line, const QRectF& extViewport, QList<QPolygonF>& lines);
+    /// ditribute arrows over a polyline
+    void drawArrows(const QPolygonF &line, const QRectF &extViewport, QPainter& p);
+    /// call when ever you make a change to the item's data
+    virtual void changed(const QString& what, const QString& icon);
 
+    virtual 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);
 
-        quint32 flags;
-        key_t   key;
-        QString hash;
-        QPixmap icon;
-        QRectF boundingRect;
 
-        history_t history;
 
+    quint32 flags;
+    key_t key;
+    QString hash;
+    QPixmap icon;
+    QRectF boundingRect;
 
-        static const color_t colorMap[];
+    history_t history;
 
 
-        struct color_t
-        {
-            const char * name;
-            QColor color;
-        };
+    static const color_t colorMap[];
 
 
-        enum flags_e
-        {
-             eFlagCreatedInQms  = 0x00000001
-            ,eFlagWriteAllowed  = 0x00000002
-            ,eFlagTainted       = 0x00000004
-        };
+    struct color_t
+    {
+        const char * name;
+        QColor color;
+    };
+
 
+    enum flags_e
+    {
+        eFlagCreatedInQms  = 0x00000001
+        ,eFlagWriteAllowed  = 0x00000002
+        ,eFlagTainted       = 0x00000004
+    };
 
 
-        static inline bool isBlocked(const QRectF& rect, const QList<QRectF> &blockedAreas)
+
+    static inline bool isBlocked(const QRectF& rect, const QList<QRectF> &blockedAreas)
+    {
+        foreach(const QRectF &r, blockedAreas)
         {
-            foreach(const QRectF& r, blockedAreas)
+            if(rect.intersects(r))
             {
-                if(rect.intersects(r))
-                {
-                    return true;
-                }
+                return true;
             }
-            return false;
         }
-
-
+        return false;
+    }
 };
 
 QDataStream& operator>>(QDataStream& stream, IGisItem::history_t& h);
diff --git a/src/gis/IGisLine.cpp b/src/gis/IGisLine.cpp
index 7850c86..c56e721 100644
--- a/src/gis/IGisLine.cpp
+++ b/src/gis/IGisLine.cpp
@@ -20,11 +20,9 @@
 
 IGisLine::IGisLine()
 {
-
 }
 
 IGisLine::~IGisLine()
 {
-
 }
 
diff --git a/src/gis/IGisLine.h b/src/gis/IGisLine.h
index 040ec62..ffd609c 100644
--- a/src/gis/IGisLine.h
+++ b/src/gis/IGisLine.h
@@ -23,12 +23,12 @@ class QPolygonF;
 
 class IGisLine
 {
-    public:
-        IGisLine();
-        virtual ~IGisLine();
+public:
+    IGisLine();
+    virtual ~IGisLine();
 
-        virtual void setDataFromPolyline(const QPolygonF& line) = 0;
-        virtual void getPolylineFromData(QPolygonF& line) = 0;
+    virtual void setDataFromPolyline(const QPolygonF& line) = 0;
+    virtual void getPolylineFromData(QPolygonF& line) = 0;
 };
 
 #endif //IGISLINE_H
diff --git a/src/gis/WptIcons.cpp b/src/gis/WptIcons.cpp
index 4730fb1..11f8b78 100644
--- a/src/gis/WptIcons.cpp
+++ b/src/gis/WptIcons.cpp
@@ -28,7 +28,6 @@ static QMap<QString, icon_t> wptIcons;
 
 void initWptIcons()
 {
-
     wptIcons["Default"]            = icon_t(wptDefault, 16, 16);
 //    wptIcons["City (Capitol)"]      = ":/icons/wpt/capitol_city15x15.png";
 //    wptIcons["City (Large)"]        = ":/icons/wpt/large_city15x15.png";
@@ -121,7 +120,6 @@ QPixmap loadIcon(const QString& path)
 
 QPixmap getWptIconByName(const QString& name, QPointF &focus, QString * src)
 {
-
     QPixmap icon;
     QString path;
 
diff --git a/src/gis/WptIcons.h b/src/gis/WptIcons.h
index 9a5cb09..fa1961e 100644
--- a/src/gis/WptIcons.h
+++ b/src/gis/WptIcons.h
@@ -19,15 +19,19 @@
 #ifndef WPTICONS_H
 #define WPTICONS_H
 
-#include <QString>
 #include <QPixmap>
+#include <QString>
 
 struct icon_t
 {
-    icon_t(): focus(16,16){}
-    icon_t(const QString& path, int x, int y) : path(path), focus(x,y) {}
+    icon_t() : focus(16,16)
+    {
+    }
+    icon_t(const QString& path, int x, int y) : path(path), focus(x,y)
+    {
+    }
     QString path;
-    QPoint  focus;
+    QPoint focus;
 };
 
 
diff --git a/src/gis/db/CDBFolderDatabase.cpp b/src/gis/db/CDBFolderDatabase.cpp
index ccd71eb..7a185c8 100644
--- a/src/gis/db/CDBFolderDatabase.cpp
+++ b/src/gis/db/CDBFolderDatabase.cpp
@@ -16,9 +16,9 @@
 
 **********************************************************************************************/
 
+#include "gis/CGisListDB.h"
 #include "gis/db/CDBFolderDatabase.h"
 #include "gis/db/CDBFolderLostFound.h"
-#include "gis/CGisListDB.h"
 
 CDBFolderDatabase::CDBFolderDatabase(const QString& filename, const QString& name, QTreeWidget *parent)
     : IDBFolder(false, IDB::db, eTypeDatabase, 1, parent)
@@ -36,7 +36,6 @@ CDBFolderDatabase::CDBFolderDatabase(const QString& filename, const QString& nam
 
 CDBFolderDatabase::~CDBFolderDatabase()
 {
-
 }
 
 void CDBFolderDatabase::expanding()
diff --git a/src/gis/db/CDBFolderDatabase.h b/src/gis/db/CDBFolderDatabase.h
index ce2b878..0b1e092 100644
--- a/src/gis/db/CDBFolderDatabase.h
+++ b/src/gis/db/CDBFolderDatabase.h
@@ -26,17 +26,19 @@ class CDBFolderLostFound;
 
 class CDBFolderDatabase : public IDBFolder, private IDB
 {
-    public:
-        CDBFolderDatabase(const QString &filename, const QString &name, QTreeWidget *parent);
-        virtual ~CDBFolderDatabase();
-
-        void expanding();
-        void updateLostFound();
-        const QString& getFilename(){return filename;}
-    private:
-        QString filename;
-        CDBFolderLostFound * folderLostFound;
-
+public:
+    CDBFolderDatabase(const QString &filename, const QString &name, QTreeWidget *parent);
+    virtual ~CDBFolderDatabase();
+
+    void expanding();
+    void updateLostFound();
+    const QString& getFilename()
+    {
+        return filename;
+    }
+private:
+    QString filename;
+    CDBFolderLostFound * folderLostFound;
 };
 
 #endif //CDBFOLDERDATABASE_H
diff --git a/src/gis/db/CDBFolderGroup.cpp b/src/gis/db/CDBFolderGroup.cpp
index bffbbb6..1dc65b1 100644
--- a/src/gis/db/CDBFolderGroup.cpp
+++ b/src/gis/db/CDBFolderGroup.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "gis/db/CDBFolderGroup.h"
 #include "gis/CGisListDB.h"
+#include "gis/db/CDBFolderGroup.h"
 
 CDBFolderGroup::CDBFolderGroup(QSqlDatabase& db, quint64 key, QTreeWidgetItem * parent)
     : IDBFolder(false, db, eTypeGroup, key, parent)
@@ -28,6 +28,5 @@ CDBFolderGroup::CDBFolderGroup(QSqlDatabase& db, quint64 key, QTreeWidgetItem *
 
 CDBFolderGroup::~CDBFolderGroup()
 {
-
 }
 
diff --git a/src/gis/db/CDBFolderGroup.h b/src/gis/db/CDBFolderGroup.h
index f6836fe..3f14ba8 100644
--- a/src/gis/db/CDBFolderGroup.h
+++ b/src/gis/db/CDBFolderGroup.h
@@ -23,9 +23,9 @@
 
 class CDBFolderGroup : public IDBFolder
 {
-    public:
-        CDBFolderGroup(QSqlDatabase &db, quint64 key, QTreeWidgetItem * parent);
-        virtual ~CDBFolderGroup();
+public:
+    CDBFolderGroup(QSqlDatabase &db, quint64 key, QTreeWidgetItem * parent);
+    virtual ~CDBFolderGroup();
 };
 
 #endif //CDBFOLDERGROUP_H
diff --git a/src/gis/db/CDBFolderLostFound.cpp b/src/gis/db/CDBFolderLostFound.cpp
index a0950dc..cfe42ab 100644
--- a/src/gis/db/CDBFolderLostFound.cpp
+++ b/src/gis/db/CDBFolderLostFound.cpp
@@ -16,11 +16,11 @@
 
 **********************************************************************************************/
 
+#include "gis/CGisListDB.h"
+#include "gis/CGisWidget.h"
 #include "gis/db/CDBFolderLostFound.h"
 #include "gis/db/CDBItem.h"
 #include "gis/db/macros.h"
-#include "gis/CGisListDB.h"
-#include "gis/CGisWidget.h"
 
 #include <QtSql>
 
@@ -37,7 +37,6 @@ CDBFolderLostFound::CDBFolderLostFound(QSqlDatabase& db, QTreeWidgetItem *parent
 
 CDBFolderLostFound::~CDBFolderLostFound()
 {
-
 }
 
 void CDBFolderLostFound::setupFromDB()
@@ -49,7 +48,7 @@ void CDBFolderLostFound::setupFromDB()
 
 
     query.prepare("SELECT id FROM items AS t1 WHERE NOT EXISTS(SELECT * FROM folder2item WHERE child=t1.id) ORDER BY t1.type, t1.name");
-    QUERY_EXEC(return);    
+    QUERY_EXEC(return );
     while(query.next())
     {
         quint64 id      = query.value(0).toULongLong();
@@ -70,7 +69,6 @@ void CDBFolderLostFound::setupFromDB()
 
     CEvtD2WUpdateLnF * evt = new CEvtD2WUpdateLnF(getId(), getDBName());
     CGisWidget::self().postEventForWks(evt);
-
 }
 
 void CDBFolderLostFound::update(CEvtW2DAckInfo * info)
@@ -92,7 +90,7 @@ void CDBFolderLostFound::clear()
     QSqlQuery query(db);
 
     query.prepare("DELETE FROM items WHERE id NOT IN (SELECT child from folder2item)");
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
 
     setupFromDB();
 }
diff --git a/src/gis/db/CDBFolderLostFound.h b/src/gis/db/CDBFolderLostFound.h
index a620d04..c5d60b1 100644
--- a/src/gis/db/CDBFolderLostFound.h
+++ b/src/gis/db/CDBFolderLostFound.h
@@ -23,19 +23,21 @@
 
 class CDBFolderLostFound : public IDBFolder
 {
-    public:
-        CDBFolderLostFound(QSqlDatabase &db, QTreeWidgetItem *parent);
-        virtual ~CDBFolderLostFound();
+public:
+    CDBFolderLostFound(QSqlDatabase &db, QTreeWidgetItem *parent);
+    virtual ~CDBFolderLostFound();
 
-        void update(CEvtW2DAckInfo * info);
-        void update();
-        void expanding(){}
-        void clear();
-        bool delItem(CDBItem * item);
+    void update(CEvtW2DAckInfo * info);
+    void update();
+    void expanding()
+    {
+    }
+    void clear();
+    bool delItem(CDBItem * item);
 
 
-    protected:
-        void setupFromDB();
+protected:
+    void setupFromDB();
 };
 
 #endif //CDBFOLDERLOSTFOUND_H
diff --git a/src/gis/db/CDBFolderOther.cpp b/src/gis/db/CDBFolderOther.cpp
index ec28e91..9b01d41 100644
--- a/src/gis/db/CDBFolderOther.cpp
+++ b/src/gis/db/CDBFolderOther.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "gis/db/CDBFolderOther.h"
 #include "gis/CGisListDB.h"
+#include "gis/db/CDBFolderOther.h"
 
 CDBFolderOther::CDBFolderOther(QSqlDatabase& db, quint64 key, QTreeWidgetItem * parent)
     : IDBFolder(true, db, eTypeOther, key, parent)
@@ -28,6 +28,5 @@ CDBFolderOther::CDBFolderOther(QSqlDatabase& db, quint64 key, QTreeWidgetItem *
 
 CDBFolderOther::~CDBFolderOther()
 {
-
 }
 
diff --git a/src/gis/db/CDBFolderOther.h b/src/gis/db/CDBFolderOther.h
index 0c6b3a8..ae8ddd7 100644
--- a/src/gis/db/CDBFolderOther.h
+++ b/src/gis/db/CDBFolderOther.h
@@ -23,9 +23,9 @@
 
 class CDBFolderOther : public IDBFolder
 {
-    public:
-        CDBFolderOther(QSqlDatabase &db, quint64 key, QTreeWidgetItem *parent);
-        virtual ~CDBFolderOther();
+public:
+    CDBFolderOther(QSqlDatabase &db, quint64 key, QTreeWidgetItem *parent);
+    virtual ~CDBFolderOther();
 };
 
 #endif //CDBFOLDEROTHER_H
diff --git a/src/gis/db/CDBFolderProject.cpp b/src/gis/db/CDBFolderProject.cpp
index c1c575a..a5def93 100644
--- a/src/gis/db/CDBFolderProject.cpp
+++ b/src/gis/db/CDBFolderProject.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "gis/db/CDBFolderProject.h"
 #include "gis/CGisListDB.h"
+#include "gis/db/CDBFolderProject.h"
 
 CDBFolderProject::CDBFolderProject(QSqlDatabase& db, quint64 key, QTreeWidgetItem * parent)
     : IDBFolder(true, db, eTypeProject, key, parent)
@@ -28,6 +28,5 @@ CDBFolderProject::CDBFolderProject(QSqlDatabase& db, quint64 key, QTreeWidgetIte
 
 CDBFolderProject::~CDBFolderProject()
 {
-
 }
 
diff --git a/src/gis/db/CDBFolderProject.h b/src/gis/db/CDBFolderProject.h
index 902b45c..d6477c2 100644
--- a/src/gis/db/CDBFolderProject.h
+++ b/src/gis/db/CDBFolderProject.h
@@ -23,9 +23,9 @@
 
 class CDBFolderProject : public IDBFolder
 {
-    public:
-        CDBFolderProject(QSqlDatabase &db, quint64 key, QTreeWidgetItem *parent);
-        virtual ~CDBFolderProject();
+public:
+    CDBFolderProject(QSqlDatabase &db, quint64 key, QTreeWidgetItem *parent);
+    virtual ~CDBFolderProject();
 };
 
 #endif //CDBFOLDERPROJECT_H
diff --git a/src/gis/db/CDBItem.cpp b/src/gis/db/CDBItem.cpp
index ed86a48..07e6707 100644
--- a/src/gis/db/CDBItem.cpp
+++ b/src/gis/db/CDBItem.cpp
@@ -16,11 +16,11 @@
 
 **********************************************************************************************/
 
+#include "gis/CGisListDB.h"
+#include "gis/CGisWidget.h"
 #include "gis/db/CDBItem.h"
 #include "gis/db/IDBFolder.h"
 #include "gis/db/macros.h"
-#include "gis/CGisWidget.h"
-#include "gis/CGisListDB.h"
 
 #include <QtSql>
 
@@ -33,7 +33,7 @@ CDBItem::CDBItem(QSqlDatabase &db, quint64 id, IDBFolder *parent)
     QSqlQuery query(db);
     query.prepare("SELECT type, key, icon, name, comment FROM items WHERE id=:id");
     query.bindValue(":id", id);
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
     if(query.next())
     {
         QPixmap pixmap;
@@ -43,7 +43,6 @@ CDBItem::CDBItem(QSqlDatabase &db, quint64 id, IDBFolder *parent)
         setIcon(CGisListDB::eColumnCheckbox, pixmap);
         setText(CGisListDB::eColumnName, query.value(3).toString());
         setToolTip(CGisListDB::eColumnName, query.value(4).toString());
-
     }
 }
 
diff --git a/src/gis/db/CDBItem.h b/src/gis/db/CDBItem.h
index 8048941..475be4e 100644
--- a/src/gis/db/CDBItem.h
+++ b/src/gis/db/CDBItem.h
@@ -26,21 +26,27 @@ class QSqlDatabase;
 
 class CDBItem : public QTreeWidgetItem
 {
-    public:
-        CDBItem(QSqlDatabase& db, quint64 id, IDBFolder * parent);
-        virtual ~CDBItem();
-
-        quint64 getId(){return id;}
-        const QString& getKey(){return key;}
-        void toggle();
-        void remove();
-
-    private:        
-        QSqlDatabase& db;
-        quint64 id;
-
-        int type;
-        QString key;
+public:
+    CDBItem(QSqlDatabase& db, quint64 id, IDBFolder * parent);
+    virtual ~CDBItem();
+
+    quint64 getId()
+    {
+        return id;
+    }
+    const QString& getKey()
+    {
+        return key;
+    }
+    void toggle();
+    void remove();
+
+private:
+    QSqlDatabase& db;
+    quint64 id;
+
+    int type;
+    QString key;
 };
 
 #endif //CDBITEM_H
diff --git a/src/gis/db/CDBProject.cpp b/src/gis/db/CDBProject.cpp
index 930e7df..d3cf73e 100644
--- a/src/gis/db/CDBProject.cpp
+++ b/src/gis/db/CDBProject.cpp
@@ -16,15 +16,15 @@
 
 **********************************************************************************************/
 
-#include "gis/db/CDBProject.h"
 #include "gis/CGisWidget.h"
-#include "gis/qms/CQmsProject.h"
-#include "gis/gpx/CGpxProject.h"
+#include "gis/db/CDBProject.h"
 #include "gis/db/macros.h"
-#include "gis/wpt/CGisItemWpt.h"
-#include "gis/trk/CGisItemTrk.h"
-#include "gis/rte/CGisItemRte.h"
+#include "gis/gpx/CGpxProject.h"
 #include "gis/ovl/CGisItemOvlArea.h"
+#include "gis/qms/CQmsProject.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/wpt/CGisItemWpt.h"
 #include "helpers/CSettings.h"
 
 #include <QtSql>
@@ -38,7 +38,7 @@ CDBProject::CDBProject(CGisListWks * parent)
 
 CDBProject::CDBProject(const QString& dbName, quint64 id, CGisListWks *parent)
     : IGisProject(eTypeDb, dbName, parent)
-    , id(id)    
+    , id(id)
 {
     setIcon(CGisListWks::eColumnName,QIcon("://icons/32x32/DBProject.png"));
     db = QSqlDatabase::database(dbName);
@@ -46,7 +46,7 @@ CDBProject::CDBProject(const QString& dbName, quint64 id, CGisListWks *parent)
     QSqlQuery query(db);
     query.prepare("SELECT date, name, data FROM folders WHERE id=:id");
     query.bindValue(":id", id);
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
     query.next();
 
     QString date    = query.value(0).toString();
@@ -61,7 +61,7 @@ CDBProject::CDBProject(const QString& dbName, quint64 id, CGisListWks *parent)
         query.prepare("UPDATE folders SET key=:key WHERE id=:id");
         query.bindValue(":key", getKey());
         query.bindValue(":id", id);
-        QUERY_EXEC(return);
+        QUERY_EXEC(return );
     }
     else
     {
@@ -89,8 +89,8 @@ void CDBProject::restoreDBLink()
 
     QSqlQuery query(db);
     query.prepare("SELECT id FROM folders WHERE key=:key");
-    query.bindValue(":key", getKey());   
-    QUERY_EXEC(return);
+    query.bindValue(":key", getKey());
+    QUERY_EXEC(return );
     if(query.next())
     {
         id = query.value(0).toULongLong();
@@ -175,6 +175,13 @@ bool CDBProject::save()
             {
                 continue;
             }
+
+            if(item->text(CGisListWks::eColumnDecoration).isEmpty())
+            {
+                info->keysChildren << item->getKey().item;
+                continue;
+            }
+
             quint64 idItem = 0;
 
             // serialize complete history of item
@@ -209,7 +216,6 @@ bool CDBProject::save()
                 query.bindValue(":data", data);
                 query.bindValue(":id", idItem);
                 QUERY_EXEC(throw -1);
-
             }
             else
             {
@@ -238,7 +244,7 @@ bool CDBProject::save()
             query.prepare("SELECT id FROM folder2item WHERE parent=:parent AND child=:child");
             query.bindValue(":parent", id);
             query.bindValue(":child", idItem);
-            QUERY_EXEC(;);
+            QUERY_EXEC(; );
 
             if(!query.next())
             {
@@ -290,24 +296,28 @@ bool CDBProject::save()
 }
 
 void CDBProject::showItems(CEvtD2WShowItems * evt)
-{    
-    foreach(const evt_item_t& item, evt->items)
+{
+    foreach(const evt_item_t &item, evt->items)
     {
         switch(item.type)
         {
-            case IGisItem::eTypeWpt:
-                new CGisItemWpt(item.id, db, this);
-                break;
-            case IGisItem::eTypeTrk:
-                new CGisItemTrk(item.id, db, this);
-                break;
-            case IGisItem::eTypeRte:
-                new CGisItemRte(item.id, db, this);
-                break;
-            case IGisItem::eTypeOvl:
-                new CGisItemOvlArea(item.id, db, this);
-                break;
-            default:;
+        case IGisItem::eTypeWpt:
+            new CGisItemWpt(item.id, db, this);
+            break;
+
+        case IGisItem::eTypeTrk:
+            new CGisItemTrk(item.id, db, this);
+            break;
+
+        case IGisItem::eTypeRte:
+            new CGisItemRte(item.id, db, this);
+            break;
+
+        case IGisItem::eTypeOvl:
+            new CGisItemOvlArea(item.id, db, this);
+            break;
+
+        default:;
         }
     }
 
@@ -322,7 +332,7 @@ void CDBProject::hideItems(CEvtD2WHideItems * evt)
 
     QMessageBox::StandardButtons last = QMessageBox::YesToAll;
 
-    foreach(const QString& k, evt->keys)
+    foreach(const QString &k, evt->keys)
     {
         key.item = k;
         delItemByKey(key, last);
diff --git a/src/gis/db/CDBProject.h b/src/gis/db/CDBProject.h
index e575f82..6c60bf4 100644
--- a/src/gis/db/CDBProject.h
+++ b/src/gis/db/CDBProject.h
@@ -28,55 +28,61 @@ class CQlgtFolder;
 
 class CDBProject : public IGisProject
 {
-    public:
-        CDBProject(CGisListWks * parent);
-        CDBProject(const QString &dbName, quint64 id, CGisListWks * parent);
-        CDBProject(CQlgtFolder& folder);
-        virtual ~CDBProject();
+public:
+    CDBProject(CGisListWks * parent);
+    CDBProject(const QString &dbName, quint64 id, CGisListWks * parent);
+    CDBProject(CQlgtFolder& folder);
+    virtual ~CDBProject();
 
-        /**
-           @brief Restore database link after the project has been restored from binary storage.
+    /**
+       @brief Restore database link after the project has been restored from binary storage.
 
-           Typically this is done after the project has been restored in the workspace on application's startup.
+       Typically this is done after the project has been restored in the workspace on application's startup.
 
-        */
-        void restoreDBLink();
+     */
+    void restoreDBLink();
 
-        bool save();
-        bool saveAs();
+    bool save();
+    bool saveAs();
 
-        quint64 getId(){return id;}
-        QString getDBName(){return db.connectionName();}
+    quint64 getId()
+    {
+        return id;
+    }
+    QString getDBName()
+    {
+        return db.connectionName();
+    }
 
-        /**
-           @brief Serialize object out of a QDataStream
+    /**
+       @brief Serialize object out of a QDataStream
 
-           See CGisSerialization.cpp for implementation
+       See CGisSerialization.cpp for implementation
 
-           @param stream the binary data stream
-           @return The stream object.
-        */
-        QDataStream& operator<<(QDataStream& stream);
+       @param stream the binary data stream
+       @return The stream object.
+     */
+    QDataStream& operator<<(QDataStream& stream);
 
-        /**
-           @brief Serialize object into a QDataStream
+    /**
+       @brief Serialize object into a QDataStream
 
-           See CGisSerialization.cpp for implementation
+       See CGisSerialization.cpp for implementation
 
-           @param stream the binary data stream
-           @return The stream object.
-        */
-        QDataStream& operator>>(QDataStream& stream);
+       @param stream the binary data stream
+       @return The stream object.
+     */
+    QDataStream& operator>>(QDataStream& stream);
 
 
-        void postStatus();
+    void postStatus();
 
-        void showItems(CEvtD2WShowItems * evt);
-        void hideItems(CEvtD2WHideItems * evt);
+    void showItems(CEvtD2WShowItems * evt);
+    void hideItems(CEvtD2WHideItems * evt);
 
-    protected:
-        QSqlDatabase db;
-        quint64 id;
+protected:
+    QSqlDatabase db;
+    quint64 id;
 };
 
 #endif //CDBPROJECT_H
diff --git a/src/gis/db/CLostFoundProject.cpp b/src/gis/db/CLostFoundProject.cpp
index 3f4860b..44be346 100644
--- a/src/gis/db/CLostFoundProject.cpp
+++ b/src/gis/db/CLostFoundProject.cpp
@@ -16,16 +16,16 @@
 
 **********************************************************************************************/
 
-#include "gis/db/CLostFoundProject.h"
 #include "gis/CGisListWks.h"
+#include "gis/db/CLostFoundProject.h"
 #include "gis/db/macros.h"
-#include "gis/wpt/CGisItemWpt.h"
-#include "gis/trk/CGisItemTrk.h"
-#include "gis/rte/CGisItemRte.h"
 #include "gis/ovl/CGisItemOvlArea.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/wpt/CGisItemWpt.h"
 
-#include <QtWidgets>
 #include <QtSql>
+#include <QtWidgets>
 
 
 CLostFoundProject::CLostFoundProject(const QString &dbName, CGisListWks * parent)
@@ -45,7 +45,6 @@ CLostFoundProject::CLostFoundProject(const QString &dbName, CGisListWks * parent
 
 CLostFoundProject::~CLostFoundProject()
 {
-
 }
 
 void CLostFoundProject::updateFromDb()
@@ -54,7 +53,7 @@ void CLostFoundProject::updateFromDb()
 
     QSqlQuery query(db);
     query.prepare("SELECT id, type FROM items AS t1 WHERE NOT EXISTS(SELECT * FROM folder2item WHERE child=t1.id) ORDER BY t1.type, t1.name");
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
 
     while(query.next())
     {
@@ -63,19 +62,23 @@ void CLostFoundProject::updateFromDb()
 
         switch(type)
         {
-            case IGisItem::eTypeWpt:
-                new CGisItemWpt(id, db, this);
-                break;
-            case IGisItem::eTypeTrk:
-                new CGisItemTrk(id, db, this);
-                break;
-            case IGisItem::eTypeRte:
-                new CGisItemRte(id, db, this);
-                break;
-            case IGisItem::eTypeOvl:
-                new CGisItemOvlArea(id, db, this);
-                break;
-            default:;
+        case IGisItem::eTypeWpt:
+            new CGisItemWpt(id, db, this);
+            break;
+
+        case IGisItem::eTypeTrk:
+            new CGisItemTrk(id, db, this);
+            break;
+
+        case IGisItem::eTypeRte:
+            new CGisItemRte(id, db, this);
+            break;
+
+        case IGisItem::eTypeOvl:
+            new CGisItemOvlArea(id, db, this);
+            break;
+
+        default:;
         }
     }
 
diff --git a/src/gis/db/CLostFoundProject.h b/src/gis/db/CLostFoundProject.h
index ceae845..c61bb22 100644
--- a/src/gis/db/CLostFoundProject.h
+++ b/src/gis/db/CLostFoundProject.h
@@ -24,15 +24,17 @@
 
 class CLostFoundProject : public CDBProject
 {
-    public:
-        CLostFoundProject(const QString &dbName, CGisListWks * parent);
+public:
+    CLostFoundProject(const QString &dbName, CGisListWks * parent);
 
-        virtual ~CLostFoundProject();
+    virtual ~CLostFoundProject();
 
-        bool save(){return false;}
-
-        void updateFromDb();
+    bool save()
+    {
+        return false;
+    }
 
+    void updateFromDb();
 };
 
 #endif //CLOSTFOUNDPROJECT_H
diff --git a/src/gis/db/CSetupDatabase.cpp b/src/gis/db/CSetupDatabase.cpp
index c6c49d7..9eba01b 100644
--- a/src/gis/db/CSetupDatabase.cpp
+++ b/src/gis/db/CSetupDatabase.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "gis/db/CSetupDatabase.h"
 #include "gis/CGisListDB.h"
+#include "gis/db/CSetupDatabase.h"
 #include "helpers/CSettings.h"
 
 #include <QtWidgets>
@@ -42,7 +42,6 @@ CSetupDatabase::CSetupDatabase(QString& name, QString& filename, CGisListDB &par
 
 CSetupDatabase::~CSetupDatabase()
 {
-
 }
 
 void CSetupDatabase::slotUpdateButtonBox()
@@ -64,7 +63,6 @@ void CSetupDatabase::slotUpdateButtonBox()
 
 void CSetupDatabase::accept()
 {
-
     name = lineName->text();
     if(list.hasDatabase(name))
     {
diff --git a/src/gis/db/CSetupDatabase.h b/src/gis/db/CSetupDatabase.h
index a00b0e5..492ada6 100644
--- a/src/gis/db/CSetupDatabase.h
+++ b/src/gis/db/CSetupDatabase.h
@@ -19,30 +19,30 @@
 #ifndef CSETUPDATABASE_H
 #define CSETUPDATABASE_H
 
-#include <QDialog>
 #include "ui_ISetupDatabase.h"
+#include <QDialog>
 
 class CGisListDB;
 
 class CSetupDatabase : public QDialog, private Ui::ISetupDatabase
 {
     Q_OBJECT
-    public:
-        CSetupDatabase(QString &name, QString &filename, CGisListDB& parent);
-        virtual ~CSetupDatabase();
-
-    public slots:
-        void accept();
-
-    private slots:
-        void slotNewDB();
-        void slotOpenDB();
-        void slotUpdateButtonBox();
-
-    private:
-        CGisListDB& list;
-        QString& name;
-        QString& filename;
+public:
+    CSetupDatabase(QString &name, QString &filename, CGisListDB& parent);
+    virtual ~CSetupDatabase();
+
+public slots:
+    void accept();
+
+private slots:
+    void slotNewDB();
+    void slotOpenDB();
+    void slotUpdateButtonBox();
+
+private:
+    CGisListDB& list;
+    QString& name;
+    QString& filename;
 };
 
 #endif //CSETUPDATABASE_H
diff --git a/src/gis/db/CSetupFolder.cpp b/src/gis/db/CSetupFolder.cpp
index 524f1ba..17b9b58 100644
--- a/src/gis/db/CSetupFolder.cpp
+++ b/src/gis/db/CSetupFolder.cpp
@@ -32,16 +32,19 @@ CSetupFolder::CSetupFolder(IDBFolder::type_e& type, QString &name, QWidget *pare
     lineName->setText(name);
     switch(type)
     {
-        case IDBFolder::eTypeGroup:
-            radioGroup->setChecked(true);
-            break;
-        case IDBFolder::eTypeProject:
-            radioProject->setChecked(true);
-            break;
-        case IDBFolder::eTypeOther:
-            radioOther->setChecked(true);
-            break;
-        default:;
+    case IDBFolder::eTypeGroup:
+        radioGroup->setChecked(true);
+        break;
+
+    case IDBFolder::eTypeProject:
+        radioProject->setChecked(true);
+        break;
+
+    case IDBFolder::eTypeOther:
+        radioOther->setChecked(true);
+        break;
+
+    default:;
     }
 
     slotNameChanged(name);
@@ -49,7 +52,6 @@ CSetupFolder::CSetupFolder(IDBFolder::type_e& type, QString &name, QWidget *pare
 
 CSetupFolder::~CSetupFolder()
 {
-
 }
 
 void CSetupFolder::accept()
diff --git a/src/gis/db/CSetupFolder.h b/src/gis/db/CSetupFolder.h
index 24f133b..ef29dc6 100644
--- a/src/gis/db/CSetupFolder.h
+++ b/src/gis/db/CSetupFolder.h
@@ -20,26 +20,25 @@
 #define CSETUPFOLDER_H
 
 #include "gis/db/IDBFolder.h"
-#include <QDialog>
 #include "ui_ISetupFolder.h"
+#include <QDialog>
 
 class CSetupFolder : public QDialog, private Ui::ISetupFolder
 {
     Q_OBJECT
-    public:
-        CSetupFolder(IDBFolder::type_e& type, QString& name, QWidget * parent);
-        virtual ~CSetupFolder();
-
-    public slots:
-        void accept();
+public:
+    CSetupFolder(IDBFolder::type_e& type, QString& name, QWidget * parent);
+    virtual ~CSetupFolder();
 
-    private slots:
-        void slotNameChanged(const QString& text);
+public slots:
+    void accept();
 
-    private:
-        IDBFolder::type_e& type;
-        QString& name;
+private slots:
+    void slotNameChanged(const QString& text);
 
+private:
+    IDBFolder::type_e& type;
+    QString& name;
 };
 
 #endif //CSETUPFOLDER_H
diff --git a/src/gis/db/CSetupWorkspace.cpp b/src/gis/db/CSetupWorkspace.cpp
index 92c03ad..b32fdfc 100644
--- a/src/gis/db/CSetupWorkspace.cpp
+++ b/src/gis/db/CSetupWorkspace.cpp
@@ -16,9 +16,9 @@
 
 **********************************************************************************************/
 
+#include "config.h"
 #include "gis/db/CSetupWorkspace.h"
 #include "helpers/CSettings.h"
-#include "config.h"
 
 #include <QtWidgets>
 
@@ -38,7 +38,6 @@ CSetupWorkspace::CSetupWorkspace(QWidget *parent)
 
 CSetupWorkspace::~CSetupWorkspace()
 {
-
 }
 
 void CSetupWorkspace::accept()
diff --git a/src/gis/db/CSetupWorkspace.h b/src/gis/db/CSetupWorkspace.h
index 464b4a9..0a39a06 100644
--- a/src/gis/db/CSetupWorkspace.h
+++ b/src/gis/db/CSetupWorkspace.h
@@ -19,20 +19,19 @@
 #ifndef CSETUPWORKSPACE_H
 #define CSETUPWORKSPACE_H
 
-#include <QDialog>
 #include "ui_ISetupWorkspace.h"
+#include <QDialog>
 
 
 class CSetupWorkspace : public QDialog, private Ui::ISetupWorkspace
 {
     Q_OBJECT
-    public:
-        CSetupWorkspace(QWidget * parent);
-        virtual ~CSetupWorkspace();
-
-    public slots:
-        void accept();
+public:
+    CSetupWorkspace(QWidget * parent);
+    virtual ~CSetupWorkspace();
 
+public slots:
+    void accept();
 };
 
 #endif //CSETUPWORKSPACE_H
diff --git a/src/gis/db/IDB.cpp b/src/gis/db/IDB.cpp
index 9ae2806..cd24a0f 100644
--- a/src/gis/db/IDB.cpp
+++ b/src/gis/db/IDB.cpp
@@ -80,7 +80,7 @@ bool IDB::setupDB(const QString& filename, const QString& connectionName)
 
     query.prepare( "UPDATE folders SET name=:name WHERE id=1");
     query.bindValue(":name", connectionName);
-    QUERY_EXEC(;)
+    QUERY_EXEC(; )
 
     return true;
 }
@@ -93,7 +93,7 @@ bool IDB::initDB()
     {
         query.prepare( "INSERT INTO versioninfo (version, type) VALUES(:version, 'QMapShack')");
         query.bindValue(":version", DB_VERSION);
-        QUERY_EXEC(return false;);
+        QUERY_EXEC(return false;  );
     }
 
     if(!query.exec( "CREATE TABLE folders ("
@@ -130,7 +130,7 @@ bool IDB::initDB()
 
     query.prepare("INSERT INTO folders (type, name, comment) VALUES (2, :name, '')");
     query.bindValue(":name", db.connectionName());
-    QUERY_EXEC(return false;);
+    QUERY_EXEC(return false;  );
 
     if(!query.exec( "CREATE TABLE folder2folder ("
                     "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
@@ -172,7 +172,7 @@ bool IDB::migrateDB(int version)
     }
     query.prepare( "UPDATE versioninfo set version=:version");
     query.bindValue(":version", version - 1);
-    QUERY_EXEC(return false;);
+    QUERY_EXEC(return false;  );
     return true;
 }
 
diff --git a/src/gis/db/IDB.h b/src/gis/db/IDB.h
index fc5fd44..459f082 100644
--- a/src/gis/db/IDB.h
+++ b/src/gis/db/IDB.h
@@ -23,16 +23,16 @@
 
 class IDB
 {
-    public:
-        IDB();
-        virtual ~IDB();
+public:
+    IDB();
+    virtual ~IDB();
 
-    protected:
-        bool setupDB(const QString &filename, const QString &connectionName);
-        bool initDB();
-        bool migrateDB(int version);
+protected:
+    bool setupDB(const QString &filename, const QString &connectionName);
+    bool initDB();
+    bool migrateDB(int version);
 
-        QSqlDatabase db;
+    QSqlDatabase db;
 };
 
 #endif //IDB_H
diff --git a/src/gis/db/IDBFolder.cpp b/src/gis/db/IDBFolder.cpp
index db36df7..828cc1c 100644
--- a/src/gis/db/IDBFolder.cpp
+++ b/src/gis/db/IDBFolder.cpp
@@ -16,40 +16,37 @@
 
 **********************************************************************************************/
 
-#include "gis/db/macros.h"
-#include "gis/db/IDBFolder.h"
+#include "gis/CGisListDB.h"
+#include "gis/CGisWidget.h"
+#include "gis/IGisItem.h"
+#include "gis/db/CDBFolderDatabase.h"
 #include "gis/db/CDBFolderGroup.h"
-#include "gis/db/CDBFolderProject.h"
 #include "gis/db/CDBFolderOther.h"
+#include "gis/db/CDBFolderProject.h"
 #include "gis/db/CDBItem.h"
-#include "gis/db/CDBFolderDatabase.h"
-#include "gis/CGisListDB.h"
-#include "gis/IGisItem.h"
-#include "gis/CGisWidget.h"
+#include "gis/db/IDBFolder.h"
+#include "gis/db/macros.h"
 
 #include <QtSql>
 
 IDBFolder::IDBFolder(bool isLoadable, QSqlDatabase& db, type_e type, quint64 id, QTreeWidgetItem *parent)
-    : QTreeWidgetItem(parent, type)    
+    : QTreeWidgetItem(parent, type)
     , db(db)
     , id(id)
     , isLoadable(isLoadable)
 {
-
 }
 
 IDBFolder::IDBFolder(bool isLoadable, QSqlDatabase& db, type_e type, quint64 id, QTreeWidget * parent)
-    : QTreeWidgetItem(parent, type)    
+    : QTreeWidgetItem(parent, type)
     , db(db)
     , id(id)
     , isLoadable(isLoadable)
 {
-
 }
 
 IDBFolder::~IDBFolder()
 {
-
 }
 
 bool IDBFolder::operator<(const QTreeWidgetItem &other) const
@@ -70,10 +67,13 @@ IDBFolder * IDBFolder::createFolderByType(QSqlDatabase& db, int type, quint64 id
     {
     case eTypeGroup:
         return new CDBFolderGroup(db, id, parent);
+
     case eTypeProject:
         return new CDBFolderProject(db, id, parent);
+
     case eTypeOther:
         return new CDBFolderOther(db, id, parent);
+
     default:
         return 0;
     }
@@ -105,10 +105,10 @@ void IDBFolder::addFolder(type_e type, const QString& name)
     query.prepare("INSERT INTO folders (name, type) VALUES (:name, :type)");
     query.bindValue(":name", name);
     query.bindValue(":type", type);
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
 
     query.prepare("SELECT last_insert_rowid() from folders");
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
     query.next();
     quint64 idChild = query.value(0).toULongLong();
     if(idChild == 0)
@@ -120,7 +120,7 @@ void IDBFolder::addFolder(type_e type, const QString& name)
     query.prepare("INSERT INTO folder2folder (parent, child) VALUES (:parent, :child)");
     query.bindValue(":parent", id);
     query.bindValue(":child", idChild);
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
 
     IDBFolder::createFolderByType(db, type, idChild, this);
 }
@@ -136,7 +136,6 @@ void IDBFolder::expanding()
 
 void IDBFolder::update(CEvtW2DAckInfo * info)
 {
-
     if(info->id != id)
     {
         // forward call if not for local ID
@@ -157,7 +156,7 @@ void IDBFolder::update(CEvtW2DAckInfo * info)
     // update text and tooltip
     query.prepare("SELECT name, comment FROM folders WHERE id=:id");
     query.bindValue(":id", id);
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
     query.next();
 
     setText(CGisListDB::eColumnName, query.value(0).toString());
@@ -166,7 +165,7 @@ void IDBFolder::update(CEvtW2DAckInfo * info)
     // count folders linked to this folder
     query.prepare("SELECT COUNT() FROM folder2folder WHERE parent=:id");
     query.bindValue(":id", id);
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
     query.next();
 
     qint32 nFolders = query.value(0).toInt();
@@ -174,7 +173,7 @@ void IDBFolder::update(CEvtW2DAckInfo * info)
     // count items linked to this folder
     query.prepare("SELECT COUNT() FROM folder2item WHERE parent=:id");
     query.bindValue(":id", id);
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
     query.next();
 
     qint32 nItems = query.value(0).toInt();
@@ -192,7 +191,7 @@ void IDBFolder::update(CEvtW2DAckInfo * info)
     if(isExpanded())
     {
         qDeleteAll(takeChildren());
-        addChildren(info->keysChildren);        
+        addChildren(info->keysChildren);
     }
 }
 
@@ -213,7 +212,7 @@ void IDBFolder::toggle()
             query.prepare("SELECT t1.child, t2.type FROM folder2item AS t1, items AS t2 WHERE t1.parent = :id AND t2.id = t1.child ORDER BY t2.id");
             query.bindValue(":id", getId());
         }
-        QUERY_EXEC(return);
+        QUERY_EXEC(return );
 
         CEvtD2WShowItems * evt2 = new CEvtD2WShowItems(getId(), getDBName());
         while(query.next())
@@ -231,7 +230,6 @@ void IDBFolder::toggle()
 
 void IDBFolder::remove()
 {
-
     IDBFolder * folder = dynamic_cast<IDBFolder*>(parent());
     if(folder == 0)
     {
@@ -254,7 +252,7 @@ void IDBFolder::setupFromDB()
 
     query.prepare("SELECT key, name, comment FROM folders WHERE id=:id");
     query.bindValue(":id", id);
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
     query.next();
 
     key = query.value(0).toString();
@@ -263,7 +261,7 @@ void IDBFolder::setupFromDB()
 
     query.prepare("SELECT EXISTS(SELECT 1 FROM folder2folder WHERE parent=:id LIMIT 1)");
     query.bindValue(":id", id);
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
     query.next();
 
     if(query.value(0).toInt() == 1)
@@ -274,7 +272,7 @@ void IDBFolder::setupFromDB()
     {
         query.prepare("SELECT EXISTS(SELECT 1 FROM folder2item WHERE parent=:id LIMIT 1)");
         query.bindValue(":id", id);
-        QUERY_EXEC(return);
+        QUERY_EXEC(return );
         query.next();
         if(query.value(0).toInt() == 1)
         {
@@ -297,7 +295,7 @@ void IDBFolder::addChildren(const QSet<QString>& activeChildren)
     // folders 1st
     query.prepare("SELECT t1.child, t2.type FROM folder2folder AS t1, folders AS t2 WHERE t1.parent = :id AND t2.id = t1.child ORDER BY t2.id");
     query.bindValue(":id", id);
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
     while(query.next())
     {
         quint64 idChild     = query.value(0).toULongLong();
@@ -311,7 +309,7 @@ void IDBFolder::addChildren(const QSet<QString>& activeChildren)
     query.prepare("SELECT t1.child FROM folder2item AS t1, items AS t2 WHERE t1.parent = :id AND t2.id = t1.child AND t2.type=:type ORDER BY t2.id");
     query.bindValue(":id", id);
     query.bindValue(":type", IGisItem::eTypeTrk);
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
     while(query.next())
     {
         quint64 idChild = query.value(0).toULongLong();
@@ -323,7 +321,7 @@ void IDBFolder::addChildren(const QSet<QString>& activeChildren)
     query.prepare("SELECT t1.child FROM folder2item AS t1, items AS t2 WHERE t1.parent = :id AND t2.id = t1.child AND t2.type=:type ORDER BY t2.id");
     query.bindValue(":id", id);
     query.bindValue(":type", IGisItem::eTypeRte);
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
     while(query.next())
     {
         quint64 idChild = query.value(0).toULongLong();
@@ -335,7 +333,7 @@ void IDBFolder::addChildren(const QSet<QString>& activeChildren)
     query.prepare("SELECT t1.child FROM folder2item AS t1, items AS t2 WHERE t1.parent = :id AND t2.id = t1.child AND t2.type=:type ORDER BY t2.id");
     query.bindValue(":id", id);
     query.bindValue(":type", IGisItem::eTypeWpt);
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
     while(query.next())
     {
         quint64 idChild = query.value(0).toULongLong();
@@ -347,7 +345,7 @@ void IDBFolder::addChildren(const QSet<QString>& activeChildren)
     query.prepare("SELECT t1.child FROM folder2item AS t1, items AS t2 WHERE t1.parent = :id AND t2.id = t1.child AND t2.type=:type ORDER BY t2.id");
     query.bindValue(":id", id);
     query.bindValue(":type", IGisItem::eTypeOvl);
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
     while(query.next())
     {
         quint64 idChild = query.value(0).toULongLong();
@@ -363,17 +361,17 @@ void IDBFolder::remove(quint64 idParent, quint64 idFolder)
     query.prepare("DELETE FROM folder2folder WHERE parent=:parent AND child=:child");
     query.bindValue(":parent", idParent);
     query.bindValue(":child", idFolder);
-    QUERY_EXEC(;);
+    QUERY_EXEC(; );
 
     query.prepare("SELECT EXISTS(SELECT 1 FROM folder2folder WHERE child=:id LIMIT 1)");
     query.bindValue(":id", idFolder);
-    QUERY_EXEC(;);
+    QUERY_EXEC(; );
     // if there is no other relation delete the children, too.
     if(!query.next() || (query.value(0).toInt() == 0))
     {
         query.prepare("SELECT child FROM folder2folder WHERE parent=:id");
         query.bindValue(":id", idFolder);
-        QUERY_EXEC(;);
+        QUERY_EXEC(; );
         while(query.next())
         {
             remove(idFolder, query.value(0).toULongLong());
@@ -382,11 +380,11 @@ void IDBFolder::remove(quint64 idParent, quint64 idFolder)
         // remove the child items relations
         query.prepare("DELETE FROM folder2item WHERE parent=:id");
         query.bindValue(":id", idFolder);
-        QUERY_EXEC(;);
+        QUERY_EXEC(; );
 
         // and remove the folder
         query.prepare("DELETE FROM folders WHERE id=:id");
         query.bindValue(":id", idFolder);
-        QUERY_EXEC(;);
+        QUERY_EXEC(; );
     }
 }
diff --git a/src/gis/db/IDBFolder.h b/src/gis/db/IDBFolder.h
index c0c1138..e8bb862 100644
--- a/src/gis/db/IDBFolder.h
+++ b/src/gis/db/IDBFolder.h
@@ -19,8 +19,8 @@
 #ifndef IDBFOLDER_H
 #define IDBFOLDER_H
 
-#include <QTreeWidgetItem>
 #include <QSqlDatabase>
+#include <QTreeWidgetItem>
 
 class QSqlDatabase;
 class CEvtW2DAckInfo;
@@ -29,46 +29,47 @@ class CDBItem;
 
 class IDBFolder : public QTreeWidgetItem
 {
-    public:
-        enum type_e
-        {
-             eTypeLostFound = 1
-            ,eTypeDatabase = 2
-            ,eTypeGroup = 3
-            ,eTypeProject = 4
-            ,eTypeOther = 5
-        };
-
-        IDBFolder(bool isLoadable, QSqlDatabase& db, type_e type, quint64 id, QTreeWidgetItem * parent);
-        IDBFolder(bool isLoadable, QSqlDatabase& db, type_e type, quint64 id, QTreeWidget * parent);
-        virtual ~IDBFolder();
-
-        quint64 getId(){return id;}
-        QString getDBName();
-        CDBFolderDatabase * getDBFolder();
-
-        virtual void addFolder(type_e type, const QString &name);
-        virtual void expanding();
-        virtual void update(CEvtW2DAckInfo * info);
-        virtual void toggle();
-        virtual void remove();
-
-        static IDBFolder * createFolderByType(QSqlDatabase &db, int type, quint64 id, QTreeWidgetItem *parent);
-
-        bool operator<(const QTreeWidgetItem &other) const;
-
-    protected:        
-        virtual void setupFromDB();
-        virtual void addChildren(const QSet<QString> &activeChildren);
-        virtual void remove(quint64 idParent, quint64 idFolder);
-
-        QSqlDatabase& db;
-
-        quint64 id;
-        QString key;
-        bool isLoadable;        
-
-
+public:
+    enum type_e
+    {
+        eTypeLostFound = 1
+        ,eTypeDatabase = 2
+        ,eTypeGroup = 3
+        ,eTypeProject = 4
+        ,eTypeOther = 5
+    };
+
+    IDBFolder(bool isLoadable, QSqlDatabase& db, type_e type, quint64 id, QTreeWidgetItem * parent);
+    IDBFolder(bool isLoadable, QSqlDatabase& db, type_e type, quint64 id, QTreeWidget * parent);
+    virtual ~IDBFolder();
+
+    quint64 getId()
+    {
+        return id;
+    }
+    QString getDBName();
+    CDBFolderDatabase * getDBFolder();
+
+    virtual void addFolder(type_e type, const QString &name);
+    virtual void expanding();
+    virtual void update(CEvtW2DAckInfo * info);
+    virtual void toggle();
+    virtual void remove();
+
+    static IDBFolder * createFolderByType(QSqlDatabase &db, int type, quint64 id, QTreeWidgetItem *parent);
+
+    bool operator<(const QTreeWidgetItem &other) const;
+
+protected:
+    virtual void setupFromDB();
+    virtual void addChildren(const QSet<QString> &activeChildren);
+    virtual void remove(quint64 idParent, quint64 idFolder);
+
+    QSqlDatabase& db;
+
+    quint64 id;
+    QString key;
+    bool isLoadable;
 };
 
 #endif //IDBFOLDER_H
diff --git a/src/gis/db/ISetupWorkspace.ui b/src/gis/db/ISetupWorkspace.ui
index 636bede..ad01854 100644
--- a/src/gis/db/ISetupWorkspace.ui
+++ b/src/gis/db/ISetupWorkspace.ui
@@ -11,7 +11,7 @@
    </rect>
   </property>
   <property name="windowTitle">
-   <string>Setup database...</string>
+   <string>Setup workspace...</string>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout_2">
    <item>
diff --git a/src/gis/db/macros.h b/src/gis/db/macros.h
index d66359f..3d7c630 100644
--- a/src/gis/db/macros.h
+++ b/src/gis/db/macros.h
@@ -22,20 +22,20 @@
 #define DB_VERSION 1
 
 #define QUERY_EXEC(cmd) \
-if(!query.exec())\
-{ \
-    qDebug() << query.lastQuery();\
-    qDebug() << query.lastError();\
-    cmd;\
-}\
+    if(!query.exec()) \
+    { \
+        qDebug() << query.lastQuery(); \
+        qDebug() << query.lastError(); \
+        cmd; \
+    } \
 
 #define PROGRESS_SETUP(lbl, max) \
-QProgressDialog progress(lbl, "Abort", 0, max, 0);\
-progress.setWindowModality(Qt::WindowModal);\
+    QProgressDialog progress(lbl, "Abort", 0, max, 0); \
+    progress.setWindowModality(Qt::WindowModal); \
 
 #define PROGRESS(x, cmd) \
-progress.setValue(x); \
-if (progress.wasCanceled()) cmd;\
+    progress.setValue(x); \
+    if (progress.wasCanceled()) { cmd; } \
 
 
 #endif //MACROS_H
diff --git a/src/gis/gpx/CGpxProject.cpp b/src/gis/gpx/CGpxProject.cpp
index c4d5fb4..a94c385 100644
--- a/src/gis/gpx/CGpxProject.cpp
+++ b/src/gis/gpx/CGpxProject.cpp
@@ -16,14 +16,14 @@
 
 **********************************************************************************************/
 
+#include "gis/CGisDraw.h"
+#include "gis/CGisListWks.h"
 #include "gis/gpx/CGpxProject.h"
+#include "gis/ovl/CGisItemOvlArea.h"
 #include "gis/qms/CQmsProject.h"
-#include "gis/CGisListWks.h"
-#include "gis/wpt/CGisItemWpt.h"
-#include "gis/trk/CGisItemTrk.h"
 #include "gis/rte/CGisItemRte.h"
-#include "gis/ovl/CGisItemOvlArea.h"
-#include "gis/CGisDraw.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/wpt/CGisItemWpt.h"
 #include "helpers/CSettings.h"
 
 
@@ -32,7 +32,7 @@
 
 CGpxProject::CGpxProject(const QString &filename, CGisListWks *parent)
     : IGisProject(eTypeGpx, filename, parent)
-{               
+{
     setIcon(CGisListWks::eColumnName,QIcon("://icons/32x32/GpxProject.png"));
 
     // cerate file instance
@@ -85,7 +85,7 @@ CGpxProject::CGpxProject(const QString &filename, CGisListWks *parent)
 
     /** @note   If you change the order of the item types read you have to
                 take care of the order enforced in IGisItem().
-    */
+     */
     const QDomNodeList& xmlTrks = xmlGpx.elementsByTagName("trk");
     N = xmlTrks.count();
     for(int n = 0; n < N; ++n)
@@ -126,7 +126,6 @@ CGpxProject::CGpxProject(const QString &filename, CGisListWks *parent)
 
 CGpxProject::~CGpxProject()
 {
-
 }
 
 bool CGpxProject::save()
@@ -172,7 +171,6 @@ bool CGpxProject::saveAs()
         {
             markAsSaved();
         }
-
     }
     else if(filter == "*.qms")
     {
@@ -214,7 +212,7 @@ bool CGpxProject::saveAs(const QString& fn, IGisProject& project)
             int column;
             if(xml.setContent(&file, false, &msg, &line, &column))
             {
-                const  QDomElement& docElem = xml.documentElement();
+                const QDomElement& docElem = xml.documentElement();
                 const QDomNamedNodeMap& attr = docElem.attributes();
                 if(!attr.namedItem("creator").nodeValue().startsWith("QMapShack"))
                 {
@@ -229,13 +227,13 @@ bool CGpxProject::saveAs(const QString& fn, IGisProject& project)
         catch(int)
         {
             int res = QMessageBox::warning(0,QObject::tr("File exists ...")
-                ,QObject::tr("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>")
-                ,QMessageBox::Yes|QMessageBox::No,QMessageBox::No);
+                                           ,QObject::tr("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>")
+                                           ,QMessageBox::Yes|QMessageBox::No,QMessageBox::No);
             if(res == QMessageBox::No)
             {
                 return false;
diff --git a/src/gis/gpx/CGpxProject.h b/src/gis/gpx/CGpxProject.h
index 46d2fff..655bfd4 100644
--- a/src/gis/gpx/CGpxProject.h
+++ b/src/gis/gpx/CGpxProject.h
@@ -21,8 +21,8 @@
 
 #include "gis/prj/IGisProject.h"
 
-#include <QDomElement>
 #include <QDateTime>
+#include <QDomElement>
 #include <QUrl>
 
 class CGisListWks;
@@ -31,22 +31,21 @@ class CGisDraw;
 
 class CGpxProject : public IGisProject
 {
-    public:
-        CGpxProject(const QString &filename, CGisListWks * parent);
-        virtual ~CGpxProject();
-
-        bool save();
-        bool saveAs();
+public:
+    CGpxProject(const QString &filename, CGisListWks * parent);
+    virtual ~CGpxProject();
 
-        static bool saveAs(const QString& fn, IGisProject& project);
+    bool save();
+    bool saveAs();
 
+    static bool saveAs(const QString& fn, IGisProject& project);
 
-    private:
-        void saveGpx(const QString& fn);
 
+private:
+    void saveGpx(const QString& fn);
 
-        QDomElement xmlGpx;
 
+    QDomElement xmlGpx;
 };
 
 #endif //CGPXPROJECT_H
diff --git a/src/gis/gpx/serialization.cpp b/src/gis/gpx/serialization.cpp
index 307e39c..5116e68 100644
--- a/src/gis/gpx/serialization.cpp
+++ b/src/gis/gpx/serialization.cpp
@@ -16,12 +16,12 @@
 
 **********************************************************************************************/
 
+#include "gis/WptIcons.h"
+#include "gis/ovl/CGisItemOvlArea.h"
 #include "gis/prj/IGisProject.h"
-#include "gis/wpt/CGisItemWpt.h"
-#include "gis/trk/CGisItemTrk.h"
 #include "gis/rte/CGisItemRte.h"
-#include "gis/ovl/CGisItemOvlArea.h"
-#include "gis/WptIcons.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/wpt/CGisItemWpt.h"
 #include "version.h"
 
 #include <QtXml>
@@ -134,7 +134,6 @@ static void readXml(const QDomNode& xml, const QString& tag, QString& value, boo
             value = "<pre>" + xml.namedItem(tag).toElement().text() + "</pre>";
             value = xml.namedItem(tag).toElement().text();
         }
-
     }
 }
 
@@ -144,7 +143,6 @@ static void readXml(const QDomNode& xml, const QString& tag, QDateTime& value)
     {
         QString time = xml.namedItem(tag).toElement().text();
         IUnit::parseTimestamp(time, value);
-
     }
 }
 
@@ -257,7 +255,6 @@ static void writeXml(QDomNode& xml, const QString& tag, const QString& val, bool
         QDomText text = xml.ownerDocument().createCDATASection(val);
         elem.appendChild(text);
         elem.setAttribute("html",isHtml ? "True" : "False");
-
     }
 }
 
@@ -303,7 +300,6 @@ static void writeXml(QDomNode& xml, const IGisItem::history_t& history)
             writeXml(xmlEvent,"ql:icon", event.icon);
             writeXml(xmlEvent,"ql:time", event.time);
             writeXml(xmlEvent,"ql:comment", event.comment);
-
         }
     }
 }
@@ -311,7 +307,6 @@ static void writeXml(QDomNode& xml, const IGisItem::history_t& history)
 
 void IGisProject::readMetadata(const QDomNode& xml, metadata_t& metadata)
 {
-
     readXml(xml,"name", metadata.name);
     readXml(xml,"desc", metadata.desc);
 
@@ -376,11 +371,11 @@ QDomNode IGisProject::writeMetadata(QDomDocument& doc)
     gpx.setAttribute("xmlns:ql",ql_ns);
 
     QString schemaLocation = QString()
-        + gpx_ns    + " http://www.topografix.com/GPX/1/1/gpx.xsd "
-        + gpxx_ns   + " http://www.garmin.com/xmlschemas/GpxExtensionsv3.xsd "
-        + gpxtpx_ns + " http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd "
-        + wptx1_ns  + " http://www.garmin.com/xmlschemas/WaypointExtensionv1.xsd"
-        + ql_ns     + " http://www.qlandkarte.org/xmlschemas/v1.1/ql-extensions.xsd";
+                             + gpx_ns    + " http://www.topografix.com/GPX/1/1/gpx.xsd "
+                             + gpxx_ns   + " http://www.garmin.com/xmlschemas/GpxExtensionsv3.xsd "
+                             + gpxtpx_ns + " http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd "
+                             + wptx1_ns  + " http://www.garmin.com/xmlschemas/WaypointExtensionv1.xsd"
+                             + ql_ns     + " http://www.qlandkarte.org/xmlschemas/v1.1/ql-extensions.xsd";
 
     gpx.setAttribute("xsi:schemaLocation", schemaLocation);
 
@@ -413,7 +408,6 @@ QDomNode IGisProject::writeMetadata(QDomDocument& doc)
             xmlLink.setAttribute("href", metadata.author.link.uri.toString());
             writeXml(xmlLink, "text", metadata.author.link.text);
             writeXml(xmlLink, "type", metadata.author.link.type);
-
         }
     }
 
@@ -425,7 +419,6 @@ QDomNode IGisProject::writeMetadata(QDomDocument& doc)
         xmlCopyright.setAttribute("author", metadata.copyright.author);
         writeXml(xmlCopyright, "year", metadata.copyright.year);
         writeXml(xmlCopyright, "license", metadata.copyright.license);
-
     }
     writeXml(xmlMetadata, "link", metadata.links);
     writeXml(xmlMetadata, "time", metadata.time);
@@ -440,7 +433,6 @@ QDomNode IGisProject::writeMetadata(QDomDocument& doc)
         xmlBounds.setAttribute("minlon", metadata.bounds.left());
         xmlBounds.setAttribute("maxlat", metadata.bounds.top());
         xmlBounds.setAttribute("maxlon", metadata.bounds.right());
-
     }
 
     return gpx;
@@ -557,7 +549,6 @@ void CGisItemWpt::readGcExt(const QDomNode& xmlCache)
         readXml(xmlLog, "groundspeak:text", log.text, log.textIsHtml);
 
         geocache.logs << log;
-
     }
     geocache.hasData = true;
 }
@@ -603,7 +594,7 @@ void CGisItemWpt::writeGcExt(QDomNode& xmlCache)
         QDomElement xmlLogs = xmlCache.ownerDocument().createElement("groundspeak:logs");
         xmlCache.appendChild(xmlLogs);
 
-        foreach(const geocachelog_t& log, geocache.logs)
+        foreach(const geocachelog_t &log, geocache.logs)
         {
             QDomElement xmlLog = xmlCache.ownerDocument().createElement("groundspeak:log");
             xmlLogs.appendChild(xmlLog);
@@ -678,7 +669,6 @@ void CGisItemTrk::readTrk(const QDomNode& xml, trk_t& trk)
 
 void CGisItemTrk::save(QDomNode& gpx)
 {
-
     QDomDocument doc = gpx.ownerDocument();
 
     QDomElement xmlTrk = doc.createElement("trk");
@@ -704,12 +694,12 @@ void CGisItemTrk::save(QDomNode& gpx)
     xmlExt.appendChild(gpxx);
     writeXml(gpxx, "gpxx:DisplayColor", trk.color);
 
-    foreach(const trkseg_t& seg, trk.segs)
+    foreach(const trkseg_t &seg, trk.segs)
     {
         QDomElement xmlTrkseg = doc.createElement("trkseg");
         xmlTrk.appendChild(xmlTrkseg);
 
-        foreach(const trkpt_t& pt, seg.pts)
+        foreach(const trkpt_t &pt, seg.pts)
         {
             QDomElement xmlTrkpt = doc.createElement("trkpt");
             xmlTrkseg.appendChild(xmlTrkpt);
@@ -724,7 +714,6 @@ void CGisItemTrk::save(QDomNode& gpx)
 
 void CGisItemRte::readRte(const QDomNode& xml, rte_t& rte)
 {
-
     readXml(xml, "name", rte.name);
     readXml(xml, "cmt", rte.cmt);
     readXml(xml, "desc", rte.desc);
@@ -773,13 +762,12 @@ void CGisItemRte::save(QDomNode& gpx)
     xmlRte.appendChild(xmlExt);
     writeXml(xmlExt, "ql:key", key.item);
 
-    foreach(const rtept_t& pt, rte.pts)
+    foreach(const rtept_t &pt, rte.pts)
     {
         QDomElement xmlRtept = doc.createElement("rtept");
         xmlRte.appendChild(xmlRtept);
         writeWpt(xmlRtept, pt);
     }
-
 }
 
 void CGisItemOvlArea::readArea(const QDomNode& xml, area_t& area)
@@ -840,7 +828,7 @@ void CGisItemOvlArea::save(QDomNode& gpx)
     writeXml(xmlArea, history);
 
 
-    foreach(const pt_t& pt, area.pts)
+    foreach(const pt_t &pt, area.pts)
     {
         QDomElement xmlPt = doc.createElement("ql:point");
         xmlArea.appendChild(xmlPt);
@@ -884,7 +872,6 @@ void IGisItem::readWpt(const QDomNode& xml, wpt_t& wpt)
 
         wpt.links << link;
     }
-
 }
 
 
@@ -915,5 +902,4 @@ void IGisItem::writeWpt(QDomElement& xml, const wpt_t& wpt)
     writeXml(xml, "pdop", wpt.pdop);
     writeXml(xml, "ageofdgpsdata", wpt.ageofdgpsdata);
     writeXml(xml, "dgpsid", wpt.dgpsid);
-
 }
diff --git a/src/gis/ovl/CDetailsOvlArea.cpp b/src/gis/ovl/CDetailsOvlArea.cpp
index f43ef95..a2646f6 100644
--- a/src/gis/ovl/CDetailsOvlArea.cpp
+++ b/src/gis/ovl/CDetailsOvlArea.cpp
@@ -16,11 +16,11 @@
 
 **********************************************************************************************/
 
+#include "GeoMath.h"
 #include "gis/ovl/CDetailsOvlArea.h"
 #include "gis/ovl/CGisItemOvlArea.h"
-#include "helpers/CTextEditWidget.h"
 #include "helpers/CLinksDialog.h"
-#include "GeoMath.h"
+#include "helpers/CTextEditWidget.h"
 
 
 #include <QtWidgets>
@@ -71,7 +71,6 @@ CDetailsOvlArea::CDetailsOvlArea(CGisItemOvlArea &area, QWidget * parent)
 
 CDetailsOvlArea::~CDetailsOvlArea()
 {
-
 }
 
 
@@ -147,10 +146,9 @@ void CDetailsOvlArea::slotLinkActivated(const QUrl& url)
         dlg.setHtml(area.getComment());
         if(dlg.exec() == QDialog::Accepted)
         {
-            area.setComment(dlg.getHtml());            
+            area.setComment(dlg.getHtml());
         }
         setupGui();
-
     }
     else if(url.toString() == "description")
     {
@@ -158,7 +156,7 @@ void CDetailsOvlArea::slotLinkActivated(const QUrl& url)
         dlg.setHtml(area.getDescription());
         if(dlg.exec() == QDialog::Accepted)
         {
-            area.setDescription(dlg.getHtml());            
+            area.setDescription(dlg.getHtml());
         }
         setupGui();
     }
@@ -200,7 +198,7 @@ void CDetailsOvlArea::setupGui()
     }
 
 
-    labelName->setText(IGisItem::toLink(isReadOnly, "name", area.getName()));
+    labelName->setText(IGisItem::toLink(isReadOnly, "name", area.getName(), ""));
 
     comboColor->setCurrentIndex(area.getColorIdx());
     comboColor->setEnabled(!isReadOnly);
@@ -213,8 +211,8 @@ void CDetailsOvlArea::setupGui()
 
     textCmtDesc->document()->clear();
     textCmtDesc->append(IGisItem::createText(isReadOnly, area.getComment(), area.getDescription(), area.getLinks()));
-    textCmtDesc->moveCursor (QTextCursor::Start) ;
-    textCmtDesc->ensureCursorVisible() ;
+    textCmtDesc->moveCursor (QTextCursor::Start);
+    textCmtDesc->ensureCursorVisible();
 
     int idx = 0;
     QList<QTreeWidgetItem*> items;
diff --git a/src/gis/ovl/CDetailsOvlArea.h b/src/gis/ovl/CDetailsOvlArea.h
index 2fbe401..88fc362 100644
--- a/src/gis/ovl/CDetailsOvlArea.h
+++ b/src/gis/ovl/CDetailsOvlArea.h
@@ -19,39 +19,39 @@
 #ifndef CDETAILSOVLAREA_H
 #define CDETAILSOVLAREA_H
 
-#include <QDialog>
 #include "ui_IDetailsOvlArea.h"
+#include <QDialog>
 
 class CGisItemOvlArea;
 
 class CDetailsOvlArea : public QDialog, private Ui::IDetailsOvlArea
 {
     Q_OBJECT
-    public:
-        CDetailsOvlArea(CGisItemOvlArea &area, QWidget * parent);
-        virtual ~CDetailsOvlArea();
-
-    private slots:
-        void slotSetColor(int idx);
-        void slotSetWidth(int idx);
-        void slotSetStyle(int idx);
-        void slotOpyacity(bool yes);
-        void slotChangeReadOnlyMode(bool on);
-        void slotLinkActivated(const QUrl& url);
-        void slotLinkActivated(const QString& link);
-        void setupGui();
-
-    private:        
-        enum columns_t
-        {
-            eColNum
-            ,eColPosition
-            ,eColMax
-        };
-
-        CGisItemOvlArea& area;
-
-        bool originator;
+public:
+    CDetailsOvlArea(CGisItemOvlArea &area, QWidget * parent);
+    virtual ~CDetailsOvlArea();
+
+private slots:
+    void slotSetColor(int idx);
+    void slotSetWidth(int idx);
+    void slotSetStyle(int idx);
+    void slotOpyacity(bool yes);
+    void slotChangeReadOnlyMode(bool on);
+    void slotLinkActivated(const QUrl& url);
+    void slotLinkActivated(const QString& link);
+    void setupGui();
+
+private:
+    enum columns_t
+    {
+        eColNum
+        ,eColPosition
+        ,eColMax
+    };
+
+    CGisItemOvlArea& area;
+
+    bool originator;
 };
 
 #endif //CDETAILSOVLAREA_H
diff --git a/src/gis/ovl/CGisItemOvlArea.cpp b/src/gis/ovl/CGisItemOvlArea.cpp
index 859c691..06f423a 100644
--- a/src/gis/ovl/CGisItemOvlArea.cpp
+++ b/src/gis/ovl/CGisItemOvlArea.cpp
@@ -16,13 +16,13 @@
 
 **********************************************************************************************/
 
+#include "GeoMath.h"
+#include "gis/CGisDraw.h"
+#include "gis/CGisListWks.h"
+#include "gis/ovl/CDetailsOvlArea.h"
 #include "gis/ovl/CGisItemOvlArea.h"
 #include "gis/ovl/CScrOptOvlArea.h"
-#include "gis/ovl/CDetailsOvlArea.h"
 #include "gis/prj/IGisProject.h"
-#include "gis/CGisDraw.h"
-#include "gis/CGisListWks.h"
-#include "GeoMath.h"
 
 #include <QtWidgets>
 #include <proj_api.h>
@@ -33,7 +33,7 @@
 
 const QColor CGisItemOvlArea::lineColors[OVL_N_COLORS] =
 {
-     Qt::black                    // 0
+    Qt::black                     // 0
     ,Qt::darkRed                 // 1
     ,Qt::darkGreen               // 2
     ,Qt::darkYellow              // 3
@@ -54,38 +54,37 @@ const QColor CGisItemOvlArea::lineColors[OVL_N_COLORS] =
 
 const QString CGisItemOvlArea::bulletColors[OVL_N_COLORS] =
 {
-
-                                 // 0
+    // 0
     QString("://icons/8x8/bullet_black.png")
-                                 // 1
+    // 1
     ,QString("://icons/8x8/bullet_dark_red.png")
-                                 // 2
+    // 2
     ,QString("://icons/8x8/bullet_dark_green.png")
-                                 // 3
+    // 3
     ,QString("://icons/8x8/bullet_dark_yellow.png")
-                                 // 4
+    // 4
     ,QString("://icons/8x8/bullet_dark_blue.png")
-                                 // 5
+    // 5
     ,QString("://icons/8x8/bullet_dark_magenta.png")
-                                 // 6
+    // 6
     ,QString("://icons/8x8/bullet_dark_cyan.png")
-                                 // 7
+    // 7
     ,QString("://icons/8x8/bullet_gray.png")
-                                 // 8
+    // 8
     ,QString("://icons/8x8/bullet_dark_gray.png")
-                                 // 9
+    // 9
     ,QString("://icons/8x8/bullet_red.png")
-                                 // 10
+    // 10
     ,QString("://icons/8x8/bullet_green.png")
-                                 // 11
+    // 11
     ,QString("://icons/8x8/bullet_yellow.png")
-                                 // 12
+    // 12
     ,QString("://icons/8x8/bullet_blue.png")
-                                 // 13
+    // 13
     ,QString("://icons/8x8/bullet_magenta.png")
-                                 // 14
+    // 14
     ,QString("://icons/8x8/bullet_cyan.png")
-                                 // 15
+    // 15
     ,QString("://icons/8x8/bullet_white.png")
     ,QString("")                 // 16
 };
@@ -125,8 +124,6 @@ CGisItemOvlArea::CGisItemOvlArea(const QPolygonF& line, const QString &name, IGi
     flags |=  eFlagCreatedInQms|eFlagWriteAllowed;
 
     setColor(str2color(""));
-    genKey();
-
     setupHistory();
     updateDecoration(eMarkChanged, eMarkNone);
 }
@@ -142,10 +139,10 @@ CGisItemOvlArea::CGisItemOvlArea(const CGisItemOvlArea& parentArea, IGisProject
     if(clone)
     {
         area.name += QObject::tr("_Clone");
-        key.item.clear();
+        key.clear();
+        history.events.clear();
     }
 
-
     setupHistory();
     updateDecoration(eMarkChanged, eMarkNone);
 }
@@ -159,7 +156,7 @@ CGisItemOvlArea::CGisItemOvlArea(const QDomNode &xml, IGisProject *project)
     setColor(penForeground.color());
     readArea(xml, area);
     // --- stop read and process data ----
-    genKey();
+
     setupHistory();
     updateDecoration(eMarkNone, eMarkNone);
 }
@@ -197,7 +194,7 @@ void CGisItemOvlArea::setSymbol()
 
 bool CGisItemOvlArea::isCloseTo(const QPointF& pos)
 {
-    foreach(const QPointF& pt, line)
+    foreach(const QPointF &pt, line)
     {
         if((pt - pos).manhattanLength() < MIN_DIST_CLOSE_TO)
         {
@@ -211,8 +208,8 @@ QPointF CGisItemOvlArea::getPointCloseBy(const QPoint& screenPos)
 {
     qint32 i    = 0;
     qint32 idx  = -1;
-    qint32  d   = NOINT;
-    foreach(const QPointF& point, line)
+    qint32 d   = NOINT;
+    foreach(const QPointF &point, line)
     {
         int tmp = (screenPos - point).manhattanLength();
         if(tmp < d)
@@ -264,12 +261,24 @@ void CGisItemOvlArea::deriveSecondaryData()
     qreal south =  90;
     qreal west  =  180;
 
-    foreach(const pt_t& pt, area.pts)
+    foreach(const pt_t &pt, area.pts)
     {
-        if(pt.lon < west)  west    = pt.lon;
-        if(pt.lon > east)  east    = pt.lon;
-        if(pt.lat < south) south   = pt.lat;
-        if(pt.lat > north) north   = pt.lat;
+        if(pt.lon < west)
+        {
+            west    = pt.lon;
+        }
+        if(pt.lon > east)
+        {
+            east    = pt.lon;
+        }
+        if(pt.lat < south)
+        {
+            south   = pt.lat;
+        }
+        if(pt.lat > north)
+        {
+            north   = pt.lat;
+        }
     }
 
     boundingRect = QRectF(QPointF(west * DEG_TO_RAD, north * DEG_TO_RAD), QPointF(east * DEG_TO_RAD,south * DEG_TO_RAD));
@@ -311,7 +320,7 @@ void CGisItemOvlArea::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRe
 
     QPointF pt1;
 
-    foreach(const pt_t& pt, area.pts)
+    foreach(const pt_t &pt, area.pts)
     {
         pt1.setX(pt.lon);
         pt1.setY(pt.lat);
@@ -360,7 +369,6 @@ void CGisItemOvlArea::drawHighlight(QPainter& p)
     }
     p.setPen(QPen(QColor(255,0,0,100),11,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
     p.drawPolygon(line);
-
 }
 
 void CGisItemOvlArea::gainUserFocus(bool yes)
@@ -411,7 +419,10 @@ QString CGisItemOvlArea::getInfo() const
     QString desc = removeHtml(area.desc).simplified();
     if(desc.count())
     {
-        if(!str.isEmpty()) str += "<br/>\n";
+        if(!str.isEmpty())
+        {
+            str += "<br/>\n";
+        }
 
         if(desc.count() < 200)
         {
@@ -427,7 +438,10 @@ QString CGisItemOvlArea::getInfo() const
         QString cmt = removeHtml(area.cmt).simplified();
         if(cmt.count())
         {
-            if(!str.isEmpty()) str += "<br/>\n";
+            if(!str.isEmpty())
+            {
+                str += "<br/>\n";
+            }
 
             if(cmt.count() < 200)
             {
@@ -444,9 +458,9 @@ QString CGisItemOvlArea::getInfo() const
 }
 
 void CGisItemOvlArea::getPolylineFromData(QPolygonF& line)
-{    
+{
     line.clear();
-    foreach(const pt_t& pt, area.pts)
+    foreach(const pt_t &pt, area.pts)
     {
         line << 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 c1273c9..dc255db 100644
--- a/src/gis/ovl/CGisItemOvlArea.h
+++ b/src/gis/ovl/CGisItemOvlArea.h
@@ -35,123 +35,150 @@ class IQlgtOverlay;
 
 class CGisItemOvlArea : public IGisItem, public IGisLine
 {
-    public:
-        CGisItemOvlArea(const QPolygonF& line, const QString &name, IGisProject * project, int idx);
-        CGisItemOvlArea(const CGisItemOvlArea &parentArea, IGisProject * project, int idx, bool clone);
-        CGisItemOvlArea(const QDomNode &xml, IGisProject *project);
-        CGisItemOvlArea(const history_t& hist, IGisProject * project);
-        CGisItemOvlArea(quint64 id, QSqlDatabase& db, IGisProject * project);
-        CGisItemOvlArea(const IQlgtOverlay& ovl);
-        virtual ~CGisItemOvlArea();
-
-        QDataStream& operator<<(QDataStream& stream);
-        QDataStream& operator>>(QDataStream& stream);
-
-        const QString& getName() const;
-        int getColorIdx(){return colorIdx;}
-        QString getInfo() const;
-        void getPolylineFromData(QPolygonF& line);
-        const QString& getComment(){return area.cmt;}
-        const QString& getDescription(){return area.desc;}
-        const QList<link_t>& getLinks(){return area.links;}
-        qint32 getWidth(){return area.width;}
-        qint32 getStyle(){return area.style;}
-        bool getOpacity(){return area.opacity;}
-
-        void setName(const QString& str);
-        void setColor(int idx);
-        void setDataFromPolyline(const QPolygonF& line);
-        void setWidth(qint32 w);
-        void setStyle(qint32 s);
-        void setOpacity(bool yes);
-        void setComment(const QString& str);
-        void setDescription(const QString& str);
-        void setLinks(const QList<link_t>& links);
-
-        void save(QDomNode& gpx);
-        void edit();
-
-        void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
-        void drawLabel(QPainter& p, const QPolygonF& viewport,QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
-        void drawHighlight(QPainter& p);
-
-        IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse);
-        QPointF getPointCloseBy(const QPoint& screenPos);
-        bool isCloseTo(const QPointF& pos);
-
-        void gainUserFocus(bool yes);
-
-        struct width_t
+public:
+    CGisItemOvlArea(const QPolygonF& line, const QString &name, IGisProject * project, int idx);
+    CGisItemOvlArea(const CGisItemOvlArea &parentArea, IGisProject * project, int idx, bool clone);
+    CGisItemOvlArea(const QDomNode &xml, IGisProject *project);
+    CGisItemOvlArea(const history_t& hist, IGisProject * project);
+    CGisItemOvlArea(quint64 id, QSqlDatabase& db, IGisProject * project);
+    CGisItemOvlArea(const IQlgtOverlay& ovl);
+    virtual ~CGisItemOvlArea();
+
+    QDataStream& operator<<(QDataStream& stream);
+    QDataStream& operator>>(QDataStream& stream);
+
+    const QString& getName() const;
+    int getColorIdx() const
+    {
+        return colorIdx;
+    }
+    QString getInfo() const;
+    void getPolylineFromData(QPolygonF& line);
+    const QString& getComment() const
+    {
+        return area.cmt;
+    }
+    const QString& getDescription() const
+    {
+        return area.desc;
+    }
+    const QList<link_t>& getLinks() const
+    {
+        return area.links;
+    }
+    qint32 getWidth() const
+    {
+        return area.width;
+    }
+    qint32 getStyle() const
+    {
+        return area.style;
+    }
+    bool getOpacity() const
+    {
+        return area.opacity;
+    }
+
+    void setName(const QString& str);
+    void setColor(int idx);
+    void setDataFromPolyline(const QPolygonF& line);
+    void setWidth(qint32 w);
+    void setStyle(qint32 s);
+    void setOpacity(bool yes);
+    void setComment(const QString& str);
+    void setDescription(const QString& str);
+    void setLinks(const QList<link_t>& links);
+
+    void save(QDomNode& gpx);
+    void edit();
+
+    void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
+    void drawLabel(QPainter& p, const QPolygonF& viewport,QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
+    void drawHighlight(QPainter& p);
+
+    IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse);
+    QPointF getPointCloseBy(const QPoint& screenPos);
+    bool isCloseTo(const QPointF& pos);
+
+    void gainUserFocus(bool yes);
+
+    struct width_t
+    {
+        int width;
+        QString string;
+    };
+
+    static const QColor lineColors[OVL_N_COLORS];
+    static const QString bulletColors[OVL_N_COLORS];
+    static const width_t lineWidths[OVL_N_WIDTHS];
+    static const Qt::BrushStyle brushStyles[OVL_N_STYLES];
+protected:
+    void setSymbol();
+
+
+public:
+
+    struct pt_t : public wpt_t
+    {
+        pt_t()
         {
-            int width;
-            QString string;
-        };
+        }
+    };
 
-        static const QColor  lineColors[OVL_N_COLORS];
-        static const QString bulletColors[OVL_N_COLORS];
-        static const width_t lineWidths[OVL_N_WIDTHS];
-        static const Qt::BrushStyle brushStyles[OVL_N_STYLES];
-    protected:
-        void setSymbol();
-
-
-    public:
-
-        struct pt_t : public wpt_t
+    struct area_t
+    {
+        area_t() : number(0), width(5), style(Qt::BDiagPattern), opacity(false)
         {
-            pt_t(){}
-        };
-
-        struct area_t
-        {
-            area_t() : number(0), width(5), style(Qt::BDiagPattern), opacity(false) {}
-            // -- all gpx tags - start
-            QString name;
-            QString cmt;
-            QString desc;
-            QString src;
-            QList<link_t> links;
-            quint64 number;
-            QString type;
-            QVector<pt_t> pts;
-            QString color;
-            qint32 width;
-            qint32 style;
-            bool opacity;
-
-            // secondary data;
-            qreal area;
-        };
-
-        const area_t& getAreaData() const{return area;}
-
-    private:
-        void readArea(const QDomNode& xml, area_t& area);
-        void setColor(const QColor& c);
-        void setIcon(const QString& c);
-        void readLine(const QPolygonF &line);
-        void deriveSecondaryData();
-        QPointF getPolygonCentroid(const QPolygonF& polygon);
-
-        area_t area;
-
-
-        static key_t keyUserFocus;
-
-        QPen penForeground;
-        QPen penBackground;
-
-        /// the track line color
-        QColor  color;
-        /// the trakpoint bullet icon
-        QPixmap bullet;
-        /// the track line color by index
-        unsigned colorIdx;
-
-        QPolygonF line;
-
-        QPointer<CScrOptOvlArea>  scrOpt;
-
+        }
+        // -- all gpx tags - start
+        QString name;
+        QString cmt;
+        QString desc;
+        QString src;
+        QList<link_t> links;
+        quint64 number;
+        QString type;
+        QVector<pt_t> pts;
+        QString color;
+        qint32 width;
+        qint32 style;
+        bool opacity;
+
+        // secondary data;
+        qreal area;
+    };
+
+    const area_t& getAreaData() const
+    {
+        return area;
+    }
+
+private:
+    void readArea(const QDomNode& xml, area_t& area);
+    void setColor(const QColor& c);
+    void setIcon(const QString& c);
+    void readLine(const QPolygonF &line);
+    void deriveSecondaryData();
+    QPointF getPolygonCentroid(const QPolygonF& polygon);
+
+    area_t area;
+
+
+    static key_t keyUserFocus;
+
+    QPen penForeground;
+    QPen penBackground;
+
+    /// the track line color
+    QColor color;
+    /// the trakpoint bullet icon
+    QPixmap bullet;
+    /// the track line color by index
+    unsigned colorIdx;
+
+    QPolygonF line;
+
+    QPointer<CScrOptOvlArea>  scrOpt;
 };
 
 #endif //CGISITEMOVLAREA_H
diff --git a/src/gis/ovl/CScrOptOvlArea.cpp b/src/gis/ovl/CScrOptOvlArea.cpp
index 1405f95..a94d612 100644
--- a/src/gis/ovl/CScrOptOvlArea.cpp
+++ b/src/gis/ovl/CScrOptOvlArea.cpp
@@ -16,15 +16,15 @@
 
 **********************************************************************************************/
 
-#include "gis/ovl/CScrOptOvlArea.h"
-#include "gis/ovl/CGisItemOvlArea.h"
-#include "gis/CGisWidget.h"
+#include "CMainWindow.h"
 #include "canvas/CCanvas.h"
+#include "gis/CGisWidget.h"
+#include "gis/ovl/CGisItemOvlArea.h"
+#include "gis/ovl/CScrOptOvlArea.h"
 #include "mouse/IMouse.h"
-#include "CMainWindow.h"
 
 CScrOptOvlArea::CScrOptOvlArea(CGisItemOvlArea *area, const QPoint &point, IMouse *parent)
-    : IScrOpt(parent->getCanvas())    
+    : IScrOpt(parent->getCanvas())
 {
     key = area->getKey();
 
@@ -48,7 +48,6 @@ CScrOptOvlArea::CScrOptOvlArea(CGisItemOvlArea *area, const QPoint &point, IMous
 
 CScrOptOvlArea::~CScrOptOvlArea()
 {
-
 }
 
 void CScrOptOvlArea::slotEditDetails()
diff --git a/src/gis/ovl/CScrOptOvlArea.h b/src/gis/ovl/CScrOptOvlArea.h
index 883d7c2..bb9ebac 100644
--- a/src/gis/ovl/CScrOptOvlArea.h
+++ b/src/gis/ovl/CScrOptOvlArea.h
@@ -19,8 +19,8 @@
 #ifndef CSCROPTOVLAREA_H
 #define CSCROPTOVLAREA_H
 
-#include "mouse/IScrOpt.h"
 #include "gis/IGisItem.h"
+#include "mouse/IScrOpt.h"
 
 #include "ui_IScrOptOvlArea.h"
 
@@ -30,22 +30,21 @@ class IMouse;
 class CScrOptOvlArea : public IScrOpt, private Ui::IScrOptOvlArea
 {
     Q_OBJECT
-    public:
-        CScrOptOvlArea(CGisItemOvlArea * area, const QPoint &point, IMouse *parent);
-        virtual ~CScrOptOvlArea();
-
-        void draw(QPainter& p);
+public:
+    CScrOptOvlArea(CGisItemOvlArea * area, const QPoint &point, IMouse *parent);
+    virtual ~CScrOptOvlArea();
 
-    private slots:
-        void slotEditDetails();
-        void slotCopy();
-        void slotDelete();
-        void slotEdit();
+    void draw(QPainter& p);
 
-    private:
-        IGisItem::key_t key;
-        QPointF anchor;
+private slots:
+    void slotEditDetails();
+    void slotCopy();
+    void slotDelete();
+    void slotEdit();
 
+private:
+    IGisItem::key_t key;
+    QPointF anchor;
 };
 
 #endif //CSCROPTOVLAREA_H
diff --git a/src/gis/prj/CDetailsPrj.cpp b/src/gis/prj/CDetailsPrj.cpp
index 80ee6fc..79485fc 100644
--- a/src/gis/prj/CDetailsPrj.cpp
+++ b/src/gis/prj/CDetailsPrj.cpp
@@ -16,12 +16,18 @@
 
 **********************************************************************************************/
 
+#include "gis/IGisItem.h"
+#include "gis/ovl/CGisItemOvlArea.h"
 #include "gis/prj/CDetailsPrj.h"
 #include "gis/prj/IGisProject.h"
-#include "gis/IGisItem.h"
-#include "helpers/CTextEditWidget.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/wpt/CGisItemWpt.h"
 #include "helpers/CLinksDialog.h"
+#include "helpers/CTextEditWidget.h"
+#include "plot/CPlotProfile.h"
+#include "plot/CPlotTrack.h"
 
+#include <QtPrintSupport>
 #include <QtWidgets>
 
 CDetailsPrj::CDetailsPrj(IGisProject &prj, QWidget *parent)
@@ -29,25 +35,128 @@ CDetailsPrj::CDetailsPrj(IGisProject &prj, QWidget *parent)
     , prj(prj)
 {
     setupUi(this);
-    setupGui();
 
-    connect(labelName, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
     connect(labelKeywords, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
     connect(textDesc, SIGNAL(anchorClicked(QUrl)), this, SLOT(slotLinkActivated(QUrl)));
+    connect(toolPrint, SIGNAL(clicked()), this, SLOT(slotPrint()));
+    connect(toolReload, SIGNAL(clicked()), this, SLOT(slotSetupGui()));
+    connect(radioSortByTime, SIGNAL(clicked()), this, SLOT(slotSetupGui()));
+    connect(radioOrderAsProject, SIGNAL(clicked()), this, SLOT(slotSetupGui()));
+
+    slotSetupGui();
 }
 
 CDetailsPrj::~CDetailsPrj()
 {
+}
+
+void CDetailsPrj::resizeEvent(QResizeEvent * e)
+{
+    QWidget::resizeEvent(e);
+    slotSetupGui();
+}
+
+void CDetailsPrj::getTrackProfile(CGisItemTrk * trk, QImage& image)
+{
+    CPlotProfile plot(trk, IPlot::eModeIcon, this);
+    plot.setSolid(true);
+    plot.save(image);
+}
+
+void CDetailsPrj::getTrackOverview(CGisItemTrk * trk, QImage& image)
+{
+    CPlotTrack plot(trk, this);
+    plot.save(image);
+}
+
+
+void CDetailsPrj::slotSetupGui()
+{
+    textDesc->document()->setTextWidth(textDesc->size().width() - 20);
+    draw(*textDesc->document(), false);
+}
+
+#define ROOT_FRAME_MARGIN 5
+#define CHAR_PER_LINE 130
 
+bool sortTrkByTime(const CGisItemTrk * trk1, const CGisItemTrk * trk2)
+{
+    return trk1->getTimeStart() < trk2->getTimeStart();
 }
 
-void CDetailsPrj::setupGui()
+bool sortWptByTime(const CGisItemWpt * wpt1, const CGisItemWpt * wpt2)
+{
+    return wpt1->getTime() < wpt2->getTime();
+}
+
+
+
+void CDetailsPrj::draw(QTextDocument& doc, bool printable)
 {
-    bool isReadOnly = false;
+    int cnt, w = doc.textWidth();
+    int nItems = 0;
+
+    QFontMetrics fm(QFont(font().family(),10));
+    int pointSize = ((10 * (w - 2 * ROOT_FRAME_MARGIN)) / (CHAR_PER_LINE *  fm.width("X")));
+    if(pointSize == 0)
+    {
+        return;
+    }
+
+    QFont f = textDesc->font();
+    f.setPointSize(pointSize);
+    textDesc->setFont(f);
+
+    QTextFrameFormat fmtFrameStandard;
+    fmtFrameStandard.setTopMargin(5);
+    fmtFrameStandard.setBottomMargin(5);
+    fmtFrameStandard.setWidth(w - 2 * ROOT_FRAME_MARGIN);
+
+    QTextCharFormat fmtCharStandard;
+    fmtCharStandard.setFont(f);
+
+    QTextBlockFormat fmtBlockStandard;
+    fmtBlockStandard.setTopMargin(10);
+    fmtBlockStandard.setBottomMargin(10);
+    fmtBlockStandard.setAlignment(Qt::AlignJustify);
+
+    QTextFrameFormat fmtFrameRoot;
+    fmtFrameRoot.setTopMargin(0);
+    fmtFrameRoot.setBottomMargin(ROOT_FRAME_MARGIN);
+    fmtFrameRoot.setLeftMargin(ROOT_FRAME_MARGIN);
+    fmtFrameRoot.setRightMargin(ROOT_FRAME_MARGIN);
+
+    QTextTableFormat fmtTableStandard;
+    fmtTableStandard.setBorder(1);
+    fmtTableStandard.setBorderBrush(Qt::black);
+    fmtTableStandard.setCellPadding(4);
+    fmtTableStandard.setCellSpacing(0);
+    fmtTableStandard.setHeaderRowCount(1);
+    fmtTableStandard.setTopMargin(10);
+    fmtTableStandard.setBottomMargin(20);
+    fmtTableStandard.setWidth(w - 4 * ROOT_FRAME_MARGIN);
+
+    QVector<QTextLength> constraints;
+    constraints << QTextLength(QTextLength::FixedLength, 32);
+    constraints << QTextLength(QTextLength::VariableLength, 50);
+    constraints << QTextLength(QTextLength::VariableLength, 100);
+    fmtTableStandard.setColumnWidthConstraints(constraints);
+
+    QTextTableFormat fmtTableInfo;
+    fmtTableInfo.setBorder(0);
+
+
+    QTextCharFormat fmtCharHeader;
+    fmtCharHeader.setFont(f);
+    fmtCharHeader.setBackground(Qt::darkBlue);
+    fmtCharHeader.setFontWeight(QFont::Bold);
+    fmtCharHeader.setForeground(Qt::white);
+
+
+    bool isReadOnly = printable;
 
     setWindowTitle(prj.getName());
 
-    labelName->setText(IGisItem::toLink(isReadOnly, "name", prj.getName()));
     labelTime->setText(IUnit::datetime2string(prj.getTime(), false));
 
     QString keywords = prj.getKeywords();
@@ -55,12 +164,199 @@ void CDetailsPrj::setupGui()
     {
         keywords = tr("none");
     }
-    labelKeywords->setText(IGisItem::toLink(isReadOnly, "keywords", keywords));
+    labelKeywords->setText(IGisItem::toLink(isReadOnly, "keywords", keywords, ""));
+
+
+    int scrollVal = textDesc->verticalScrollBar()->value();
+
+    doc.clear();
+    doc.rootFrame()->setFrameFormat(fmtFrameRoot);
+    QTextCursor cursor = doc.rootFrame()->firstCursorPosition();
+
+    cursor.insertHtml(IGisItem::toLink(isReadOnly, "name", QString("<h1>%1</h1>").arg(prj.getName()), ""));
+
+
+    QTextFrame * diaryFrame = cursor.insertFrame(fmtFrameStandard);
+    {
+        QTextCursor cursor1(diaryFrame);
+
+        cursor1.setCharFormat(fmtCharStandard);
+        cursor1.setBlockFormat(fmtBlockStandard);
+        cursor1.insertHtml(IGisItem::createText(isReadOnly, prj.getDescription(), prj.getLinks()));
+
+        cursor.setPosition(cursor1.position()+1);
+    }
+
+
+    QList<CGisItemTrk*> trks;
+    QList<CGisItemWpt*> wpts;
+    QList<CGisItemOvlArea*> areas;
+    const int N = prj.childCount();
+    for(int i = 0; i < N; i++)
+    {
+        CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(prj.child(i));
+        if(trk != 0)
+        {
+            trks << trk;
+            nItems++;
+            continue;
+        }
+
+        CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(prj.child(i));
+        if(wpt != 0)
+        {
+            wpts << wpt;
+            nItems++;
+            continue;
+        }
+
+        CGisItemOvlArea * area = dynamic_cast<CGisItemOvlArea*>(prj.child(i));
+        if(area != 0)
+        {
+            areas << area;
+            nItems++;
+            continue;
+        }
+    }
+
+    if(radioSortByTime->isChecked())
+    {
+        qSort(trks.begin(), trks.end(), sortTrkByTime);
+        qSort(wpts.begin(), wpts.end(), sortWptByTime);
+    }
+
+    int n=1;
+    QProgressDialog progress(tr("Build diary..."), tr("Abort"), 0, 100, this);
+    progress.setWindowModality(Qt::WindowModal);
+
+    if(!wpts.isEmpty())
+    {
+        cursor.insertHtml(tr("<h2>Waypoints</h2>"));
+        QTextTable * table = cursor.insertTable(wpts.count()+1, eMax, fmtTableStandard);
+
+        table->cellAt(0,eSym).setFormat(fmtCharHeader);
+        table->cellAt(0,eInfo).setFormat(fmtCharHeader);
+        table->cellAt(0,eComment).setFormat(fmtCharHeader);
+
+        table->cellAt(0,eInfo).firstCursorPosition().insertText(tr("Info"));
+        table->cellAt(0,eComment).firstCursorPosition().insertText(tr("Comment"));
+
+        cnt = 1;
+        foreach(CGisItemWpt * wpt, wpts)
+        {
+            progress.setValue(n++ *100.0/nItems);
+            if(progress.wasCanceled())
+            {
+                return;
+            }
+
+
+            table->cellAt(cnt,eSym).firstCursorPosition().insertImage(wpt->getIcon().toImage().scaledToWidth(16, Qt::SmoothTransformation));
+            table->cellAt(cnt,eInfo).firstCursorPosition().insertHtml(wpt->getInfo());
+            table->cellAt(cnt,eComment).firstCursorPosition().insertHtml(IGisItem::createText(wpt->isReadOnly()||printable, wpt->getComment(), wpt->getDescription(), wpt->getLinks(), wpt->getKey().item));
+            cnt++;
+        }
+
+        cursor.setPosition(table->lastPosition() + 1);
+    }
+
+    if(!trks.isEmpty())
+    {
+        cursor.insertHtml(tr("<h2>Tracks</h2>"));
+        QTextTable * table = cursor.insertTable(trks.count()+1, eMax, fmtTableStandard);
+
+        table->cellAt(0,eSym).setFormat(fmtCharHeader);
+        table->cellAt(0,eInfo).setFormat(fmtCharHeader);
+        table->cellAt(0,eComment).setFormat(fmtCharHeader);
+
+        table->cellAt(0,eInfo).firstCursorPosition().insertText(tr("Info"));
+        table->cellAt(0,eComment).firstCursorPosition().insertText(tr("Comment"));
+
+        cnt = 1;
+
+        foreach(CGisItemTrk * trk, trks)
+        {
+            progress.setValue(n++ *100.0/nItems);
+            if(progress.wasCanceled())
+            {
+                return;
+            }
+
+            table->cellAt(cnt,eSym).firstCursorPosition().insertImage(trk->getIcon().toImage().scaledToWidth(16, Qt::SmoothTransformation));
+
+            int w1 = qRound(w/3.5 > 300 ? 300 : w/3.5);
+            int h1 = qRound(w1/2.0);
+
+            if(w1 < 300)
+            {
+                table->cellAt(cnt,eInfo).firstCursorPosition().insertHtml(trk->getInfo());
+
+                QTextTable * table1 = table->cellAt(cnt,eInfo).lastCursorPosition().insertTable(1, 2, fmtTableInfo);
+
+                QImage profile(w1,h1,QImage::Format_ARGB32);
+                getTrackProfile(trk, profile);
+                table1->cellAt(0,0).firstCursorPosition().insertImage(profile);
+
+                QImage overview(h1,h1,QImage::Format_ARGB32);
+                getTrackOverview(trk, overview);
+                table1->cellAt(0,1).firstCursorPosition().insertImage(overview);
+            }
+            else
+            {
+                QTextTable * table1 = table->cellAt(cnt,eInfo).firstCursorPosition().insertTable(1, 3, fmtTableInfo);
+
+                table1->cellAt(0,0).firstCursorPosition().insertHtml(trk->getInfo());
+
+                QImage profile(w1,h1,QImage::Format_ARGB32);
+                getTrackProfile(trk, profile);
+                table1->cellAt(0,1).firstCursorPosition().insertImage(profile);
+
+                QImage overview(h1,h1,QImage::Format_ARGB32);
+                getTrackOverview(trk, overview);
+                table1->cellAt(0,2).firstCursorPosition().insertImage(overview);
+            }
+
+            table->cellAt(cnt,eComment).firstCursorPosition().insertHtml(IGisItem::createText(trk->isReadOnly()||printable, trk->getComment(), trk->getDescription(), trk->getLinks(), trk->getKey().item));
+
+            cnt++;
+        }
+
+
+        cursor.setPosition(table->lastPosition() + 1);
+    }
+
+    if(!areas.isEmpty())
+    {
+        cursor.insertHtml(tr("<h2>Areas</h2>"));
+        QTextTable * table = cursor.insertTable(areas.count()+1, eMax, fmtTableStandard);
+
+        table->cellAt(0,eSym).setFormat(fmtCharHeader);
+        table->cellAt(0,eInfo).setFormat(fmtCharHeader);
+        table->cellAt(0,eComment).setFormat(fmtCharHeader);
+
+        table->cellAt(0,eInfo).firstCursorPosition().insertText(tr("Info"));
+        table->cellAt(0,eComment).firstCursorPosition().insertText(tr("Comment"));
+
+        cnt = 1;
+        foreach(CGisItemOvlArea * area, areas)
+        {
+            progress.setValue(n++ *100.0/nItems);
+            if(progress.wasCanceled())
+            {
+                return;
+            }
+
+
+            table->cellAt(cnt,eSym).firstCursorPosition().insertImage(area->getIcon().toImage().scaledToWidth(16, Qt::SmoothTransformation));
+            table->cellAt(cnt,eInfo).firstCursorPosition().insertHtml(area->getInfo());
+            table->cellAt(cnt,eComment).firstCursorPosition().insertHtml(IGisItem::createText(area->isReadOnly()||printable, area->getComment(), area->getDescription(), area->getLinks(), area->getKey().item));
+            cnt++;
+        }
+
+        cursor.setPosition(table->lastPosition() + 1);
+    }
 
-    textDesc->document()->clear();
-    textDesc->append(IGisItem::createText(isReadOnly, prj.getDescription(), prj.getLinks()));
-    textDesc->moveCursor(QTextCursor::Start) ;
-    textDesc->ensureCursorVisible() ;
+    textDesc->verticalScrollBar()->setValue(scrollVal);
 }
 
 void CDetailsPrj::slotLinkActivated(const QString& link)
@@ -87,30 +383,115 @@ void CDetailsPrj::slotLinkActivated(const QString& link)
         }
         prj.setKeywords(keywords);
     }
-    setupGui();
+    slotSetupGui();
 }
 
 void CDetailsPrj::slotLinkActivated(const QUrl& url)
 {
-    if(url.toString() == "description")
+    if(url.path() == "name")
+    {
+        QString name = QInputDialog::getText(0, tr("Edit name..."), tr("Enter new project name."), QLineEdit::Normal, prj.getName());
+        if(!name.isEmpty())
+        {
+            prj.setName(name);
+        }
+        slotSetupGui();
+    }
+    else if(url.path() == "description")
+    {
+        if(url.hasQuery())
+        {
+            IGisItem::key_t key;
+            key.project = prj.getKey();
+
+            QString query = url.query();
+            if(query.startsWith("key="))
+            {
+                key.item = query.mid(4);
+            }
+
+            IGisItem * item = prj.getItemByKey(key);
+            if(item)
+            {
+                CTextEditWidget dlg(this);
+                dlg.setHtml(item->getDescription());
+                if(dlg.exec() == QDialog::Accepted)
+                {
+                    item->setDescription(dlg.getHtml());
+                }
+            }
+        }
+        else
+        {
+            CTextEditWidget dlg(0);
+            dlg.setHtml(prj.getDescription());
+            if(dlg.exec() == QDialog::Accepted)
+            {
+                prj.setDescription(dlg.getHtml());
+            }
+        }
+        slotSetupGui();
+    }
+    else if(url.path() == "comment")
     {
-        CTextEditWidget dlg(0);
-        dlg.setHtml(prj.getDescription());
-        if(dlg.exec() == QDialog::Accepted)
+        if(url.hasQuery())
         {
-            prj.setDescription(dlg.getHtml());
+            IGisItem::key_t key;
+            key.project = prj.getKey();
+
+            QString query = url.query();
+            if(query.startsWith("key="))
+            {
+                key.item = query.mid(4);
+            }
+
+            IGisItem * item = prj.getItemByKey(key);
+            if(item)
+            {
+                CTextEditWidget dlg(this);
+                dlg.setHtml(item->getComment());
+                if(dlg.exec() == QDialog::Accepted)
+                {
+                    item->setComment(dlg.getHtml());
+                }
+            }
         }
-        setupGui();
+        slotSetupGui();
     }
-    else if(url.toString() == "links")
+    else if(url.path() == "links")
     {
-        QList<IGisItem::link_t> links = prj.getLinks();
-        CLinksDialog dlg(links, 0);
-        if(dlg.exec() == QDialog::Accepted)
+        if(url.hasQuery())
         {
-            prj.setLinks(links);
+            IGisItem::key_t key;
+            key.project = prj.getKey();
+
+            QString query = url.query();
+            if(query.startsWith("key="))
+            {
+                key.item = query.mid(4);
+            }
+
+            IGisItem * item = prj.getItemByKey(key);
+            if(item)
+            {
+                QList<IGisItem::link_t> links = item->getLinks();
+                CLinksDialog dlg(links, 0);
+                if(dlg.exec() == QDialog::Accepted)
+                {
+                    item->setLinks(links);
+                }
+            }
         }
-        setupGui();
+        else
+        {
+            QList<IGisItem::link_t> links = prj.getLinks();
+            CLinksDialog dlg(links, 0);
+            if(dlg.exec() == QDialog::Accepted)
+            {
+                prj.setLinks(links);
+            }
+        }
+        slotSetupGui();
     }
     else
     {
@@ -118,5 +499,25 @@ void CDetailsPrj::slotLinkActivated(const QUrl& url)
     }
 }
 
+void CDetailsPrj::slotPrint()
+{
+    QPrinter printer;
+
+    printer.setResolution(150);
+    printer.setPageSize(QPrinter::A4);
+    QPrintDialog dialog(&printer, this);
+    dialog.setWindowTitle(tr("Print Diary"));
+    if (dialog.exec() != QDialog::Accepted)
+    {
+        return;
+    }
 
+    QTextDocument doc;
+    QSizeF pageSize = printer.pageRect(QPrinter::DevicePixel).size();
+    doc.setPageSize(pageSize);
+    draw(doc, true);
+    doc.print(&printer);
+
+    slotSetupGui();
+}
 
diff --git a/src/gis/prj/CDetailsPrj.h b/src/gis/prj/CDetailsPrj.h
index 4e05aff..4a5233c 100644
--- a/src/gis/prj/CDetailsPrj.h
+++ b/src/gis/prj/CDetailsPrj.h
@@ -19,28 +19,38 @@
 #ifndef CDETAILSPRJ_H
 #define CDETAILSPRJ_H
 
-#include <QWidget>
-#include <QPointer>
 #include "ui_IDetailsPrj.h"
+#include <QPointer>
+#include <QWidget>
 
 class CDetailsPrj;
 class IGisProject;
+class CGisItemTrk;
 
 class CDetailsPrj : public QWidget, private Ui::IDetailsPrj
 {
     Q_OBJECT
-    public:
-        CDetailsPrj(IGisProject& prj, QWidget * parent);
-        virtual ~CDetailsPrj();
+public:
+    CDetailsPrj(IGisProject& prj, QWidget * parent);
+    virtual ~CDetailsPrj();
+
+protected:
+    void resizeEvent(QResizeEvent * e);
+
+private slots:
+    void slotLinkActivated(const QString& link);
+    void slotLinkActivated(const QUrl& url);
+    void slotPrint();
+    void slotSetupGui();
 
-    private slots:
-        void slotLinkActivated(const QString& link);
-        void slotLinkActivated(const QUrl& url);
+private:
+    void getTrackProfile(CGisItemTrk * trk, QImage& image);
+    void getTrackOverview(CGisItemTrk * trk, QImage& image);
+    void draw(QTextDocument& doc, bool printable);
 
-    private:
-        void setupGui();
+    enum eTblCol {eSym, eInfo, eComment, eMax};
 
-        IGisProject& prj;
+    IGisProject& prj;
 };
 
 #endif //CDETAILSPRJ_H
diff --git a/src/gis/prj/IDetailsPrj.ui b/src/gis/prj/IDetailsPrj.ui
index 38290bd..77631cc 100644
--- a/src/gis/prj/IDetailsPrj.ui
+++ b/src/gis/prj/IDetailsPrj.ui
@@ -32,15 +32,21 @@
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
-      <widget class="QLabel" name="labelName">
-       <property name="font">
-        <font>
-         <pointsize>15</pointsize>
-         <weight>75</weight>
-         <bold>true</bold>
-        </font>
+      <widget class="QLabel" name="label">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
        </property>
        <property name="text">
+        <string>Keywords:</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLabel" name="labelKeywords">
+       <property name="text">
         <string>-</string>
        </property>
       </widget>
@@ -52,27 +58,72 @@
        </property>
       </widget>
      </item>
-    </layout>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout_2">
      <item>
-      <widget class="QLabel" name="label">
+      <widget class="QRadioButton" name="radioSortByTime">
        <property name="sizePolicy">
-        <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+        <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
          <horstretch>0</horstretch>
          <verstretch>0</verstretch>
         </sizepolicy>
        </property>
        <property name="text">
-        <string>Keywords:</string>
+        <string>Sort By Time</string>
+       </property>
+       <property name="checked">
+        <bool>true</bool>
        </property>
       </widget>
      </item>
      <item>
-      <widget class="QLabel" name="labelKeywords">
+      <widget class="QRadioButton" name="radioOrderAsProject">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
        <property name="text">
-        <string>-</string>
+        <string>Keep Order of Project</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="toolPrint">
+       <property name="toolTip">
+        <string>Print diary</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>22</width>
+         <height>22</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="toolReload">
+       <property name="toolTip">
+        <string>Rebuild diary.</string>
+       </property>
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset resource="../../resources.qrc">
+         <normaloff>:/icons/32x32/Reset.png</normaloff>:/icons/32x32/Reset.png</iconset>
+       </property>
+       <property name="iconSize">
+        <size>
+         <width>22</width>
+         <height>22</height>
+        </size>
        </property>
       </widget>
      </item>
@@ -80,6 +131,9 @@
    </item>
    <item>
     <widget class="QTextBrowser" name="textDesc">
+     <property name="verticalScrollBarPolicy">
+      <enum>Qt::ScrollBarAlwaysOn</enum>
+     </property>
      <property name="openExternalLinks">
       <bool>true</bool>
      </property>
@@ -87,6 +141,8 @@
    </item>
   </layout>
  </widget>
- <resources/>
+ <resources>
+  <include location="../../resources.qrc"/>
+ </resources>
  <connections/>
 </ui>
diff --git a/src/gis/prj/IGisProject.cpp b/src/gis/prj/IGisProject.cpp
index ecae454..10d816a 100644
--- a/src/gis/prj/IGisProject.cpp
+++ b/src/gis/prj/IGisProject.cpp
@@ -16,17 +16,17 @@
 
 **********************************************************************************************/
 
-#include "gis/prj/IGisProject.h"
-#include "gis/prj/CDetailsPrj.h"
+#include "CMainWindow.h"
+#include "gis/CGisDraw.h"
+#include "gis/CGisListWks.h"
 #include "gis/IGisItem.h"
-#include "gis/wpt/CGisItemWpt.h"
-#include "gis/trk/CGisItemTrk.h"
-#include "gis/rte/CGisItemRte.h"
 #include "gis/ovl/CGisItemOvlArea.h"
-#include "gis/CGisListWks.h"
-#include "gis/CGisDraw.h"
+#include "gis/prj/CDetailsPrj.h"
+#include "gis/prj/IGisProject.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/wpt/CGisItemWpt.h"
 #include "helpers/CSelectCopyAction.h"
-#include "CMainWindow.h"
 
 
 #include <QtWidgets>
@@ -38,7 +38,6 @@ IGisProject::IGisProject(type_e type, const QString &filename, CGisListWks *pare
     , filename(filename)
     , valid(false)
 {
-
 }
 
 IGisProject::~IGisProject()
@@ -118,7 +117,6 @@ void IGisProject::setupName(const QString &defaultName)
     {
         setText(CGisListWks::eColumnName,metadata.name);
     }
-
 }
 
 void IGisProject::markAsSaved()
@@ -126,7 +124,6 @@ void IGisProject::markAsSaved()
     setText(CGisListWks::eColumnDecoration,"");
     for(int i = 0; i < childCount(); i++)
     {
-
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
         if(item == 0)
         {
@@ -204,7 +201,6 @@ IGisItem * IGisProject::getItemByKey(const IGisItem::key_t& key)
 {
     for(int i = 0; i < childCount(); i++)
     {
-
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
         if(item == 0)
         {
@@ -223,7 +219,6 @@ void IGisProject::getItemByPos(const QPointF& pos, QList<IGisItem *> &items)
 {
     for(int i = 0; i < childCount(); i++)
     {
-
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
         if(item == 0)
         {
@@ -265,7 +260,7 @@ bool IGisProject::delItemByKey(const IGisItem::key_t& key, QMessageBox::Standard
             /*
                 Database projects are a bit different. Deleteing an item does not really
                 mean the project is changed as the item is still stored in the database.
-            */
+             */
             if(type != eTypeDb)
             {
                 changed();
@@ -305,7 +300,6 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
     IGisItem * item2 = getItemByKey(key);
     if(item2 != 0)
     {
-
         int result = lastResult;
         if(lastResult == CSelectCopyAction::eResultNone)
         {
@@ -356,6 +350,7 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
         }
         break;
     }
+
     case IGisItem::eTypeWpt:
     {
         CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(item);
@@ -365,6 +360,7 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
         }
         break;
     }
+
     case IGisItem::eTypeRte:
     {
         CGisItemRte * rte = dynamic_cast<CGisItemRte*>(item);
@@ -374,6 +370,7 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
         }
         break;
     }
+
     case IGisItem::eTypeOvl:
     {
         CGisItemOvlArea * area = dynamic_cast<CGisItemOvlArea*>(item);
@@ -403,14 +400,12 @@ void IGisProject::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
 
         item->drawItem(p, viewport, blockedAreas, gis);
     }
-
 }
 
 void IGisProject::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
 {
     for(int i = 0; i < childCount(); i++)
     {
-
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
         if(item == 0)
         {
@@ -420,12 +415,10 @@ void IGisProject::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
 
         item->drawItem(p, viewport, gis);
     }
-
 }
 
 void IGisProject::drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis)
 {
-
     for(int i = 0; i < childCount(); i++)
     {
         if(gis->needsRedraw())
@@ -441,6 +434,5 @@ void IGisProject::drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF
 
         item->drawLabel(p, viewport, blockedAreas, fm, gis);
     }
-
 }
 
diff --git a/src/gis/prj/IGisProject.h b/src/gis/prj/IGisProject.h
index 13c6edd..5751146 100644
--- a/src/gis/prj/IGisProject.h
+++ b/src/gis/prj/IGisProject.h
@@ -20,9 +20,9 @@
 #define IGISPROJECT_H
 
 #include "gis/IGisItem.h"
-#include <QTreeWidgetItem>
-#include <QPointer>
 #include <QMessageBox>
+#include <QPointer>
+#include <QTreeWidgetItem>
 
 class CGisListWks;
 class IGisItem;
@@ -32,199 +32,228 @@ class CDetailsPrj;
 
 class IGisProject : public QTreeWidgetItem
 {
-    public:
-        enum type_e
-        {
-              eTypeGoogle
-            , eTypeQms
-            , eTypeGpx
-            , eTypeDb
-            , eTypeLostFound
-        };
-
-        struct person_t
-        {
-            QString name;
-            QString id;
-            QString domain;
-            IGisItem::link_t link;
-        };
-
-        struct copyright_t
-        {
-            QString author;
-            QString year;
-            QString license;
-        };
-
-        struct metadata_t
+public:
+    enum type_e
+    {
+        eTypeGoogle
+        , eTypeQms
+        , eTypeGpx
+        , eTypeDb
+        , eTypeLostFound
+    };
+
+    struct person_t
+    {
+        QString name;
+        QString id;
+        QString domain;
+        IGisItem::link_t link;
+    };
+
+    struct copyright_t
+    {
+        QString author;
+        QString year;
+        QString license;
+    };
+
+    struct metadata_t
+    {
+        metadata_t() : time(QDateTime::currentDateTimeUtc())
         {
-            metadata_t() : time(QDateTime::currentDateTimeUtc()){}
-            QString name;
-            QString desc;
-            person_t author;
-            copyright_t copyright;
-            QList<IGisItem::link_t> links;
-            QDateTime time;
-            QString keywords;
-            QRectF bounds;
-            // -- all gpx tags - stop
-            QMap<QString, QVariant> extensions;
-
-        };
-
-        IGisProject(type_e type, const QString& filename, CGisListWks * parent);
-        virtual ~IGisProject();
-
-        void edit();
-
-        /**
-           @brief Save the project using it's native format.
-         */
-        virtual bool save() = 0;
-        /**
-           @brief Save the project selecting one of the available formats.
-        */
-        virtual bool saveAs() = 0;
-
-        virtual void setFilename(const QString& fn){filename = fn;}
-        virtual QString getFilename() const {return filename;}
-
-        type_e getType() const {return type;}
-
-        /**
-           @brief Get unique project key.
-           @return A MD5 hash string
-         */
-        const QString& getKey(){genKey(); return key;}
-        const QString& getName() const {return metadata.name;}
-        const QDateTime& getTime() const {return metadata.time;}
-        const QString& getKeywords() const {return metadata.keywords;}
-        const QString& getDescription() const {return metadata.desc;}
-        const QList<IGisItem::link_t>& getLinks() const {return metadata.links;}
-
-
-        void setName(const QString& str);
-        void setKeywords(const QString& str);
-        void setDescription(const QString& str);
-        void setLinks(const QList<IGisItem::link_t>& links);
-
-        /**
-           @brief Get a short metadata summary
-           @return Informational string.
-         */
-        virtual QString getInfo() const;
-        /**
-           @brief Get a temporary pointer to the item with matching key
-           @param key
-           @return If no item is found 0 is returned.
-        */
-        IGisItem * getItemByKey(const IGisItem::key_t &key);
-
-        /**
-           @brief Get a list of items that are close to a given pixel coordinate of the screen
-
-           @note: The returned pointers are just for temporary use. Best you use them to get the item's key.
-
-           @param pos       the coordinate on the screen in pixel
-           @param items     a list the item's pointer is stored to.
-        */
-        void getItemByPos(const QPointF& pos, QList<IGisItem*>& items);
-
-        /**
-           @brief Delete items with matching key
-           @param key
-        */
-        bool delItemByKey(const IGisItem::key_t &key, QMessageBox::StandardButtons &last);
-
-        /**
-           @brief Call IGisItem::edit() method for items with given key
-
-           @param key   a MD5 hash key
-         */
-        void editItemByKey(const IGisItem::key_t &key);
-
-        /**
-           @brief Add a copy if the gven item to the project
-
-           Befor the item is inserted the method will use it's key to find a duplicat item.
-           If there is an item with the same item key a copy option dialog is shown. Depending
-           the result the action is performed or aborted. The result will be copied into
-           lastResult to repeat the same decision on subsequent items.
-
-           @param item          pointer to item
-           @param off           the offset into the tree widget, -1 for none
-           @param lastResult    a reference to hold the last result of the copy option dialog
-        */
-        void insertCopyOfItem(IGisItem *item, int off, int &lastResult);
-
-        /**
-           @brief Check if the project was initialized correctly.
-
-           For example a if a GPX file does not load correctly the project is invalid.
-
-           @return True if project is valid
-         */
-        bool  isValid() const {return valid;}
-
-        void drawItem(QPainter& p, const QPolygonF &viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
-        void drawLabel(QPainter& p, const QPolygonF &viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
-        void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis);
-
-        /**
-           @brief Serialize object out of a QDataStream
-
-           See CGisSerialization.cpp for implementation
-
-           @param stream the binary data stream
-           @return The stream object.
-        */
-        virtual QDataStream& operator<<(QDataStream& stream);
-
-        /**
-           @brief Serialize object into a QDataStream
-
-           See CGisSerialization.cpp for implementation
-
-           @param stream the binary data stream
-           @return The stream object.
-        */
-        virtual QDataStream& operator>>(QDataStream& stream);
-
-        /**
-           @brief writeMetadata
-           @param doc
-           @return
-         */
-        QDomNode writeMetadata(QDomDocument& doc);
-
-    protected:
-        void genKey();
-        void setupName(const QString& defaultName);
-        void markAsSaved();
-        void readMetadata(const QDomNode& xml, metadata_t& metadata);
-        void changed();
-
-        // Those are the URIs of the GPX extensions we support
-        static const QString gpxx_ns;
-        static const QString gpxtpx_ns;
-        static const QString wptx1_ns;
-        static const QString rmc_ns;
-        static const QString ql_ns;
-        static const QString gs_ns;
-        // Those are standard GPX/XML namespaces
-        static const QString gpx_ns;
-        static const QString xsi_ns;
-
-        type_e type;
-        QString key;
-        QString filename;
-        bool valid;
-
-        metadata_t metadata;
-
-        QPointer<CDetailsPrj> dlgDetails;
-
+        }
+        QString name;
+        QString desc;
+        person_t author;
+        copyright_t copyright;
+        QList<IGisItem::link_t> links;
+        QDateTime time;
+        QString keywords;
+        QRectF bounds;
+        // -- all gpx tags - stop
+        QMap<QString, QVariant> extensions;
+    };
+
+    IGisProject(type_e type, const QString& filename, CGisListWks * parent);
+    virtual ~IGisProject();
+
+    void edit();
+
+    /**
+       @brief Save the project using it's native format.
+     */
+    virtual bool save() = 0;
+    /**
+       @brief Save the project selecting one of the available formats.
+     */
+    virtual bool saveAs() = 0;
+
+    virtual void setFilename(const QString& fn)
+    {
+        filename = fn;
+    }
+    virtual QString getFilename() const
+    {
+        return filename;
+    }
+
+    type_e getType() const
+    {
+        return type;
+    }
+
+    /**
+       @brief Get unique project key.
+       @return A MD5 hash string
+     */
+    const QString& getKey()
+    {
+        genKey(); return key;
+    }
+    const QString& getName() const
+    {
+        return metadata.name;
+    }
+    const QDateTime& getTime() const
+    {
+        return metadata.time;
+    }
+    const QString& getKeywords() const
+    {
+        return metadata.keywords;
+    }
+    const QString& getDescription() const
+    {
+        return metadata.desc;
+    }
+    const QList<IGisItem::link_t>& getLinks() const
+    {
+        return metadata.links;
+    }
+
+    void setName(const QString& str);
+    void setKeywords(const QString& str);
+    void setDescription(const QString& str);
+    void setLinks(const QList<IGisItem::link_t>& links);
+
+    /**
+       @brief Get a short metadata summary
+       @return Informational string.
+     */
+    virtual QString getInfo() const;
+    /**
+       @brief Get a temporary pointer to the item with matching key
+       @param key
+       @return If no item is found 0 is returned.
+     */
+    IGisItem * getItemByKey(const IGisItem::key_t &key);
+
+    /**
+       @brief Get a list of items that are close to a given pixel coordinate of the screen
+
+       @note: The returned pointers are just for temporary use. Best you use them to get the item's key.
+
+       @param pos       the coordinate on the screen in pixel
+       @param items     a list the item's pointer is stored to.
+     */
+    void getItemByPos(const QPointF& pos, QList<IGisItem*>& items);
+
+    /**
+       @brief Delete items with matching key
+       @param key
+     */
+    bool delItemByKey(const IGisItem::key_t &key, QMessageBox::StandardButtons &last);
+
+    /**
+       @brief Call IGisItem::edit() method for items with given key
+
+       @param key   a MD5 hash key
+     */
+    void editItemByKey(const IGisItem::key_t &key);
+
+    /**
+       @brief Add a copy if the gven item to the project
+
+       Befor the item is inserted the method will use it's key to find a duplicat item.
+       If there is an item with the same item key a copy option dialog is shown. Depending
+       the result the action is performed or aborted. The result will be copied into
+       lastResult to repeat the same decision on subsequent items.
+
+       @param item          pointer to item
+       @param off           the offset into the tree widget, -1 for none
+       @param lastResult    a reference to hold the last result of the copy option dialog
+     */
+    void insertCopyOfItem(IGisItem *item, int off, int &lastResult);
+
+    /**
+       @brief Check if the project was initialized correctly.
+
+       For example a if a GPX file does not load correctly the project is invalid.
+
+       @return True if project is valid
+     */
+    bool  isValid() const
+    {
+        return valid;
+    }
+
+    void drawItem(QPainter& p, const QPolygonF &viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
+    void drawLabel(QPainter& p, const QPolygonF &viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
+    void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis);
+
+    /**
+       @brief Serialize object out of a QDataStream
+
+       See CGisSerialization.cpp for implementation
+
+       @param stream the binary data stream
+       @return The stream object.
+     */
+    virtual QDataStream& operator<<(QDataStream& stream);
+
+    /**
+       @brief Serialize object into a QDataStream
+
+       See CGisSerialization.cpp for implementation
+
+       @param stream the binary data stream
+       @return The stream object.
+     */
+    virtual QDataStream& operator>>(QDataStream& stream);
+
+    /**
+       @brief writeMetadata
+       @param doc
+       @return
+     */
+    QDomNode writeMetadata(QDomDocument& doc);
+
+protected:
+    void genKey();
+    void setupName(const QString& defaultName);
+    void markAsSaved();
+    void readMetadata(const QDomNode& xml, metadata_t& metadata);
+    void changed();
+
+    // Those are the URIs of the GPX extensions we support
+    static const QString gpxx_ns;
+    static const QString gpxtpx_ns;
+    static const QString wptx1_ns;
+    static const QString rmc_ns;
+    static const QString ql_ns;
+    static const QString gs_ns;
+    // Those are standard GPX/XML namespaces
+    static const QString gpx_ns;
+    static const QString xsi_ns;
+
+    type_e type;
+    QString key;
+    QString filename;
+    bool valid;
+
+    metadata_t metadata;
+
+    QPointer<CDetailsPrj> dlgDetails;
 };
 
 #endif //IGISPROJECT_H
diff --git a/src/gis/qms/CQmsProject.cpp b/src/gis/qms/CQmsProject.cpp
index bc4fe7a..e33e8c6 100644
--- a/src/gis/qms/CQmsProject.cpp
+++ b/src/gis/qms/CQmsProject.cpp
@@ -16,10 +16,10 @@
 
 **********************************************************************************************/
 
-#include "gis/qms/CQmsProject.h"
+#include "gis/CGisListWks.h"
 #include "gis/gpx/CGpxProject.h"
+#include "gis/qms/CQmsProject.h"
 #include "helpers/CSettings.h"
-#include "gis/CGisListWks.h"
 
 
 #include <QtWidgets>
@@ -27,7 +27,7 @@
 
 CQmsProject::CQmsProject(const QString &filename, CGisListWks *parent)
     : IGisProject(eTypeQms, filename, parent)
-{   
+{
     setIcon(CGisListWks::eColumnName,QIcon("://icons/32x32/QmsProject.png"));
 
     // cerate file instance
@@ -52,7 +52,7 @@ CQmsProject::CQmsProject(const QString &filename, CGisListWks *parent)
     QDataStream in(&file);
     in.setByteOrder(QDataStream::LittleEndian);
     in.setVersion(QDataStream::Qt_5_2);
-    *this << in;    
+    *this << in;
     file.close();
 
     markAsSaved();
@@ -64,13 +64,11 @@ CQmsProject::CQmsProject(const QString &filename, CGisListWks *parent)
 
 CQmsProject::~CQmsProject()
 {
-
 }
 
 
 bool CQmsProject::save()
 {
-
     if(filename.isEmpty())
     {
         return saveAs();
diff --git a/src/gis/qms/CQmsProject.h b/src/gis/qms/CQmsProject.h
index c838935..9772b2b 100644
--- a/src/gis/qms/CQmsProject.h
+++ b/src/gis/qms/CQmsProject.h
@@ -23,15 +23,14 @@
 
 class CQmsProject : public IGisProject
 {
-    public:
-        CQmsProject(const QString& filename, CGisListWks * parent);
-        virtual ~CQmsProject();
+public:
+    CQmsProject(const QString& filename, CGisListWks * parent);
+    virtual ~CQmsProject();
 
-        bool save();
-        bool saveAs();
-
-        static bool saveAs(const QString& fn, IGisProject& project);
+    bool save();
+    bool saveAs();
 
+    static bool saveAs(const QString& fn, IGisProject& project);
 };
 
 #endif //CQMSPROJECT_H
diff --git a/src/gis/qms/serialization.cpp b/src/gis/qms/serialization.cpp
index b412780..2c46202 100644
--- a/src/gis/qms/serialization.cpp
+++ b/src/gis/qms/serialization.cpp
@@ -16,13 +16,13 @@
 
 **********************************************************************************************/
 
-#include "gis/prj/IGisProject.h"
+#include "gis/CGisListWks.h"
 #include "gis/db/CDBProject.h"
+#include "gis/ovl/CGisItemOvlArea.h"
+#include "gis/prj/IGisProject.h"
+#include "gis/rte/CGisItemRte.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
-#include "gis/rte/CGisItemRte.h"
-#include "gis/ovl/CGisItemOvlArea.h"
-#include "gis/CGisListWks.h"
 
 #include <QtWidgets>
 
@@ -123,7 +123,7 @@ QDataStream& operator>>(QDataStream& stream, IGisItem::wpt_t& wpt)
 QDataStream& operator<<(QDataStream& stream, const IGisItem::history_event_t& e)
 {
     stream << VER_HIST_EVT;
-    stream << e.time;    
+    stream << e.time;
     stream << e.icon;
     stream << e.comment;
     stream << e.data;
@@ -372,7 +372,7 @@ QDataStream& operator>>(QDataStream& stream, IGisProject::person_t& p)
 
 QDataStream& CGisItemTrk::operator>>(QDataStream& stream)
 {
-    QByteArray  buffer;
+    QByteArray buffer;
     QDataStream out(&buffer, QIODevice::WriteOnly);
     out.setByteOrder(QDataStream::LittleEndian);
     out.setVersion(QDataStream::Qt_5_2);
@@ -397,10 +397,10 @@ QDataStream& CGisItemTrk::operator>>(QDataStream& stream)
 
 QDataStream& CGisItemTrk::operator<<(QDataStream& stream)
 {
-    quint8      version;
-    QByteArray  buffer;
+    quint8 version;
+    QByteArray buffer;
     QIODevice * dev = stream.device();
-    qint64      pos = dev->pos();
+    qint64 pos = dev->pos();
 
     char magic[10];
     stream.readRawData(magic,MAGIC_SIZE);
@@ -443,10 +443,10 @@ QDataStream& CGisItemTrk::operator<<(QDataStream& stream)
 
 QDataStream& CGisItemWpt::operator<<(QDataStream& stream)
 {
-    quint8      version;
-    QByteArray  buffer;
+    quint8 version;
+    QByteArray buffer;
     QIODevice * dev = stream.device();
-    qint64      pos = dev->pos();
+    qint64 pos = dev->pos();
 
     char magic[10];
     stream.readRawData(magic,MAGIC_SIZE);
@@ -481,7 +481,7 @@ QDataStream& CGisItemWpt::operator<<(QDataStream& stream)
 
 QDataStream& CGisItemWpt::operator>>(QDataStream& stream)
 {
-    QByteArray  buffer;
+    QByteArray buffer;
     QDataStream out(&buffer, QIODevice::WriteOnly);
     out.setByteOrder(QDataStream::LittleEndian);
     out.setVersion(QDataStream::Qt_5_2);
@@ -502,10 +502,10 @@ QDataStream& CGisItemWpt::operator>>(QDataStream& stream)
 
 QDataStream& CGisItemRte::operator<<(QDataStream& stream)
 {
-    quint8      version;
-    QByteArray  buffer;
+    quint8 version;
+    QByteArray buffer;
     QIODevice * dev = stream.device();
-    qint64      pos = dev->pos();
+    qint64 pos = dev->pos();
 
     char magic[10];
     stream.readRawData(magic,MAGIC_SIZE);
@@ -545,8 +545,7 @@ QDataStream& CGisItemRte::operator<<(QDataStream& stream)
 
 QDataStream& CGisItemRte::operator>>(QDataStream& stream)
 {
-
-    QByteArray  buffer;
+    QByteArray buffer;
     QDataStream out(&buffer, QIODevice::WriteOnly);
     out.setByteOrder(QDataStream::LittleEndian);
     out.setVersion(QDataStream::Qt_5_2);
@@ -570,11 +569,11 @@ QDataStream& CGisItemRte::operator>>(QDataStream& stream)
 }
 
 QDataStream& CGisItemOvlArea::operator<<(QDataStream& stream)
-{    
-    quint8      version, tmp8;
-    QByteArray  buffer;
+{
+    quint8 version, tmp8;
+    QByteArray buffer;
     QIODevice * dev = stream.device();
-    qint64      pos = dev->pos();
+    qint64 pos = dev->pos();
 
     char magic[10];
     stream.readRawData(magic,MAGIC_SIZE);
@@ -619,7 +618,7 @@ QDataStream& CGisItemOvlArea::operator<<(QDataStream& stream)
 
 QDataStream& CGisItemOvlArea::operator>>(QDataStream& stream)
 {
-    QByteArray  buffer;
+    QByteArray buffer;
     QDataStream out(&buffer, QIODevice::WriteOnly);
     out.setByteOrder(QDataStream::LittleEndian);
     out.setVersion(QDataStream::Qt_5_2);
@@ -648,10 +647,9 @@ QDataStream& CGisItemOvlArea::operator>>(QDataStream& stream)
 
 QDataStream& IGisProject::operator<<(QDataStream& stream)
 {
-
-    quint8      version;
+    quint8 version;
     QIODevice * dev = stream.device();
-    qint64      pos = dev->pos();
+    qint64 pos = dev->pos();
 
     char magic[10];
     stream.readRawData(magic,MAGIC_SIZE);
@@ -693,19 +691,23 @@ QDataStream& IGisProject::operator<<(QDataStream& stream)
         IGisItem * item = 0;
         switch(type)
         {
-            case IGisItem::eTypeWpt:
-                item = new CGisItemWpt(history, this);
-                break;
-            case IGisItem::eTypeTrk:
-                item = new CGisItemTrk(history, this);
-                break;
-            case IGisItem::eTypeRte:
-                item = new CGisItemRte(history, this);
-                break;
-            case IGisItem::eTypeOvl:
-                item = new CGisItemOvlArea(history, this);
-                break;
-            default:;
+        case IGisItem::eTypeWpt:
+            item = new CGisItemWpt(history, this);
+            break;
+
+        case IGisItem::eTypeTrk:
+            item = new CGisItemTrk(history, this);
+            break;
+
+        case IGisItem::eTypeRte:
+            item = new CGisItemRte(history, this);
+            break;
+
+        case IGisItem::eTypeOvl:
+            item = new CGisItemOvlArea(history, this);
+            break;
+
+        default:;
         }
         if(item && changed)
         {
@@ -729,7 +731,7 @@ QDataStream& IGisProject::operator>>(QDataStream& stream)
     stream << metadata.links;
     stream << metadata.time;
     stream << metadata.keywords;
-    stream << metadata.bounds;    
+    stream << metadata.bounds;
     stream << key;
 
     for(int i = 0; i < childCount(); i++)
@@ -786,9 +788,9 @@ QDataStream& IGisProject::operator>>(QDataStream& stream)
 
 QDataStream& CDBProject::operator<<(QDataStream& stream)
 {
-    quint8      version;
+    quint8 version;
     QIODevice * dev = stream.device();
-    qint64      pos = dev->pos();
+    qint64 pos = dev->pos();
 
     char magic[10];
     stream.readRawData(magic,MAGIC_SIZE);
@@ -818,7 +820,7 @@ QDataStream& CDBProject::operator<<(QDataStream& stream)
 }
 
 QDataStream& CDBProject::operator>>(QDataStream& stream)
-{    
+{
     stream.writeRawData(MAGIC_PROJ, MAGIC_SIZE);
     stream << VER_PROJECT;
 
diff --git a/src/gis/rte/CGisItemRte.cpp b/src/gis/rte/CGisItemRte.cpp
index 9486ea0..4116d30 100644
--- a/src/gis/rte/CGisItemRte.cpp
+++ b/src/gis/rte/CGisItemRte.cpp
@@ -16,13 +16,13 @@
 
 **********************************************************************************************/
 
-#include "gis/rte/CGisItemRte.h"
-#include "gis/rte/CScrOptRte.h"
-#include "gis/prj/IGisProject.h"
-#include "gis/WptIcons.h"
+#include "canvas/CCanvas.h"
 #include "gis/CGisDraw.h"
 #include "gis/CGisListWks.h"
-#include "canvas/CCanvas.h"
+#include "gis/WptIcons.h"
+#include "gis/prj/IGisProject.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/rte/CScrOptRte.h"
 
 #include <QtWidgets>
 #include <QtXml>
@@ -42,7 +42,8 @@ CGisItemRte::CGisItemRte(const CGisItemRte& parentRte, IGisProject * project, in
     if(clone)
     {
         rte.name += QObject::tr("_Clone");
-        key.item.clear();
+        key.clear();
+        history.events.clear();
     }
 
     setupHistory();
@@ -52,13 +53,12 @@ CGisItemRte::CGisItemRte(const CGisItemRte& parentRte, IGisProject * project, in
 /// used to create route from GPX file
 CGisItemRte::CGisItemRte(const QDomNode& xml, IGisProject *parent)
     : IGisItem(parent, eTypeRte, parent->childCount())
-    , penForeground(Qt::magenta, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)    
+    , penForeground(Qt::magenta, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
 {
     // --- start read and process data ----
-    readRte(xml, rte);    
+    readRte(xml, rte);
     // --- stop read and process data ----
 
-    genKey();
     setupHistory();
     deriveSecondaryData();
     updateDecoration(eMarkNone, eMarkNone);
@@ -68,7 +68,7 @@ CGisItemRte::CGisItemRte(const history_t& hist, IGisProject * project)
     : IGisItem(project, eTypeRte, project->childCount())
     , penForeground(Qt::magenta, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
 {
-    history = hist;    
+    history = hist;
     loadHistory(hist.histIdxCurrent);
     deriveSecondaryData();
 }
@@ -77,12 +77,11 @@ CGisItemRte::CGisItemRte(quint64 id, QSqlDatabase& db, IGisProject * project)
     : IGisItem(project, eTypeRte, -1)
     , penForeground(Qt::magenta, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
 {
-    loadFromDb(id, db);    
+    loadFromDb(id, db);
 }
 
 CGisItemRte::~CGisItemRte()
 {
-
 }
 
 void CGisItemRte::deriveSecondaryData()
@@ -92,16 +91,27 @@ void CGisItemRte::deriveSecondaryData()
     qreal south =  90;
     qreal west  =  180;
 
-    foreach(const rtept_t& rtept, rte.pts)
+    foreach(const rtept_t &rtept, rte.pts)
     {
-        if(rtept.lon < west)  west    = rtept.lon;
-        if(rtept.lon > east)  east    = rtept.lon;
-        if(rtept.lat < south) south   = rtept.lat;
-        if(rtept.lat > north) north   = rtept.lat;
+        if(rtept.lon < west)
+        {
+            west    = rtept.lon;
+        }
+        if(rtept.lon > east)
+        {
+            east    = rtept.lon;
+        }
+        if(rtept.lat < south)
+        {
+            south   = rtept.lat;
+        }
+        if(rtept.lat > north)
+        {
+            north   = rtept.lat;
+        }
     }
 
     boundingRect = QRectF(QPointF(west * DEG_TO_RAD, north * DEG_TO_RAD), QPointF(east * DEG_TO_RAD,south * DEG_TO_RAD));
-
 }
 
 void CGisItemRte::setSymbol()
@@ -110,6 +120,25 @@ void CGisItemRte::setSymbol()
     setIcon(CGisListWks::eColumnName, icon);
 }
 
+void CGisItemRte::setComment(const QString& str)
+{
+    rte.cmt = str;
+    changed(QObject::tr("Changed comment"), "://icons/48x48/EditText.png");
+}
+
+void CGisItemRte::setDescription(const QString& str)
+{
+    rte.desc = str;
+    changed(QObject::tr("Changed description"), "://icons/48x48/EditText.png");
+}
+
+void CGisItemRte::setLinks(const QList<link_t>& links)
+{
+    rte.links = links;
+    changed(QObject::tr("Changed links"), "://icons/48x48/Link.png");
+}
+
+
 
 QString CGisItemRte::getInfo() const
 {
@@ -128,7 +157,7 @@ QPointF CGisItemRte::getPointCloseBy(const QPoint& screenPos)
 {
     qint32 d    = NOINT;
     QPointF pt  = NOPOINTF;
-    foreach(const QPointF& point, line)
+    foreach(const QPointF &point, line)
     {
         int tmp = (screenPos - point).manhattanLength();
         if(tmp < d)
@@ -145,7 +174,7 @@ QPointF CGisItemRte::getPointCloseBy(const QPoint& screenPos)
 
 bool CGisItemRte::isCloseTo(const QPointF& pos)
 {
-    foreach(const QPointF& pt, line)
+    foreach(const QPointF &pt, line)
     {
         if((pt - pos).manhattanLength() < 10)
         {
@@ -176,7 +205,7 @@ void CGisItemRte::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
     gis->convertRad2Px(p2);
     QRectF extViewport(p1,p2);
 
-    foreach(const rtept_t& rtept, rte.pts)
+    foreach(const rtept_t &rtept, rte.pts)
     {
         QPointF pt(rtept.lon * DEG_TO_RAD, rtept.lat * DEG_TO_RAD);
 
@@ -191,19 +220,17 @@ void CGisItemRte::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
     splitLineToViewport(line, extViewport, lines);
 
     p.setPen(penBackground);
-    foreach(const QPolygonF& line, lines)
+    foreach(const QPolygonF &line, lines)
     {
         p.drawPolyline(line);
     }
     p.setPen(penForeground);
     p.setBrush(penForeground.color());
-    foreach(const QPolygonF& line, lines)
+    foreach(const QPolygonF &line, lines)
     {
         p.drawPolyline(line);
         drawArrows(line, extViewport, p);
     }
-
-
 }
 
 void CGisItemRte::drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF> &blockedAreas, const QFontMetricsF &fm, CGisDraw *gis)
@@ -214,9 +241,8 @@ void CGisItemRte::drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF
     }
 
 
-    foreach(const rtept_t& rtept, rte.pts)
+    foreach(const rtept_t &rtept, rte.pts)
     {
-
         QPointF pt(rtept.lon * DEG_TO_RAD, rtept.lat * DEG_TO_RAD);
 
         gis->convertRad2Px(pt);
@@ -227,11 +253,11 @@ void CGisItemRte::drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF
         rect.adjust(-2,-2,2,2);
 
         // place label on top
-        rect.moveCenter(pt + QPointF(rtept.icon.width()/2, - fm.height()));
+        rect.moveCenter(pt + QPointF(rtept.icon.width()/2, -fm.height()));
         if(isBlocked(rect, blockedAreas))
         {
             // place label on bottom
-            rect.moveCenter(pt + QPointF( rtept.icon.width()/2, + fm.height() + rtept.icon.height()));
+            rect.moveCenter(pt + QPointF( rtept.icon.width()/2, +fm.height() + rtept.icon.height()));
             if(isBlocked(rect, blockedAreas))
             {
                 // place label on right
@@ -239,7 +265,7 @@ void CGisItemRte::drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF
                 if(isBlocked(rect, blockedAreas))
                 {
                     // place label on left
-                    rect.moveCenter(pt + QPointF( - rect.width()/2, +fm.height()));
+                    rect.moveCenter(pt + QPointF( -rect.width()/2, +fm.height()));
                     if(isBlocked(rect, blockedAreas))
                     {
                         // failed to place label anywhere
@@ -264,7 +290,7 @@ void CGisItemRte::drawHighlight(QPainter& p)
     p.setPen(QPen(QColor(255,0,0,100),11,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
     p.drawPolyline(line);
 
-    foreach(const QPointF& pt, line)
+    foreach(const QPointF &pt, line)
     {
         p.drawImage(pt - QPointF(31,31), QImage("://cursors/wptHighlight.png"));
     }
diff --git a/src/gis/rte/CGisItemRte.h b/src/gis/rte/CGisItemRte.h
index 1ab630f..3ec88c1 100644
--- a/src/gis/rte/CGisItemRte.h
+++ b/src/gis/rte/CGisItemRte.h
@@ -30,68 +30,93 @@ class CQlgtRoute;
 
 class CGisItemRte : public IGisItem, public IGisLine
 {
-    public:
-        struct rtept_t : public wpt_t
+public:
+    struct rtept_t : public wpt_t
+    {
+        QPixmap icon;
+        QPointF focus;
+    };
+
+    struct rte_t
+    {
+        rte_t() : number(0)
         {
-            QPixmap icon;
-            QPointF focus;
-        };
-
-        CGisItemRte(const QDomNode &xml, IGisProject *parent);
-        CGisItemRte(const CGisItemRte& parentRte, IGisProject *project, int idx, bool clone);
-        CGisItemRte(const history_t& hist, IGisProject * project);
-        CGisItemRte(quint64 id, QSqlDatabase& db, IGisProject * project);
-        CGisItemRte(const CQlgtRoute& rte1);
-        virtual ~CGisItemRte();
-
-        QDataStream& operator<<(QDataStream& stream);
-        QDataStream& operator>>(QDataStream& stream);
-
-        const QString& getName() const {return rte.name;}
-        QString getInfo() const;
-        IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse);
-        QPointF getPointCloseBy(const QPoint& screenPos);
-        void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
-        void drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
-        void drawHighlight(QPainter& p);
-        void save(QDomNode& gpx);
-        bool isCloseTo(const QPointF& pos);
-        void gainUserFocus(bool yes);
-
-        void setDataFromPolyline(const QPolygonF& line){}
-        void getPolylineFromData(QPolygonF& line){}
-
-    private:
-        struct rte_t;
-        void deriveSecondaryData();
-        void setSymbol();
-        void readRte(const QDomNode& xml, rte_t& rte);
-
-        static key_t keyUserFocus;
-
-
-        struct rte_t
-        {
-            rte_t() : number(0) {}
-            // -- all gpx tags - start
-            QString name;
-            QString cmt;
-            QString desc;
-            QString src;
-            QList<link_t> links;
-            quint64 number;
-            QString type;
-            QVector<rtept_t> pts;
-            // -- all gpx tags - stop
-            QMap<QString, QVariant> extensions;
-        };
-
-        static const QPen penBackground;
-        QPen penForeground;
-
-        rte_t rte;
-        QPolygonF line;
-
+        }
+        // -- all gpx tags - start
+        QString name;
+        QString cmt;
+        QString desc;
+        QString src;
+        QList<link_t> links;
+        quint64 number;
+        QString type;
+        QVector<rtept_t> pts;
+        // -- all gpx tags - stop
+        QMap<QString, QVariant> extensions;
+    };
+
+    CGisItemRte(const QDomNode &xml, IGisProject *parent);
+    CGisItemRte(const CGisItemRte& parentRte, IGisProject *project, int idx, bool clone);
+    CGisItemRte(const history_t& hist, IGisProject * project);
+    CGisItemRte(quint64 id, QSqlDatabase& db, IGisProject * project);
+    CGisItemRte(const CQlgtRoute& rte1);
+    virtual ~CGisItemRte();
+
+    QDataStream& operator<<(QDataStream& stream);
+    QDataStream& operator>>(QDataStream& stream);
+
+    const QString& getName() const
+    {
+        return rte.name;
+    }
+    QString getInfo() const;
+    IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse);
+    QPointF getPointCloseBy(const QPoint& screenPos);
+    void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
+    void drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
+    void drawHighlight(QPainter& p);
+    void save(QDomNode& gpx);
+    bool isCloseTo(const QPointF& pos);
+    void gainUserFocus(bool yes);
+
+    void setDataFromPolyline(const QPolygonF& line)
+    {
+    }
+    void getPolylineFromData(QPolygonF& line)
+    {
+    }
+
+    const QString& getComment() const
+    {
+        return rte.cmt;
+    }
+    const QString& getDescription() const
+    {
+        return rte.desc;
+    }
+    const QList<link_t>& getLinks() const
+    {
+        return rte.links;
+    }
+
+    void setComment(const QString& str);
+    void setDescription(const QString& str);
+    void setLinks(const QList<link_t>& links);
+
+private:
+    void deriveSecondaryData();
+    void setSymbol();
+    void readRte(const QDomNode& xml, rte_t& rte);
+
+    static key_t keyUserFocus;
+
+
+
+    static const QPen penBackground;
+    QPen penForeground;
+
+    rte_t rte;
+    QPolygonF line;
 };
 
 #endif //CGISITEMRTE_H
diff --git a/src/gis/rte/CScrOptRte.cpp b/src/gis/rte/CScrOptRte.cpp
index 91578d9..402c2d5 100644
--- a/src/gis/rte/CScrOptRte.cpp
+++ b/src/gis/rte/CScrOptRte.cpp
@@ -16,12 +16,12 @@
 
 **********************************************************************************************/
 
-#include "gis/rte/CScrOptRte.h"
-#include "gis/rte/CGisItemRte.h"
+#include "CMainWindow.h"
+#include "canvas/CCanvas.h"
 #include "gis/CGisWidget.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/rte/CScrOptRte.h"
 #include "mouse/IMouse.h"
-#include "canvas/CCanvas.h"
-#include "CMainWindow.h"
 
 CScrOptRte::CScrOptRte(CGisItemRte *rte, const QPoint& point, IMouse *parent)
     : IScrOpt(parent->getCanvas())
@@ -45,7 +45,6 @@ CScrOptRte::CScrOptRte(CGisItemRte *rte, const QPoint& point, IMouse *parent)
 
 CScrOptRte::~CScrOptRte()
 {
-
 }
 
 void CScrOptRte::slotDelete()
diff --git a/src/gis/rte/CScrOptRte.h b/src/gis/rte/CScrOptRte.h
index 3f9bb6f..21543df 100644
--- a/src/gis/rte/CScrOptRte.h
+++ b/src/gis/rte/CScrOptRte.h
@@ -19,11 +19,11 @@
 #ifndef CSCROPTRTE_H
 #define CSCROPTRTE_H
 
-#include "mouse/IScrOpt.h"
 #include "gis/IGisItem.h"
+#include "mouse/IScrOpt.h"
 
-#include <QWidget>
 #include "ui_IScrOptRte.h"
+#include <QWidget>
 
 class CGisItemRte;
 class IMouse;
@@ -31,19 +31,19 @@ class IMouse;
 class CScrOptRte : public IScrOpt, private Ui::IScrOptRte
 {
     Q_OBJECT
-    public:
-        CScrOptRte(CGisItemRte * rte, const QPoint &point, IMouse *parent);        
-        virtual ~CScrOptRte();
+public:
+    CScrOptRte(CGisItemRte * rte, const QPoint &point, IMouse *parent);
+    virtual ~CScrOptRte();
 
-        void draw(QPainter& p);
+    void draw(QPainter& p);
 
-    private slots:
-        void slotDelete();
-        void slotCopy();
+private slots:
+    void slotDelete();
+    void slotCopy();
 
-    private:
-        IGisItem::key_t key;
-        QPointF anchor;
+private:
+    IGisItem::key_t key;
+    QPointF anchor;
 };
 
 #endif //CSCROPTRTE_H
diff --git a/src/gis/search/CSearchGoogle.cpp b/src/gis/search/CSearchGoogle.cpp
index 46e1be3..ce71e4f 100644
--- a/src/gis/search/CSearchGoogle.cpp
+++ b/src/gis/search/CSearchGoogle.cpp
@@ -16,17 +16,17 @@
 
 **********************************************************************************************/
 
-#include "gis/search/CSearchGoogle.h"
+#include "CMainWindow.h"
+#include "canvas/CCanvas.h"
 #include "gis/CGisListWks.h"
 #include "gis/WptIcons.h"
+#include "gis/search/CSearchGoogle.h"
 #include "gis/wpt/CGisItemWpt.h"
-#include "helpers/CWptIconDialog.h"
-#include "canvas/CCanvas.h"
-#include "CMainWindow.h"
 #include "helpers/CSettings.h"
+#include "helpers/CWptIconDialog.h"
 
-#include <QtWidgets>
 #include <QtNetwork>
+#include <QtWidgets>
 #include <QtXml>
 
 CSearchGoogle::CSearchGoogle(CGisListWks * parent)
@@ -64,7 +64,6 @@ void CSearchGoogle::slotChangeSymbol()
 
     SETTINGS;
     cfg.setValue("Search/symbol", actSymbol->objectName());
-
 }
 
 void CSearchGoogle::slotStartSearch()
@@ -157,7 +156,6 @@ void CSearchGoogle::slotRequestFinished(QNetworkReply* reply)
 
 
                 new CGisItemWpt(QPointF(lon,lat), address, actSymbol->objectName(), this);
-
             }
         }
     }
@@ -168,5 +166,4 @@ void CSearchGoogle::slotRequestFinished(QNetworkReply* reply)
     {
         canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
     }
-
 }
diff --git a/src/gis/search/CSearchGoogle.h b/src/gis/search/CSearchGoogle.h
index 462786d..28b903d 100644
--- a/src/gis/search/CSearchGoogle.h
+++ b/src/gis/search/CSearchGoogle.h
@@ -21,8 +21,8 @@
 
 #include <gis/prj/IGisProject.h>
 
-#include <QObject>
 #include <QNetworkAccessManager>
+#include <QObject>
 
 class CGisListWks;
 class QLineEdit;
@@ -30,24 +30,30 @@ class QLineEdit;
 class CSearchGoogle : public QObject, public IGisProject
 {
     Q_OBJECT
-    public:
-        CSearchGoogle(CGisListWks * parent);
-        virtual ~CSearchGoogle();
-
-        bool save(){return false;}
-        bool saveAs(){return false;}
-
-    private slots:
-        void slotChangeSymbol();
-        void slotStartSearch();
-        void slotRequestFinished(QNetworkReply* reply);
-
-    private:
-        QLineEdit * edit;
-
-        QAction * actSymbol;
-
-        QNetworkAccessManager networkAccessManager;
+public:
+    CSearchGoogle(CGisListWks * parent);
+    virtual ~CSearchGoogle();
+
+    bool save()
+    {
+        return false;
+    }
+    bool saveAs()
+    {
+        return false;
+    }
+
+private slots:
+    void slotChangeSymbol();
+    void slotStartSearch();
+    void slotRequestFinished(QNetworkReply* reply);
+
+private:
+    QLineEdit * edit;
+
+    QAction * actSymbol;
+
+    QNetworkAccessManager networkAccessManager;
 };
 
 #endif //CSEARCHGOOGLE_H
diff --git a/src/gis/trk/CCombineTrk.cpp b/src/gis/trk/CCombineTrk.cpp
index 71ed329..a146cb5 100644
--- a/src/gis/trk/CCombineTrk.cpp
+++ b/src/gis/trk/CCombineTrk.cpp
@@ -16,9 +16,9 @@
 
 **********************************************************************************************/
 
+#include "gis/prj/IGisProject.h"
 #include "gis/trk/CCombineTrk.h"
 #include "gis/trk/CGisItemTrk.h"
-#include "gis/prj/IGisProject.h"
 #include "plot/CPlotTrack.h"
 
 #include <QtWidgets>
@@ -71,12 +71,10 @@ CCombineTrk::CCombineTrk(CGisItemTrk& trk, IGisProject& project, QWidget * paren
 
     slotSelectionChanged();
     updatePreview();
-
 }
 
 CCombineTrk::~CCombineTrk()
 {
-
 }
 
 void CCombineTrk::accept()
@@ -173,14 +171,16 @@ void CCombineTrk::slotUp()
     if(item)
     {
         int row = listSelected->row(item);
-        if(row == 0) return;
+        if(row == 0)
+        {
+            return;
+        }
         listSelected->takeItem(row);
         row = row - 1;
         listSelected->insertItem(row,item);
         listSelected->setCurrentItem(item);
     }
     updatePreview();
-
 }
 
 void CCombineTrk::slotDown()
@@ -189,7 +189,10 @@ void CCombineTrk::slotDown()
     if(item)
     {
         int row = listSelected->row(item);
-        if(row == (listSelected->count() - 1)) return;
+        if(row == (listSelected->count() - 1))
+        {
+            return;
+        }
         listSelected->takeItem(row);
         row = row + 1;
         listSelected->insertItem(row,item);
@@ -203,7 +206,7 @@ void CCombineTrk::updatePreview()
 {
     QPolygonF line;
     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();
diff --git a/src/gis/trk/CCombineTrk.h b/src/gis/trk/CCombineTrk.h
index 5d77032..13e6a55 100644
--- a/src/gis/trk/CCombineTrk.h
+++ b/src/gis/trk/CCombineTrk.h
@@ -19,9 +19,9 @@
 #ifndef CCOMBINETRK_H
 #define CCOMBINETRK_H
 
-#include <QDialog>
 #include "gis/IGisItem.h"
 #include "ui_ICombineTrk.h"
+#include <QDialog>
 
 class CGisItemTrk;
 class IGisProject;
@@ -29,28 +29,31 @@ class IGisProject;
 class CCombineTrk : public QDialog, private Ui::ICombineTrk
 {
     Q_OBJECT
-    public:
-        CCombineTrk(CGisItemTrk& trk, IGisProject &project, QWidget * parent);
-        virtual ~CCombineTrk();
-
-        const QList<IGisItem::key_t>& getTrackKeys(){return keys;}
-
-    public slots:
-        void accept();
-
-    private slots:
-        void slotSelectionChanged();
-        void slotSelect();
-        void slotRemove();
-        void slotUp();
-        void slotDown();
-
-    private:
-        void updatePreview();
-        CGisItemTrk& trk;
-        IGisProject& project;
-
-        QList<IGisItem::key_t> keys;
+public:
+    CCombineTrk(CGisItemTrk& trk, IGisProject &project, QWidget * parent);
+    virtual ~CCombineTrk();
+
+    const QList<IGisItem::key_t>& getTrackKeys()
+    {
+        return keys;
+    }
+
+public slots:
+    void accept();
+
+private slots:
+    void slotSelectionChanged();
+    void slotSelect();
+    void slotRemove();
+    void slotUp();
+    void slotDown();
+
+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 56a0184..3081cb0 100644
--- a/src/gis/trk/CDetailsTrk.cpp
+++ b/src/gis/trk/CDetailsTrk.cpp
@@ -16,20 +16,21 @@
 
 **********************************************************************************************/
 
+#include "GeoMath.h"
 #include "gis/trk/CDetailsTrk.h"
-#include "gis/trk/filter/CFilterDouglasPeuker.h"
 #include "gis/trk/filter/CFilterDelete.h"
+#include "gis/trk/filter/CFilterDouglasPeuker.h"
 #include "gis/trk/filter/CFilterMedian.h"
-#include "gis/trk/filter/CFilterReplaceElevation.h"
-#include "gis/trk/filter/CFilterOffsetElevation.h"
 #include "gis/trk/filter/CFilterNewDate.h"
 #include "gis/trk/filter/CFilterObscureDate.h"
+#include "gis/trk/filter/CFilterOffsetElevation.h"
+#include "gis/trk/filter/CFilterReplaceElevation.h"
+#include "gis/trk/filter/CFilterReset.h"
 #include "gis/trk/filter/CFilterSpeed.h"
+#include "helpers/CLinksDialog.h"
 #include "helpers/CSettings.h"
 #include "helpers/CTextEditWidget.h"
-#include "helpers/CLinksDialog.h"
 #include "units/IUnit.h"
-#include "GeoMath.h"
 
 #include <QtWidgets>
 #include <proj_api.h>
@@ -39,7 +40,7 @@ CDetailsTrk::CDetailsTrk(CGisItemTrk& trk, QWidget *parent)
     , trk(trk)
     , originator(false)
 {
-    setupUi(this);    
+    setupUi(this);
 
     QPixmap icon(16,8);
     for(int i=0; i < TRK_N_COLORS; ++i)
@@ -59,6 +60,9 @@ CDetailsTrk::CDetailsTrk(CGisItemTrk& trk, QWidget *parent)
     treeFilter->setItemWidget(item,0, new CFilterDouglasPeuker(trk, treeFilter));
 
     item = new QTreeWidgetItem(item0);
+    treeFilter->setItemWidget(item,0, new CFilterReset(trk, treeFilter));
+
+    item = new QTreeWidgetItem(item0);
     treeFilter->setItemWidget(item,0, new CFilterDelete(trk, treeFilter));
 
     item0 = new QTreeWidgetItem(treeFilter);
@@ -112,8 +116,9 @@ CDetailsTrk::CDetailsTrk(CGisItemTrk& trk, QWidget *parent)
 
     connect(listHistory, SIGNAL(sigChanged()), this, SLOT(setupGui()));
 
-    slotShowPlots();
+    trk.findWaypointsCloseBy();
 
+    slotShowPlots();
 }
 
 CDetailsTrk::~CDetailsTrk()
@@ -130,7 +135,7 @@ CDetailsTrk::~CDetailsTrk()
 
 
 void CDetailsTrk::setupGui()
-{    
+{
     if(originator)
     {
         return;
@@ -153,7 +158,7 @@ void CDetailsTrk::setupGui()
     }
 
     labelInfo->setText(trk.getInfo());
-    lineName->setEnabled(!isReadOnly);    
+    lineName->setEnabled(!isReadOnly);
     comboColor->setCurrentIndex(trk.getColorIdx());
     comboColor->setEnabled(!isReadOnly);
     toolLock->setChecked(isReadOnly);
@@ -164,7 +169,6 @@ void CDetailsTrk::setupGui()
     {
         foreach(const CGisItemTrk::trkpt_t& trkpt, seg.pts)
         {
-
             QTreeWidgetItem * item = new QTreeWidgetItem();
             item->setTextAlignment(eColNum,Qt::AlignLeft);
             item->setTextAlignment(eColEle,Qt::AlignRight);
@@ -249,7 +253,6 @@ void CDetailsTrk::setupGui()
             item->setText(eColPosition,str);
 
             items << item;
-
         }
     }
 
@@ -261,8 +264,8 @@ void CDetailsTrk::setupGui()
 
     textCmtDesc->document()->clear();
     textCmtDesc->append(IGisItem::createText(isReadOnly, trk.getComment(), trk.getDescription(), trk.getLinks()));
-    textCmtDesc->moveCursor (QTextCursor::Start) ;
-    textCmtDesc->ensureCursorVisible() ;
+    textCmtDesc->moveCursor (QTextCursor::Start);
+    textCmtDesc->ensureCursorVisible();
 
     plotElevation->setTrack(&trk);
     plotDistance->setTrack(&trk);
@@ -342,7 +345,6 @@ void CDetailsTrk::slotChangeReadOnlyMode(bool on)
 {
     trk.setReadOnlyMode(on);
     setupGui();
-
 }
 
 void CDetailsTrk::slotNameChanged(const QString& name)
@@ -362,7 +364,7 @@ void CDetailsTrk::slotNameChanged(const QString& name)
 
 void CDetailsTrk::slotNameChanged()
 {
-    QString  name  = lineName->text();
+    QString name  = lineName->text();
     QString _name_ = trk.getName();
 
     QPalette palette = lineName->palette();
diff --git a/src/gis/trk/CDetailsTrk.h b/src/gis/trk/CDetailsTrk.h
index 105d0b5..2ac5ece 100644
--- a/src/gis/trk/CDetailsTrk.h
+++ b/src/gis/trk/CDetailsTrk.h
@@ -19,58 +19,58 @@
 #ifndef CDETAILSTRK_H
 #define CDETAILSTRK_H
 
-#include <QWidget>
 #include "ui_IDetailsTrk.h"
+#include <QWidget>
 
 class CGisItemTrk;
 
 class CDetailsTrk : public QWidget, private Ui::IDetailsTrk
 {
     Q_OBJECT
-    public:
-        CDetailsTrk(CGisItemTrk &trk, QWidget * parent);
-        virtual ~CDetailsTrk();
-
-        void setMouseMoveFocus(const CGisItemTrk::trkpt_t * pt);
-        void setMouseClickFocus(const CGisItemTrk::trkpt_t * pt);
-
-    public slots:
-        void setupGui();
-
-    private slots:
-        void slotShowPlots();
-        void slotColorChanged(int idx);
-        void slotChangeReadOnlyMode(bool on);
-        void slotNameChanged();
-        void slotNameChanged(const QString& name);
-        void slotItemSelectionChanged();
-        void slotLinkActivated(const QUrl& url);
-
-    private:
-        enum columns_t
-        {
-            eColNum
-            ,eColTime
-            ,eColEle
-            ,eColDelta
-            ,eColDist
-            ,eColSpeed
-            ,eColSlope
-            ,eColAscend
-            ,eColDescend
-            ,eColPosition
-            ,eColMax
-        };
-
-        /**
-           @brief Pointer to track item
-
-           It is ok to store the pointer as this widget is created by the track item. The
-           track item will destroy this object on it's own destruction.
-        */
-        CGisItemTrk& trk;
-
-        bool originator;
+public:
+    CDetailsTrk(CGisItemTrk &trk, QWidget * parent);
+    virtual ~CDetailsTrk();
+
+    void setMouseMoveFocus(const CGisItemTrk::trkpt_t * pt);
+    void setMouseClickFocus(const CGisItemTrk::trkpt_t * pt);
+
+public slots:
+    void setupGui();
+
+private slots:
+    void slotShowPlots();
+    void slotColorChanged(int idx);
+    void slotChangeReadOnlyMode(bool on);
+    void slotNameChanged();
+    void slotNameChanged(const QString& name);
+    void slotItemSelectionChanged();
+    void slotLinkActivated(const QUrl& url);
+
+private:
+    enum columns_t
+    {
+        eColNum
+        ,eColTime
+        ,eColEle
+        ,eColDelta
+        ,eColDist
+        ,eColSpeed
+        ,eColSlope
+        ,eColAscend
+        ,eColDescend
+        ,eColPosition
+        ,eColMax
+    };
+
+    /**
+       @brief Pointer to track item
+
+       It is ok to store the pointer as this widget is created by the track item. The
+       track item will destroy this object on it's own destruction.
+     */
+    CGisItemTrk& trk;
+
+    bool originator;
 };
 
 #endif //CDETAILSTRK_H
diff --git a/src/gis/trk/CGisItemTrk.cpp b/src/gis/trk/CGisItemTrk.cpp
index c41ebb1..658b0fe 100644
--- a/src/gis/trk/CGisItemTrk.cpp
+++ b/src/gis/trk/CGisItemTrk.cpp
@@ -25,6 +25,7 @@
 #include "gis/trk/CDetailsTrk.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/trk/CScrOptTrk.h"
+#include "gis/wpt/CGisItemWpt.h"
 #include "plot/IPlot.h"
 
 #include <QtWidgets>
@@ -100,7 +101,6 @@ const QPen CGisItemTrk::penBackground(Qt::white, 5, Qt::SolidLine, Qt::RoundCap,
 
 IGisItem::key_t CGisItemTrk::keyUserFocus;
 
-/// used to create a new track from a part of an existing track
 CGisItemTrk::CGisItemTrk(const QString &name, qint32 idx1, qint32 idx2, const trk_t& srctrk, IGisProject * project)
     : IGisItem(project, eTypeTrk, -1)
     , penForeground(Qt::blue, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
@@ -142,13 +142,10 @@ CGisItemTrk::CGisItemTrk(const QString &name, qint32 idx1, qint32 idx2, const tr
     trk.type    = srctrk.type;
 
     deriveSecondaryData();
-
-    genKey();
     setupHistory();
     updateDecoration(eMarkChanged, eMarkNone);
 }
 
-/// used to create a copy of track with new parent
 CGisItemTrk::CGisItemTrk(const CGisItemTrk& parentTrk, IGisProject *project, int idx, bool clone)
     : IGisItem(project, eTypeTrk, idx)
     , penForeground(Qt::blue, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
@@ -162,14 +159,16 @@ CGisItemTrk::CGisItemTrk(const CGisItemTrk& parentTrk, IGisProject *project, int
     if(clone)
     {
         trk.name += QObject::tr("_Clone");
-        key.item.clear();
+        key.clear();
+        history.events.clear();
     }
 
+    deriveSecondaryData();
     setupHistory();
     updateDecoration(eMarkChanged, eMarkNone);
 }
 
-/// usd to create a track from a line of coordinates
+
 CGisItemTrk::CGisItemTrk(const QPolygonF& l, const QString& name, IGisProject * project, int idx)
     : IGisItem(project, eTypeTrk, idx)
     , penForeground(Qt::blue, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
@@ -181,14 +180,13 @@ CGisItemTrk::CGisItemTrk(const QPolygonF& l, const QString& name, IGisProject *
     readTrackDataFromPolyLine(l);
 
     flags |=  eFlagCreatedInQms|eFlagWriteAllowed;
-
     setColor(str2color(""));
-    genKey();
+
     setupHistory();
     updateDecoration(eMarkChanged, eMarkNone);
 }
 
-/// used to create track from GPX file
+
 CGisItemTrk::CGisItemTrk(const QDomNode& xml, IGisProject *project)
     : IGisItem(project, eTypeTrk, project->childCount())
     , penForeground(Qt::blue, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
@@ -200,7 +198,7 @@ CGisItemTrk::CGisItemTrk(const QDomNode& xml, IGisProject *project)
     setColor(penForeground.color());
     readTrk(xml, trk);
     // --- stop read and process data ----
-    genKey();
+
     setupHistory();
     updateDecoration(eMarkNone, eMarkNone);
 }
@@ -326,7 +324,7 @@ QString CGisItemTrk::getInfo() const
 
     if(cntVisiblePoints == 0)
     {
-        return(str);
+        return str;
     }
 
     IUnit::self().meter2distance(totalDistance, val1, unit1);
@@ -377,7 +375,7 @@ QString CGisItemTrk::getInfo() const
     str += QObject::tr("Points: %1 (%2)").arg(cntVisiblePoints).arg(cntTotalPoints);
 
 
-    return(str);
+    return str;
 }
 
 QString CGisItemTrk::getInfoRange()
@@ -386,7 +384,7 @@ QString CGisItemTrk::getInfoRange()
     QString str, val, unit;
     if(mouseClickFocus == 0 || mouseMoveFocus == 0)
     {
-        return(str);
+        return str;
     }
 
     int idx1 = mouseClickFocus->idxTotal;
@@ -431,7 +429,7 @@ QString CGisItemTrk::getInfoRange()
     str += QString("%3 %1%2 (%4%5, %6%)").arg(val).arg(unit).arg(QChar(0x2198)).arg(qRound(slope1)).arg(QChar(0260)).arg(qRound(slope2));
 
 
-    return(str);
+    return str;
 }
 
 QString CGisItemTrk::getInfoTrkPt(const trkpt_t& pt)
@@ -450,7 +448,7 @@ QString CGisItemTrk::getInfoTrkPt(const trkpt_t& pt)
         str += QObject::tr(" speed: %1%2").arg(val1).arg(unit1);
     }
 
-    return(str);
+    return str;
 }
 
 QString CGisItemTrk::getInfoProgress(const trkpt_t& pt)
@@ -497,7 +495,7 @@ QString CGisItemTrk::getInfoProgress(const trkpt_t& pt)
         str += QObject::tr(" Moving: - (-) ");
     }
 
-    return(str);
+    return str;
 }
 
 IScrOpt * CGisItemTrk::getScreenOptions(const QPoint& origin, IMouse * mouse)
@@ -506,7 +504,7 @@ IScrOpt * CGisItemTrk::getScreenOptions(const QPoint& origin, IMouse * mouse)
     {
         scrOpt = new CScrOptTrk(this, origin, mouse);
     }
-    return(scrOpt);
+    return scrOpt;
 }
 
 QPointF CGisItemTrk::getPointCloseBy(const QPoint& screenPos)
@@ -527,13 +525,13 @@ QPointF CGisItemTrk::getPointCloseBy(const QPoint& screenPos)
 
     if(idx < 0)
     {
-        return(NOPOINTF);
+        return NOPOINTF;
     }
 
     const trkpt_t * newPointOfFocus = getVisibleTrkPtByIndex(idx);
     publishMouseFocus(newPointOfFocus, eFocusMouseClick, 0);
 
-    return(lineSimple[idx]);
+    return lineSimple[idx];
 }
 
 
@@ -771,6 +769,105 @@ void CGisItemTrk::deriveSecondaryData()
 //    qDebug() << "totalElapsedSecondsMoving" << totalElapsedSecondsMoving;
 }
 
+struct trkwpt_t
+{
+    trkwpt_t() : x(0), y(0), idx(-1), lastDistance(20*20)
+    {
+
+    }
+
+    qreal x;
+    qreal y;
+    IGisItem::key_t key;
+    qint32 idx;
+    qreal  lastDistance;
+};
+
+void CGisItemTrk::findWaypointsCloseBy()
+{
+    IGisProject * project = dynamic_cast<IGisProject*>(parent());
+    if(project == 0)
+    {
+        return;
+    }
+
+    QVector<pointDP> line;
+
+    // combine all segments to a single line
+    foreach (const trkseg_t &seg, trk.segs)
+    {
+        foreach(const trkpt_t &pt, seg.pts)
+        {
+            if(pt.flags & CGisItemTrk::trkpt_t::eHidden)
+            {
+                continue;
+            }
+            pointDP dp;
+            dp.x    = pt.lon * DEG_TO_RAD;
+            dp.y    = pt.lat * DEG_TO_RAD;
+            dp.idx  = pt.idxTotal;
+            line << dp;
+        }
+    }
+
+    // convert coodinates of all waypoints into meter coordinates relative to the first track point
+    point3D pt0 = line[0];
+    QList<trkwpt_t> trkwpts;
+    for(int i=0; i < project->childCount(); i++)
+    {
+        CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(project->child(i));
+        if(wpt == 0)
+        {
+            continue;
+        }
+
+        QPointF pos;
+        pos = wpt->getPosition();
+
+        trkwpt_t trkwpt;
+        trkwpt.x      = pos.x() * DEG_TO_RAD;
+        trkwpt.y      = pos.y() * DEG_TO_RAD;
+        trkwpt.key    = wpt->getKey();
+
+        qreal a1, a2;
+        qreal d = GPS_Math_Distance(pt0.x, pt0.y, trkwpt.x, trkwpt.y, a1, a2);
+
+        trkwpt.x = cos(a1 * DEG_TO_RAD) * d;
+        trkwpt.y = sin(a1 * DEG_TO_RAD) * d;
+
+        trkwpts << trkwpt;
+    }
+
+
+    // convert all coordinates into meter relative to the first track point.
+    line[0].x = 0;
+    line[0].y = 0;
+    for(int i = 1; i < line.size(); i++)
+    {
+        qreal d, a1, a2;
+        pointDP& pt1 = line[i - 1];
+        pointDP& pt2 = line[i];
+
+        d = GPS_Math_Distance(pt0.x, pt0.y, pt2.x, pt2.y, a1, a2);
+
+        pt0 = pt2;
+
+        pt2.x = pt1.x + cos(a1 * DEG_TO_RAD) * d;
+        pt2.y = pt1.y + sin(a1 * DEG_TO_RAD) * d;
+
+        // test for waypoint close by
+        for(int n = 0; n < trkwpts.size(); n++)
+        {
+            trkwpt_t& trkwpt = trkwpts[n];
+            qreal d = (trkwpt.x - pt2.x)*(trkwpt.x - pt2.x) + (trkwpt.y - pt2.y)*(trkwpt.y - pt2.y);
+            if(d < trkwpt.lastDistance)
+            {
+                trkwpt.idx = pt2.idx;
+                trkwpt.lastDistance = d;
+            }
+        }
+    }
+}
 
 bool CGisItemTrk::isCloseTo(const QPointF& pos)
 {
@@ -778,16 +875,15 @@ bool CGisItemTrk::isCloseTo(const QPointF& pos)
     {
         if((pt - pos).manhattanLength() < MIN_DIST_CLOSE_TO)
         {
-            return(true);
+            return true;
         }
     }
-    return(false);
+    return false;
 }
 
 void CGisItemTrk::gainUserFocus(bool yes)
 {
     keyUserFocus    = yes ? key : key_t();
-
 }
 
 void CGisItemTrk::edit()
@@ -806,14 +902,14 @@ bool CGisItemTrk::cut()
 {
     if(mouseClickFocus == 0)
     {
-        return(false);
+        return false;
     }
 
     QString name1 = getName() + QString(" (%1 - %2)").arg(0).arg(mouseClickFocus->idxTotal);
     name1 = QInputDialog::getText(0, QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, name1);
     if(name1.isEmpty())
     {
-        return(false);
+        return false;
     }
 
     IGisProject * project = CGisWidget::self().selectProject();
@@ -828,7 +924,7 @@ bool CGisItemTrk::cut()
     name1 = QInputDialog::getText(0, QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, name1);
     if(name1.isEmpty())
     {
-        return(false);
+        return false;
     }
 
     project = CGisWidget::self().selectProject();
@@ -839,13 +935,11 @@ bool CGisItemTrk::cut()
 
     new CGisItemTrk(name1, mouseClickFocus->idxTotal, cntTotalPoints-1, trk, project);
 
-    return(true);
+    return true;
 }
 
 void CGisItemTrk::reverse()
 {
-
-
     QString name1 = QInputDialog::getText(0, QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, getName() + "_rev");
     if(name1.isEmpty())
     {
@@ -858,11 +952,18 @@ void CGisItemTrk::reverse()
         return;
     }
 
+    // start with a 1:1 copy of the first track
     CGisItemTrk * trk1 = new CGisItemTrk(*this, project, -1, false);
-    trk1->key.item.clear();
-
     trk1->trk.name = name1;
+    /*
+        clear track data, item key and history. To clear the history is important as
+        the original track's history would restore the original key
+
+     */
     trk1->trk.segs.clear();
+    trk1->key.clear();
+    trk1->history.events.clear();
+
     foreach(const trkseg_t &seg, trk.segs)
     {
         trkseg_t seg1;
@@ -875,7 +976,9 @@ void CGisItemTrk::reverse()
         }
         trk1->trk.segs.push_front(seg1);
     }
+    // restore secondary data and create a new history
     trk1->deriveSecondaryData();
+    trk1->setupHistory();
     trk1->updateDecoration(eMarkChanged, eMarkNone);
 }
 
@@ -908,10 +1011,21 @@ void CGisItemTrk::combine()
         return;
     }
 
+    // start with a 1:1 copy of the first track
     CGisItemTrk * trk1 = new CGisItemTrk(*this, projectNew, -1, false);
-
+    // replace name
     trk1->trk.name = name1;
+
+    /*
+        clear track data, item key and history. To clear the history is important as
+        the original track's history would restore the original key
+
+     */
     trk1->trk.segs.clear();
+    trk1->key.clear();
+    trk1->history.events.clear();
+
+    // copy the segments of all tracks to new track
     foreach(const IGisItem::key_t &key, keys)
     {
         CGisItemTrk * trk2 = dynamic_cast<CGisItemTrk*>(project->getItemByKey(key));
@@ -923,7 +1037,9 @@ void CGisItemTrk::combine()
         trk1->trk.segs += trk2->trk.segs;
     }
 
+    // restore secondary data and create a new history
     trk1->deriveSecondaryData();
+    trk1->setupHistory();
     trk1->updateDecoration(eMarkChanged, eMarkNone);
 }
 
@@ -1473,7 +1589,7 @@ QPointF CGisItemTrk::setMouseFocusByPoint(const QPoint& pt, focusmode_e mode)
     }
     publishMouseFocus(newPointOfFocus, mode, 0);
 
-    return(newPointOfFocus ? lineSimple[idx] : NOPOINTF);
+    return newPointOfFocus ? lineSimple[idx] : NOPOINTF;
 }
 
 
@@ -1508,12 +1624,12 @@ const CGisItemTrk::trkpt_t * CGisItemTrk::getVisibleTrkPtByIndex(quint32 idx)
             }
             if(i == idx)
             {
-                return(&pt);
+                return &pt;
             }
             i++;
         }
     }
-    return(0);
+    return 0;
 }
 
 
diff --git a/src/gis/trk/CGisItemTrk.h b/src/gis/trk/CGisItemTrk.h
index da2efc6..d0de51d 100644
--- a/src/gis/trk/CGisItemTrk.h
+++ b/src/gis/trk/CGisItemTrk.h
@@ -39,411 +39,536 @@ class CQlgtTrack;
 
 class CGisItemTrk : public IGisItem, public IGisLine
 {
-    public:
-        struct trk_t;
-        struct trkpt_t;
+public:
+    struct trk_t;
+    struct trkpt_t;
+
+    enum focusmode_e
+    {
+        eFocusMouseMove
+        ,eFocusMouseClick
+    };
+
+    enum drawmode_e
+    {
+        eDrawNormal
+        , eDrawRange
+    };
+
+    /**
+       @brief Used to create a new track from a part of an existing track
+       @param name
+       @param idx1
+       @param idx2
+       @param srctrk
+       @param project
+     */
+    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
+     */
+    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
+     */
+    CGisItemTrk(const QPolygonF& l, const QString &name, IGisProject *project, int idx);
+    /**
+       @brief Used to create track from GPX file
+       @param xml
+       @param project
+     */
+    CGisItemTrk(const QDomNode &xml, IGisProject *project);
+    /**
+       @brief Used to restore track from history structure
+       @param hist
+       @param project
+     */
+    CGisItemTrk(const history_t& hist, IGisProject * project);
+    /**
+       @brief Used to restore track from database
+       @param id
+       @param db
+       @param project
+     */
+    CGisItemTrk(quint64 id, QSqlDatabase& db, IGisProject * project);
+    /**
+       @brief CGisItemTrk
+       @param trk1
+     */
+    CGisItemTrk(const CQlgtTrack& trk1);
+    virtual ~CGisItemTrk();
+
+    QDataStream& operator<<(QDataStream& stream);
+    QDataStream& operator>>(QDataStream& stream);
+
+    const QString& getName() const
+    {
+        return trk.name;
+    }
+    int getColorIdx()
+    {
+        return colorIdx;
+    }
+    QString getInfo() const;
+    QString getInfoRange();
+    QString getInfoTrkPt(const trkpt_t& pt);
+    QString getInfoProgress(const trkpt_t& pt);
+    quint32 getTotalElapsedSeconds()
+    {
+        return totalElapsedSeconds;
+    }
+    const QString& getComment() const
+    {
+        return trk.cmt;
+    }
+    const QString& getDescription() const
+    {
+        return trk.desc;
+    }
+    const QList<link_t>& getLinks() const
+    {
+        return trk.links;
+    }
+    void getPolylineFromData(QPolygonF& l);
+    const QDateTime& getTimeStart() const
+    {
+        return timeStart;
+    }
+
+    void setName(const QString& str);
+    void setColor(int idx);
+    void setDrawMode(drawmode_e mode)
+    {
+        drawMode = mode;
+    }
+    void setComment(const QString& str);
+    void setDescription(const QString& str);
+    void setLinks(const QList<link_t>& links);
+    void setDataFromPolyline(const QPolygonF& l);
+
+    IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse);
+    QPointF getPointCloseBy(const QPoint& screenPos);
+    bool isCloseTo(const QPointF& pos);
+
+    void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
+    void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis);
+    void drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
+    void drawHighlight(QPainter& p);
+    void drawRange(QPainter& p);
+    void save(QDomNode& gpx);
+
+
+    /**
+       @brief Switch user focus on and off.
+
+       If the focus is switched on any other track having the focus will loose it.
+
+       @param yes   set true to gain focus.
+     */
+    void gainUserFocus(bool yes);
+
+    /**
+       @brief Make sure a CDetailsTrk widget is registered with the main tab widget
+     */
+    void edit();
+
+    /**
+       @brief Cut track at mouseClickFocus
+       @return Return true on success.
+     */
+    bool cut();
+
+    /**
+       @brief Reverse the complete track
+
+       @note All timestamps will be removed
+     */
+    void reverse();
+
+    /**
+       @brief Combine this track with several others.
+
+       Handle the complete process of selecting tracks, choosing the order and
+       the final name with dialogs.
+     */
+    void combine();
+
+    /**
+       @brief Set the trkpt_t::eHidden flag
+
+       The flag is set for all track points between mouseClickFocus and mouseMoveFocus,
+       regardless of their previous state.
+
+     */
+    void hideSelectedPoints();
+
+    /**
+       @brief Reset the trkpt_t::eHidden flag
+
+       The flag is reset for all track points between mouseClickFocus and mouseMoveFocus,
+       regardless of their previous state.
+
+     */
+    void showSelectedPoints();
+
+    /**
+       @brief Copy a section into a new track object
+
+       The section is defined by mouseClickFocus and mouseMoveFocus, All points are copied,
+       including the hidden (trkpt_t::eHidden) ones.
+
+     */
+    void copySelectedPoints();
+
+    /**
+       @brief Check for user focus
+
+       @return True if the track has user focus
+     */
+    bool hasUserFocus() const
+    {
+        return key == keyUserFocus;
+    }
+
+    /**
+       @brief Get the key of the current track with user focus
 
-        enum focusmode_e
-        {
-             eFocusMouseMove
-            ,eFocusMouseClick
-        };
-
-        enum drawmode_e
-        {
-              eDrawNormal
-            , eDrawRange
-        };
-
-        CGisItemTrk(const QString& name, qint32 idx1, qint32 idx2, const trk_t &srctrk, IGisProject *project);
-        CGisItemTrk(const CGisItemTrk& parentTrk, IGisProject * project, int idx, bool clone);
-        CGisItemTrk(const QPolygonF& l, const QString &name, IGisProject *project, int idx);
-        CGisItemTrk(const QDomNode &xml, IGisProject *project);
-        CGisItemTrk(const history_t& hist, IGisProject * project);
-        CGisItemTrk(quint64 id, QSqlDatabase& db, IGisProject * project);
-        CGisItemTrk(const CQlgtTrack& trk1);
-        virtual ~CGisItemTrk();
-
-        QDataStream& operator<<(QDataStream& stream);
-        QDataStream& operator>>(QDataStream& stream);
-
-        const QString& getName() const {return trk.name;}
-        int getColorIdx(){return colorIdx;}
-        QString getInfo() const;
-        QString getInfoRange();
-        QString getInfoTrkPt(const trkpt_t& pt);
-        QString getInfoProgress(const trkpt_t& pt);
-        quint32 getTotalElapsedSeconds(){return totalElapsedSeconds;}
-        const QString& getComment(){return trk.cmt;}
-        const QString& getDescription(){return trk.desc;}
-        const QList<link_t>& getLinks(){return trk.links;}
-        void getPolylineFromData(QPolygonF& l);
-
-        void setName(const QString& str);
-        void setColor(int idx);
-        void setDrawMode(drawmode_e mode){drawMode = mode;}
-        void setComment(const QString& str);
-        void setDescription(const QString& str);
-        void setLinks(const QList<link_t>& links);
-        void setDataFromPolyline(const QPolygonF& l);
-
-        IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse);
-        QPointF getPointCloseBy(const QPoint& screenPos);
-        bool isCloseTo(const QPointF& pos);
-
-        void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
-        void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis);
-        void drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
-        void drawHighlight(QPainter& p);
-        void drawRange(QPainter& p);
-        void save(QDomNode& gpx);
-
-
-        /**
-           @brief Switch user focus on and off.
-
-           If the focus is switched on any other track having the focus will loose it.
-
-           @param yes   set true to gain focus.
-        */
-        void gainUserFocus(bool yes);
-
-        /**
-           @brief Make sure a CDetailsTrk widget is registered with the main tab widget
-        */
-        void edit();
-
-        /**
-           @brief Cut track at mouseClickFocus
-           @return Return true on success.
-         */
-        bool cut();
-
-        /**
-           @brief Reverse the complete track
-
-           @note All timestamps will be removed
-         */
-        void reverse();
-
-        /**
-           @brief Combine this track with several others.
-
-           Handle the complete process of selecting tracks, choosing the order and
-           the final name with dialogs.
-         */
-        void combine();
-
-        /**
-           @brief Set the trkpt_t::eHidden flag
-
-           The flag is set for all track points between mouseClickFocus and mouseMoveFocus,
-           regardless of their previous state.
-
-        */
-        void hideSelectedPoints();
-
-        /**
-           @brief Reset the trkpt_t::eHidden flag
-
-           The flag is reset for all track points between mouseClickFocus and mouseMoveFocus,
-           regardless of their previous state.
-
-         */
-        void showSelectedPoints();
-
-        /**
-           @brief Copy a section into a new track object
-
-           The section is defined by mouseClickFocus and mouseMoveFocus, All points are copied,
-           including the hidden (trkpt_t::eHidden) ones.
+       @return If no track has the focus an empty string is returned
+     */
+    static const key_t& getKeyUserFocus()
+    {
+        return keyUserFocus;
+    }
 
-        */
-        void copySelectedPoints();
+    /**
+       @brief Each plot widget that operates on the track must register during it's contruction
 
-        /**
-           @brief Check for user focus
+       see registeredPlots for a detailed discussion
 
-           @return True if the track has user focus
-         */
-        bool hasUserFocus() const {return key == keyUserFocus;}
+       @param plot
+     */
+    void registerPlot(IPlot * plot);
 
-        /**
-           @brief Get the key of the current track with user focus
+    /**
+       @brief Each plot widget that operates on the track must unregister during it's destruction
 
-           @return If no track has the focus an empty string is returned
-         */
-        static const key_t& getKeyUserFocus(){return keyUserFocus;}
+       see registeredPlots for a detailed discussion
 
-        /**
-           @brief Each plot widget that operates on the track must register during it's contruction
+       @param plot
+     */
+    void unregisterPlot(IPlot * plot);
 
-           see registeredPlots for a detailed discussion
+    /**
+       @brief Use point with the distance from start matching best the given distance.
 
-           @param plot
-        */
-        void registerPlot(IPlot * plot);
+       @param dist      the distance in [m]
+       @param initiator a pointer to an initiating IPlot object, or 0
+     */
+    void setMouseFocusByDistance(qreal dist, focusmode_e mode, IPlot * initiator);
 
-        /**
-           @brief Each plot widget that operates on the track must unregister during it's destruction
+    /**
+       @brief Use point with time from start matching best the given time delta
 
-           see registeredPlots for a detailed discussion
+       @param time      a time delta in [s] relative to the start time
+       @param initiator a pointer to an initiating IPlot object, or 0
+     */
+    void setMouseFocusByTime(quint32 time, focusmode_e mode, IPlot * initiator);
 
-           @param plot
-        */
-        void unregisterPlot(IPlot * plot);
+    /**
+       @brief Use the point that is closest to the given point on the screen.
 
-        /**
-           @brief Use point with the distance from start matching best the given distance.
+       @param pt        a point on the screen in pixel.
+     */
+    QPointF setMouseFocusByPoint(const QPoint& pt, focusmode_e mode);
 
-           @param dist      the distance in [m]
-           @param initiator a pointer to an initiating IPlot object, or 0
-         */
-        void setMouseFocusByDistance(qreal dist, focusmode_e mode, IPlot * initiator);
+    /**
+       @brief Use point with given index counter
+       @param idx
+     */
+    void setMouseFocusByIndex(qint32 idx, focusmode_e mode);
 
-        /**
-           @brief Use point with time from start matching best the given time delta
+    /**
+       @brief Reduce the amount of visible track points with the help of the Douglas Peuker algorithm
 
-           @param time      a time delta in [s] relative to the start time
-           @param initiator a pointer to an initiating IPlot object, or 0
-        */
-        void setMouseFocusByTime(quint32 time, focusmode_e mode, IPlot * initiator);
+       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
 
-        /**
-           @brief Use the point that is closest to the given point on the screen.
+       @param dist the Douglas Peuker distance in meters
+     */
+    void filterReducePoints(qreal dist);
+    /**
+       @brief filterReset
 
-           @param pt        a point on the screen in pixel.
-         */
-        QPointF setMouseFocusByPoint(const QPoint& pt, focusmode_e mode);
-
-        /**
-           @brief Use point with given index counter
-           @param idx
-        */
-        void setMouseFocusByIndex(qint32 idx, focusmode_e mode);
-
-        /**
-           @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
-         */
-        void filterReducePoints(qreal dist);
-
-        void filterDelete();
-
-        void filterSmoothProfile(int points);
-
-        void filterReplaceElevation();
-
-        void filterOffsetElevation(int offset);
-
-        void filterNewDate(const QDateTime& date);
-
-        void filterObscureDate(int delta);
-
-        void filterSpeed(qreal speed);
-
-        static const QColor  lineColors[TRK_N_COLORS];
-        static const QString bulletColors[TRK_N_COLORS];
-
-    private:        
-        void setSymbol();
-        /**
-           @brief Read track data from section in GPX file
-           @param xml   The XML <trk> section
-           @param trk   The track structure to fill
-        */
-        void readTrk(const QDomNode& xml, trk_t& trk);
-        /**
-           @brief Derive secondary data from the track data
-
-           This has to be called each time the track data is changed.
-        */
-        void deriveSecondaryData();
-        /**
-           @brief Try to get access Nth visible point matching the idx
-
-           This will iterate over all segments and count the visible points. If the
-           count matches idx a pointer to the track point is passed
-
-           @param idx The index into all visible points
-           @return A null pointer of no point is found.
-        */
-        const trkpt_t *getVisibleTrkPtByIndex(quint32 idx);
-
-        /**
-           @brief Tell the point of focus to all plots and the detail dialog
-
-           @param pt        A pointer to the point itself
-           @param mode      The reason for the focus
-           @param initiator A pointer to an IPlot object that has set the point of focus. Can be 0.
-        */
-        void publishMouseFocus(const trkpt_t * pt, focusmode_e mode, IPlot *initiator);
-        /**
-           @brief Replace all trackpoints by the coordinates stored in the polyline
-
-           The DEM layer will be queried for elevation data. All other data is lost.
-
-           @param l     A polyline with coordinates [rad]
-         */
-        void readTrackDataFromPolyLine(const QPolygonF &l);
-        /**
-           @brief Overide 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. Therfore it needs some feedback to update the
-           CDetailsTrk widget. Usualy this would be a signal. However CGisItemTrk is a QTreeWidgetItem
-           and therefor no QObject. Fortunately there the dlgDetails pointer. So CDetailsTrk::setupGui()
-           can be called from changed()
-
-           @param what  The reason string
-           @param icon  An icon string
-        */
-        void changed(const QString& what, const QString& icon);
-
-        void setColor(const QColor& c);
-        void setIcon(const QString& c);
-
-    public:
-        struct trkpt_t : public wpt_t
+       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
+     */
+    void filterReset();
+    /**
+       @brief filterDelete
+
+       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
+     */
+    void filterDelete();
+    /**
+       @brief filterSmoothProfile
+
+       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
+
+       @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
+     */
+    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
+     */
+    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
+     */
+    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
+     */
+    void filterSpeed(qreal speed);
+
+    void findWaypointsCloseBy();
+
+    static const QColor lineColors[TRK_N_COLORS];
+    static const QString bulletColors[TRK_N_COLORS];
+
+private:
+    void setSymbol();
+    /**
+       @brief Read track data from section in GPX file
+       @param xml   The XML <trk> section
+       @param trk   The track structure to fill
+     */
+    void readTrk(const QDomNode& xml, trk_t& trk);
+    /**
+       @brief Derive secondary data from the track data
+
+       This has to be called each time the track data is changed.
+     */
+    void deriveSecondaryData();
+
+    /**
+       @brief Try to get access Nth visible point matching the idx
+
+       This will iterate over all segments and count the visible points. If the
+       count matches idx a pointer to the track point is passed
+
+       @param idx The index into all visible points
+       @return A null pointer of no point is found.
+     */
+    const trkpt_t *getVisibleTrkPtByIndex(quint32 idx);
+
+    /**
+       @brief Tell the point of focus to all plots and the detail dialog
+
+       @param pt        A pointer to the point itself
+       @param mode      The reason for the focus
+       @param initiator A pointer to an IPlot object that has set the point of focus. Can be 0.
+     */
+    void publishMouseFocus(const trkpt_t * pt, focusmode_e mode, IPlot *initiator);
+    /**
+       @brief Replace all trackpoints by the coordinates stored in the polyline
+
+       The DEM layer will be queried for elevation data. All other data is lost.
+
+       @param l     A polyline with coordinates [rad]
+     */
+    void readTrackDataFromPolyLine(const QPolygonF &l);
+    /**
+       @brief Overide 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. Therfore it needs some feedback to update the
+       CDetailsTrk widget. Usualy this would be a signal. However CGisItemTrk is a QTreeWidgetItem
+       and therefor no QObject. Fortunately there the dlgDetails pointer. So CDetailsTrk::setupGui()
+       can be called from changed()
+
+       @param what  The reason string
+       @param icon  An icon string
+     */
+    void changed(const QString& what, const QString& icon);
+
+    void setColor(const QColor& c);
+    void setIcon(const QString& c);
+
+public:
+    struct trkpt_t : public wpt_t
+    {
+        trkpt_t()
+            : flags(0)
         {
-            trkpt_t()
-                : flags(0)
-            {reset();}
-
-            void reset()
-            {
-                deltaDistance   = NOFLOAT;
-                distance        = NOFLOAT;
-                ascend          = NOFLOAT;
-                descend         = NOFLOAT;
-                elapsedSeconds  = NOFLOAT;
-                elapsedSecondsMoving = NOFLOAT;
-                slope1          = NOFLOAT;
-                slope2          = NOFLOAT;
-                speed           = NOFLOAT;
-            }
-
-            enum flag_e
-            {
-                eHidden   = 0x00000004  ///< mark point as deleted
-            };
-
-            quint32 flags;
-            /// index within the complete track
-            qint32  idxTotal;
-            /// 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;
-        };
+            reset();
+        }
 
-        struct trkseg_t
+        void reset()
         {
-            QVector<trkpt_t> pts;
-            QMap<QString, QVariant> extensions;
-        };
-
-        struct trk_t
+            deltaDistance   = NOFLOAT;
+            distance        = NOFLOAT;
+            ascend          = NOFLOAT;
+            descend         = NOFLOAT;
+            elapsedSeconds  = NOFLOAT;
+            elapsedSecondsMoving = NOFLOAT;
+            slope1          = NOFLOAT;
+            slope2          = NOFLOAT;
+            speed           = NOFLOAT;
+        }
+
+        enum flag_e
         {
-            trk_t() : number(0) {}
-            // -- all gpx tags - start
-            QString name;
-            QString cmt;
-            QString desc;
-            QString src;
-            QList<link_t> links;
-            quint64 number;
-            QString type;
-            QVector<trkseg_t> segs;
-            // -- all gpx tags - stop
-            QMap<QString, QVariant> extensions;
-
-            QString color;
+            eHidden   = 0x00000004      ///< mark point as deleted
         };
 
-        /**
-           @brief Read only access to the track data.
-           @return
-        */
-        const trk_t& getTrackData() const{return trk;}
-
-    private:
-        trk_t trk;
-
-        static key_t keyUserFocus;
-        static const QPen penBackground;
-
-        QPen penForeground;
-
-        drawmode_e drawMode;
-
-        qint32      cntTotalPoints;
-        qint32      cntVisiblePoints;
-        QDateTime   timeStart;
-        QDateTime   timeEnd;
-        qreal       totalDistance;
-        qreal       totalAscend;
-        qreal       totalDescend;
-        qreal       totalElapsedSeconds;
-        qreal       totalElapsedSecondsMoving;
-
-        /// the track line color
-        QColor  color;
-        /// the trakpoint bullet icon
-        QPixmap bullet;
-        /// the track line color by index
-        unsigned colorIdx;
-        /// the current track line as screen pixel coordinates
-        QPolygonF lineSimple;
-        /// visible and invisible points
-        QPolygonF lineFull;
-
-        /**
-            A list of plot objects that need to get informed on any change in data.
-
-            @note This is necessary because QTreeWidgetItem is not derived from QObject.
-                  Thus no signals and slots can be handled. Probably this is because the
-                  signal/slot system would be a huge overhead on treewidgets with a large
-                  amount of items.
-
-                  Anyway we need some kind of signaling between the track object and the
-                  plot objects displaying the data. And we have to keep in mind that
-                  the track can be delete by the user at any time. That is why no other
-                  object is allowed to save a pointer to the track. It must store the
-                  key. But accessing the track via key is expensive.
-
-                  That is why we make an exception here. As the track will delete all
-                  registered plot objects upon destruction, it should be ok to store
-                  the track object in the plot object, too. By that plot and track can
-                  easily communicate with each other.
-        */
-        QSet<IPlot*> registeredPlots;
-
-        const trkpt_t * mouseMoveFocus;
-        const trkpt_t * mouseClickFocus;
-
-        QPointer<CDetailsTrk> dlgDetails;
-        QPointer<CScrOptTrk>  scrOpt;
+        quint32 flags;
+        /// index within the complete track
+        qint32 idxTotal;
+        /// 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;
+    };
+
+    struct trkseg_t
+    {
+        QVector<trkpt_t> pts;
+        QMap<QString, QVariant> extensions;
+    };
+
+    struct trk_t
+    {
+        trk_t() : number(0)
+        {
+        }
+        // -- all gpx tags - start
+        QString name;
+        QString cmt;
+        QString desc;
+        QString src;
+        QList<link_t> links;
+        quint64 number;
+        QString type;
+        QVector<trkseg_t> segs;
+        // -- all gpx tags - stop
+        QMap<QString, QVariant> extensions;
+
+        QString color;
+    };
+
+    /**
+       @brief Read only access to the track data.
+       @return
+     */
+    const trk_t& getTrackData() const
+    {
+        return trk;
+    }
+
+private:
+    trk_t trk;
+
+    static key_t keyUserFocus;
+    static const QPen penBackground;
+
+    QPen penForeground;
+
+    drawmode_e drawMode;
+
+    qint32 cntTotalPoints;
+    qint32 cntVisiblePoints;
+    QDateTime timeStart;
+    QDateTime timeEnd;
+    qreal totalDistance;
+    qreal totalAscend;
+    qreal totalDescend;
+    qreal totalElapsedSeconds;
+    qreal totalElapsedSecondsMoving;
+
+    /// the track line color
+    QColor color;
+    /// the trakpoint bullet icon
+    QPixmap bullet;
+    /// the track line color by index
+    unsigned colorIdx;
+    /// the current track line as screen pixel coordinates
+    QPolygonF lineSimple;
+    /// visible and invisible points
+    QPolygonF lineFull;
+
+    /**
+        A list of plot objects that need to get informed on any change in data.
+
+        @note This is necessary because QTreeWidgetItem is not derived from QObject.
+              Thus no signals and slots can be handled. Probably this is because the
+              signal/slot system would be a huge overhead on treewidgets with a large
+              amount of items.
+
+              Anyway we need some kind of signaling between the track object and the
+              plot objects displaying the data. And we have to keep in mind that
+              the track can be delete by the user at any time. That is why no other
+              object is allowed to save a pointer to the track. It must store the
+              key. But accessing the track via key is expensive.
+
+              That is why we make an exception here. As the track will delete all
+              registered plot objects upon destruction, it should be ok to store
+              the track object in the plot object, too. By that plot and track can
+              easily communicate with each other.
+     */
+    QSet<IPlot*> registeredPlots;
+
+    const trkpt_t * mouseMoveFocus;
+    const trkpt_t * mouseClickFocus;
+
+    QPointer<CDetailsTrk> dlgDetails;
+    QPointer<CScrOptTrk>  scrOpt;
 };
 
 #endif //CGISITEMTRK_H
diff --git a/src/gis/trk/CScrOptTrk.cpp b/src/gis/trk/CScrOptTrk.cpp
index 129a90b..8ce1372 100644
--- a/src/gis/trk/CScrOptTrk.cpp
+++ b/src/gis/trk/CScrOptTrk.cpp
@@ -16,19 +16,19 @@
 
 **********************************************************************************************/
 
-#include "gis/trk/CScrOptTrk.h"
-#include "gis/trk/CGisItemTrk.h"
+#include "CMainWindow.h"
+#include "canvas/CCanvas.h"
 #include "gis/CGisWidget.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/trk/CScrOptTrk.h"
 #include "mouse/IMouse.h"
-#include "canvas/CCanvas.h"
-#include "CMainWindow.h"
 
 CScrOptTrk::CScrOptTrk(CGisItemTrk * trk, const QPoint& point, IMouse *parent)
     : IScrOpt(parent->getCanvas())
 {
     key         = trk->getKey();
 
-    setupUi(this);    
+    setupUi(this);
     setOrigin(point);
     label->setFont(CMainWindow::self().getMapFont());
     label->setText(trk->getInfo());
@@ -39,7 +39,7 @@ CScrOptTrk::CScrOptTrk(CGisItemTrk * trk, const QPoint& point, IMouse *parent)
 
     anchor = trk->getPointCloseBy(point);
     move(anchor.toPoint() + QPoint(-width()/2,SCR_OPT_OFFSET));
-    show();        
+    show();
 
     connect(toolEditDetails, SIGNAL(clicked()), this, SLOT(slotEditDetails()));
     connect(toolDelete, SIGNAL(clicked()), this, SLOT(slotDelete()));
@@ -54,7 +54,6 @@ CScrOptTrk::CScrOptTrk(CGisItemTrk * trk, const QPoint& point, IMouse *parent)
 
 CScrOptTrk::~CScrOptTrk()
 {
-
 }
 
 void CScrOptTrk::slotDelete()
@@ -103,7 +102,6 @@ void CScrOptTrk::slotCombine()
 {
     CGisWidget::self().combineTrkByKey(key);
     deleteLater();
-
 }
 
 void CScrOptTrk::slotRange()
diff --git a/src/gis/trk/CScrOptTrk.h b/src/gis/trk/CScrOptTrk.h
index fd78e52..42d4057 100644
--- a/src/gis/trk/CScrOptTrk.h
+++ b/src/gis/trk/CScrOptTrk.h
@@ -19,8 +19,8 @@
 #ifndef CSCROPTTRK_H
 #define CSCROPTTRK_H
 
-#include "mouse/IScrOpt.h"
 #include "gis/IGisItem.h"
+#include "mouse/IScrOpt.h"
 #include "ui_IScrOptTrk.h"
 
 class CGisItemTrk;
@@ -29,27 +29,27 @@ class IMouse;
 class CScrOptTrk : public IScrOpt, private Ui::IScrOptTrk
 {
     Q_OBJECT
-    public:
-        CScrOptTrk(CGisItemTrk * trk, const QPoint &point, IMouse *parent);
-        virtual ~CScrOptTrk();
-
-        void draw(QPainter& p);
-
-    private slots:        
-        void slotDelete();
-        void slotCopy();
-        void slotEditDetails();
-        void slotProfile(bool on);
-        void slotCut();
-        void slotEdit();
-        void slotReverse();
-        void slotCombine();
-        void slotRange();
-
-
-    private:
-        IGisItem::key_t key;
-        QPointF anchor;
+public:
+    CScrOptTrk(CGisItemTrk * trk, const QPoint &point, IMouse *parent);
+    virtual ~CScrOptTrk();
+
+    void draw(QPainter& p);
+
+private slots:
+    void slotDelete();
+    void slotCopy();
+    void slotEditDetails();
+    void slotProfile(bool on);
+    void slotCut();
+    void slotEdit();
+    void slotReverse();
+    void slotCombine();
+    void slotRange();
+
+
+private:
+    IGisItem::key_t key;
+    QPointF anchor;
 };
 
 #endif //CSCROPTTRK_H
diff --git a/src/gis/trk/filter/CFilterDelete.cpp b/src/gis/trk/filter/CFilterDelete.cpp
index 9b83bd5..070ab01 100644
--- a/src/gis/trk/filter/CFilterDelete.cpp
+++ b/src/gis/trk/filter/CFilterDelete.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "gis/trk/filter/CFilterDelete.h"
 #include "gis/trk/CGisItemTrk.h"
+#include "gis/trk/filter/CFilterDelete.h"
 
 CFilterDelete::CFilterDelete(CGisItemTrk &trk, QWidget *parent)
     : QWidget(parent)
@@ -30,7 +30,6 @@ CFilterDelete::CFilterDelete(CGisItemTrk &trk, QWidget *parent)
 
 CFilterDelete::~CFilterDelete()
 {
-
 }
 
 void CFilterDelete::slotApply()
diff --git a/src/gis/trk/filter/CFilterDelete.h b/src/gis/trk/filter/CFilterDelete.h
index 18e6c5c..4904a1f 100644
--- a/src/gis/trk/filter/CFilterDelete.h
+++ b/src/gis/trk/filter/CFilterDelete.h
@@ -19,24 +19,23 @@
 #ifndef CFILTERDELETE_H
 #define CFILTERDELETE_H
 
-#include <QWidget>
 #include "ui_IFilterDelete.h"
+#include <QWidget>
 
 class CGisItemTrk;
 
 class CFilterDelete : public QWidget, private Ui::IFilterDelete
 {
     Q_OBJECT
-    public:
-        CFilterDelete(CGisItemTrk& trk, QWidget * parent);
-        virtual ~CFilterDelete();
-
-    private slots:
-        void slotApply();
+public:
+    CFilterDelete(CGisItemTrk& trk, QWidget * parent);
+    virtual ~CFilterDelete();
 
-    private:
-        CGisItemTrk& trk;
+private slots:
+    void slotApply();
 
+private:
+    CGisItemTrk& trk;
 };
 
 #endif //CFILTERDELETE_H
diff --git a/src/gis/trk/filter/CFilterDouglasPeuker.cpp b/src/gis/trk/filter/CFilterDouglasPeuker.cpp
index 789f137..24a8b4e 100644
--- a/src/gis/trk/filter/CFilterDouglasPeuker.cpp
+++ b/src/gis/trk/filter/CFilterDouglasPeuker.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "gis/trk/filter/CFilterDouglasPeuker.h"
 #include "gis/trk/CGisItemTrk.h"
+#include "gis/trk/filter/CFilterDouglasPeuker.h"
 #include "helpers/CSettings.h"
 #include "units/IUnit.h"
 
@@ -35,7 +35,6 @@ CFilterDouglasPeuker::CFilterDouglasPeuker(CGisItemTrk &trk, QWidget * parent)
     spinBox->setValue(cfg.value("TrackDetails/Filter/DouglasPeuker/distance",5).toInt());
 
     connect(toolApply, SIGNAL(clicked()), this, SLOT(slotApply()));
-
 }
 
 CFilterDouglasPeuker::~CFilterDouglasPeuker()
@@ -47,6 +46,6 @@ CFilterDouglasPeuker::~CFilterDouglasPeuker()
 void CFilterDouglasPeuker::slotApply()
 {
     QApplication::setOverrideCursor(Qt::WaitCursor);
-    trk.filterReducePoints(spinBox->value()/IUnit::self().basefactor);    
+    trk.filterReducePoints(spinBox->value()/IUnit::self().basefactor);
     QApplication::restoreOverrideCursor();
 }
diff --git a/src/gis/trk/filter/CFilterDouglasPeuker.h b/src/gis/trk/filter/CFilterDouglasPeuker.h
index 0ad9cb9..7a83ef0 100644
--- a/src/gis/trk/filter/CFilterDouglasPeuker.h
+++ b/src/gis/trk/filter/CFilterDouglasPeuker.h
@@ -19,23 +19,23 @@
 #ifndef CFILTERDOUGLASPEUKER_H
 #define CFILTERDOUGLASPEUKER_H
 
-#include <QWidget>
 #include "ui_IFilterDouglasPeuker.h"
+#include <QWidget>
 
 class CGisItemTrk;
 
 class CFilterDouglasPeuker : public QWidget, private Ui::IFilterDouglasPeuker
 {
     Q_OBJECT
-    public:
-        CFilterDouglasPeuker(CGisItemTrk& trk, QWidget *parent);
-        virtual ~CFilterDouglasPeuker();
+public:
+    CFilterDouglasPeuker(CGisItemTrk& trk, QWidget *parent);
+    virtual ~CFilterDouglasPeuker();
 
-    private slots:
-        void slotApply();
+private slots:
+    void slotApply();
 
-    private:
-        CGisItemTrk& trk;
+private:
+    CGisItemTrk& trk;
 };
 
 #endif //CFILTERDOUGLASPEUKER_H
diff --git a/src/gis/trk/filter/CFilterMedian.cpp b/src/gis/trk/filter/CFilterMedian.cpp
index ee9d1c2..6756f50 100644
--- a/src/gis/trk/filter/CFilterMedian.cpp
+++ b/src/gis/trk/filter/CFilterMedian.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "gis/trk/filter/CFilterMedian.h"
 #include "gis/trk/CGisItemTrk.h"
+#include "gis/trk/filter/CFilterMedian.h"
 #include "helpers/CSettings.h"
 #include "units/IUnit.h"
 
@@ -31,14 +31,12 @@ CFilterMedian::CFilterMedian(CGisItemTrk &trk, QWidget *parent)
     spinBox->setValue(cfg.value("TrackDetails/Filter/Median/points",5).toInt());
 
     connect(toolApply, SIGNAL(clicked()), this, SLOT(slotApply()));
-
 }
 
 CFilterMedian::~CFilterMedian()
 {
     SETTINGS;
     cfg.setValue("TrackDetails/Filter/Median/points", spinBox->value());
-
 }
 
 void CFilterMedian::slotApply()
diff --git a/src/gis/trk/filter/CFilterMedian.h b/src/gis/trk/filter/CFilterMedian.h
index a8d009e..2917e64 100644
--- a/src/gis/trk/filter/CFilterMedian.h
+++ b/src/gis/trk/filter/CFilterMedian.h
@@ -19,23 +19,23 @@
 #ifndef CFILTERMEDIAN_H
 #define CFILTERMEDIAN_H
 
-#include <QWidget>
 #include "ui_IFilterMedian.h"
+#include <QWidget>
 
 class CGisItemTrk;
 
 class CFilterMedian : public QWidget, private Ui::IFilterMedian
 {
     Q_OBJECT
-    public:
-        CFilterMedian(CGisItemTrk& trk, QWidget * parent);
-        virtual ~CFilterMedian();
+public:
+    CFilterMedian(CGisItemTrk& trk, QWidget * parent);
+    virtual ~CFilterMedian();
 
-    private slots:
-        void slotApply();
+private slots:
+    void slotApply();
 
-    private:
-        CGisItemTrk& trk;
+private:
+    CGisItemTrk& trk;
 };
 
 #endif //CFILTERMEDIAN_H
diff --git a/src/gis/trk/filter/CFilterNewDate.cpp b/src/gis/trk/filter/CFilterNewDate.cpp
index 7c5a8f0..7120324 100644
--- a/src/gis/trk/filter/CFilterNewDate.cpp
+++ b/src/gis/trk/filter/CFilterNewDate.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "gis/trk/filter/CFilterNewDate.h"
 #include "gis/trk/CGisItemTrk.h"
+#include "gis/trk/filter/CFilterNewDate.h"
 
 CFilterNewDate::CFilterNewDate(CGisItemTrk &trk, QWidget *parent)
     : QWidget(parent)
@@ -32,7 +32,6 @@ CFilterNewDate::CFilterNewDate(CGisItemTrk &trk, QWidget *parent)
 
 CFilterNewDate::~CFilterNewDate()
 {
-
 }
 
 
diff --git a/src/gis/trk/filter/CFilterNewDate.h b/src/gis/trk/filter/CFilterNewDate.h
index 26f7e3f..e7b4c96 100644
--- a/src/gis/trk/filter/CFilterNewDate.h
+++ b/src/gis/trk/filter/CFilterNewDate.h
@@ -19,24 +19,23 @@
 #ifndef CFILTERNEWDATE_H
 #define CFILTERNEWDATE_H
 
-#include <QWidget>
 #include "ui_IFilterNewDate.h"
+#include <QWidget>
 
 class CGisItemTrk;
 
 class CFilterNewDate : public QWidget, private Ui::IFilterNewDate
 {
     Q_OBJECT
-    public:
-        CFilterNewDate(CGisItemTrk& trk, QWidget * parent);
-        virtual ~CFilterNewDate();
-
-    private slots:
-        void slotApply();
+public:
+    CFilterNewDate(CGisItemTrk& trk, QWidget * parent);
+    virtual ~CFilterNewDate();
 
-    private:
-        CGisItemTrk& trk;
+private slots:
+    void slotApply();
 
+private:
+    CGisItemTrk& trk;
 };
 
 #endif //CFILTERNEWDATE_H
diff --git a/src/gis/trk/filter/CFilterObscureDate.cpp b/src/gis/trk/filter/CFilterObscureDate.cpp
index 2b68f7c..ac48d6e 100644
--- a/src/gis/trk/filter/CFilterObscureDate.cpp
+++ b/src/gis/trk/filter/CFilterObscureDate.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "gis/trk/filter/CFilterObscureDate.h"
 #include "gis/trk/CGisItemTrk.h"
+#include "gis/trk/filter/CFilterObscureDate.h"
 #include "helpers/CSettings.h"
 
 CFilterObscureDate::CFilterObscureDate(CGisItemTrk &trk, QWidget *parent)
diff --git a/src/gis/trk/filter/CFilterObscureDate.h b/src/gis/trk/filter/CFilterObscureDate.h
index d8d1da0..0bc0c87 100644
--- a/src/gis/trk/filter/CFilterObscureDate.h
+++ b/src/gis/trk/filter/CFilterObscureDate.h
@@ -19,23 +19,23 @@
 #ifndef CFILTEROBSCUREDATE_H
 #define CFILTEROBSCUREDATE_H
 
-#include <QWidget>
 #include "ui_IFilterObscureDate.h"
+#include <QWidget>
 
 class CGisItemTrk;
 
 class CFilterObscureDate : public QWidget, private Ui::IFilterObscureDate
 {
     Q_OBJECT
-    public:
-        CFilterObscureDate(CGisItemTrk& trk, QWidget * parent);
-        virtual ~CFilterObscureDate();
+public:
+    CFilterObscureDate(CGisItemTrk& trk, QWidget * parent);
+    virtual ~CFilterObscureDate();
 
-    private slots:
-        void slotApply();
+private slots:
+    void slotApply();
 
-    private:
-        CGisItemTrk& trk;
+private:
+    CGisItemTrk& trk;
 };
 
 #endif //CFILTEROBSCUREDATE_H
diff --git a/src/gis/trk/filter/CFilterOffsetElevation.cpp b/src/gis/trk/filter/CFilterOffsetElevation.cpp
index 393ec98..f9bd0fb 100644
--- a/src/gis/trk/filter/CFilterOffsetElevation.cpp
+++ b/src/gis/trk/filter/CFilterOffsetElevation.cpp
@@ -16,10 +16,10 @@
 
 **********************************************************************************************/
 
-#include "gis/trk/filter/CFilterOffsetElevation.h"
 #include "gis/trk/CGisItemTrk.h"
-#include "units/IUnit.h"
+#include "gis/trk/filter/CFilterOffsetElevation.h"
 #include "helpers/CSettings.h"
+#include "units/IUnit.h"
 
 CFilterOffsetElevation::CFilterOffsetElevation(CGisItemTrk &trk, QWidget *parent)
     : QWidget(parent)
diff --git a/src/gis/trk/filter/CFilterOffsetElevation.h b/src/gis/trk/filter/CFilterOffsetElevation.h
index f6a2688..76dd14a 100644
--- a/src/gis/trk/filter/CFilterOffsetElevation.h
+++ b/src/gis/trk/filter/CFilterOffsetElevation.h
@@ -19,24 +19,23 @@
 #ifndef CFILTEROFFSETELEVATION_H
 #define CFILTEROFFSETELEVATION_H
 
-#include <QWidget>
 #include "ui_IFilterOffsetElevation.h"
+#include <QWidget>
 
 class CGisItemTrk;
 
 class CFilterOffsetElevation : public QWidget, private Ui::IFilterOffsetElevation
 {
     Q_OBJECT
-    public:
-        CFilterOffsetElevation(CGisItemTrk& trk, QWidget * parent);
-        virtual ~CFilterOffsetElevation();
-
-    private slots:
-        void slotApply();
+public:
+    CFilterOffsetElevation(CGisItemTrk& trk, QWidget * parent);
+    virtual ~CFilterOffsetElevation();
 
-    private:
-        CGisItemTrk& trk;
+private slots:
+    void slotApply();
 
+private:
+    CGisItemTrk& trk;
 };
 
 #endif //CFILTEROFFSETELEVATION_H
diff --git a/src/gis/trk/filter/CFilterReplaceElevation.cpp b/src/gis/trk/filter/CFilterReplaceElevation.cpp
index 374ab1e..90a9669 100644
--- a/src/gis/trk/filter/CFilterReplaceElevation.cpp
+++ b/src/gis/trk/filter/CFilterReplaceElevation.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "gis/trk/filter/CFilterReplaceElevation.h"
 #include "gis/trk/CGisItemTrk.h"
+#include "gis/trk/filter/CFilterReplaceElevation.h"
 
 CFilterReplaceElevation::CFilterReplaceElevation(CGisItemTrk &trk, QWidget *parent)
     : QWidget(parent)
@@ -30,7 +30,6 @@ CFilterReplaceElevation::CFilterReplaceElevation(CGisItemTrk &trk, QWidget *pare
 
 CFilterReplaceElevation::~CFilterReplaceElevation()
 {
-
 }
 
 void CFilterReplaceElevation::slotApply()
diff --git a/src/gis/trk/filter/CFilterReplaceElevation.h b/src/gis/trk/filter/CFilterReplaceElevation.h
index fdc7749..55e1435 100644
--- a/src/gis/trk/filter/CFilterReplaceElevation.h
+++ b/src/gis/trk/filter/CFilterReplaceElevation.h
@@ -19,24 +19,23 @@
 #ifndef CFILTERREPLACEELEVATION_H
 #define CFILTERREPLACEELEVATION_H
 
-#include <QWidget>
 #include "ui_IFilterReplaceElevation.h"
+#include <QWidget>
 
 class CGisItemTrk;
 
 class CFilterReplaceElevation : public QWidget, private Ui::IFilterReplaceElevation
 {
     Q_OBJECT
-    public:
-        CFilterReplaceElevation(CGisItemTrk& trk, QWidget * parent);
-        virtual ~CFilterReplaceElevation();
-
-    private slots:
-        void slotApply();
+public:
+    CFilterReplaceElevation(CGisItemTrk& trk, QWidget * parent);
+    virtual ~CFilterReplaceElevation();
 
-    private:
-        CGisItemTrk& trk;
+private slots:
+    void slotApply();
 
+private:
+    CGisItemTrk& trk;
 };
 
 #endif //CFILTERREPLACEELEVATION_H
diff --git a/src/gis/trk/filter/CFilterDelete.cpp b/src/gis/trk/filter/CFilterReset.cpp
similarity index 85%
copy from src/gis/trk/filter/CFilterDelete.cpp
copy to src/gis/trk/filter/CFilterReset.cpp
index 9b83bd5..5303d24 100644
--- a/src/gis/trk/filter/CFilterDelete.cpp
+++ b/src/gis/trk/filter/CFilterReset.cpp
@@ -16,26 +16,26 @@
 
 **********************************************************************************************/
 
-#include "gis/trk/filter/CFilterDelete.h"
 #include "gis/trk/CGisItemTrk.h"
+#include "gis/trk/filter/CFilterReset.h"
 
-CFilterDelete::CFilterDelete(CGisItemTrk &trk, QWidget *parent)
+CFilterReset::CFilterReset(CGisItemTrk &trk, QWidget *parent)
     : QWidget(parent)
     , trk(trk)
+
 {
     setupUi(this);
 
     connect(toolApply, SIGNAL(clicked()), this, SLOT(slotApply()));
 }
 
-CFilterDelete::~CFilterDelete()
+CFilterReset::~CFilterReset()
 {
-
 }
 
-void CFilterDelete::slotApply()
+void CFilterReset::slotApply()
 {
     QApplication::setOverrideCursor(Qt::WaitCursor);
-    trk.filterDelete();
+    trk.filterReset();
     QApplication::restoreOverrideCursor();
 }
diff --git a/src/dem/IDemProp.h b/src/gis/trk/filter/CFilterReset.h
similarity index 73%
copy from src/dem/IDemProp.h
copy to src/gis/trk/filter/CFilterReset.h
index 4af3175..72bb1c3 100644
--- a/src/dem/IDemProp.h
+++ b/src/gis/trk/filter/CFilterReset.h
@@ -16,29 +16,27 @@
 
 **********************************************************************************************/
 
-#ifndef IDEMPROP_H
-#define IDEMPROP_H
+#ifndef CFILTERRESET_H
+#define CFILTERRESET_H
 
+#include "ui_IFilterReset.h"
 #include <QWidget>
 
-class IDem;
-class CDemDraw;
+class CGisItemTrk;
 
-class IDemProp : public QWidget
+class CFilterReset : public QWidget, private Ui::IFilterReset
 {
     Q_OBJECT
-    public:
-        IDemProp(IDem *demfile, CDemDraw *dem);
-        virtual ~IDemProp();
+public:
+    CFilterReset(CGisItemTrk& trk, QWidget * parent);
+    virtual ~CFilterReset();
 
-    protected slots:
-        virtual void slotPropertiesChanged()= 0;
-
-    protected:
-        IDem * demfile;
-        CDemDraw * dem;
+private slots:
+    void slotApply();
 
+private:
+    CGisItemTrk& trk;
 };
 
-#endif //IDEMPROP_H
+#endif //CFILTERRESET_H
 
diff --git a/src/gis/trk/filter/CFilterSpeed.cpp b/src/gis/trk/filter/CFilterSpeed.cpp
index 0b931e0..af9c439 100644
--- a/src/gis/trk/filter/CFilterSpeed.cpp
+++ b/src/gis/trk/filter/CFilterSpeed.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "gis/trk/filter/CFilterSpeed.h"
 #include "gis/trk/CGisItemTrk.h"
+#include "gis/trk/filter/CFilterSpeed.h"
 #include "helpers/CSettings.h"
 #include "units/IUnit.h"
 
diff --git a/src/gis/trk/filter/CFilterSpeed.h b/src/gis/trk/filter/CFilterSpeed.h
index 54ff634..762181c 100644
--- a/src/gis/trk/filter/CFilterSpeed.h
+++ b/src/gis/trk/filter/CFilterSpeed.h
@@ -19,23 +19,23 @@
 #ifndef CFILTERSPEED_H
 #define CFILTERSPEED_H
 
-#include <QWidget>
 #include "ui_IFilterSpeed.h"
+#include <QWidget>
 
 class CGisItemTrk;
 
 class CFilterSpeed : public QWidget, private Ui::IFilterSpeed
 {
     Q_OBJECT
-    public:
-        CFilterSpeed(CGisItemTrk& trk, QWidget * parent);
-        virtual ~CFilterSpeed();
+public:
+    CFilterSpeed(CGisItemTrk& trk, QWidget * parent);
+    virtual ~CFilterSpeed();
 
-    private slots:
-        void slotApply();
+private slots:
+    void slotApply();
 
-    private:
-        CGisItemTrk& trk;
+private:
+    CGisItemTrk& trk;
 };
 
 #endif //CFILTERSPEED_H
diff --git a/src/gis/trk/filter/IFilterReset.ui b/src/gis/trk/filter/IFilterReset.ui
new file mode 100644
index 0000000..852b8c6
--- /dev/null
+++ b/src/gis/trk/filter/IFilterReset.ui
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>IFilterReset</class>
+ <widget class="QWidget" name="IFilterReset">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>787</width>
+    <height>82</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <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>
+   <property name="spacing">
+    <number>3</number>
+   </property>
+   <item row="0" column="1">
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string><b>Reset Hidden Track Points</b></string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1">
+    <layout class="QHBoxLayout" name="horizontalLayout_2">
+     <property name="spacing">
+      <number>3</number>
+     </property>
+     <item>
+      <widget class="QLabel" name="label_4">
+       <property name="text">
+        <string>Make all trackpoints visible again.</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="toolApply">
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset resource="../../../resources.qrc">
+         <normaloff>:/icons/32x32/Apply.png</normaloff>:/icons/32x32/Apply.png</iconset>
+       </property>
+       <property name="iconSize">
+        <size>
+         <width>22</width>
+         <height>22</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="2" column="0" colspan="2">
+    <widget class="Line" name="line">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="0" rowspan="2">
+    <widget class="QLabel" name="label_3">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text">
+      <string/>
+     </property>
+     <property name="pixmap">
+      <pixmap resource="../../../resources.qrc">:/icons/48x48/PointHide.png</pixmap>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="../../../resources.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/src/gis/trk/filter/filter.cpp b/src/gis/trk/filter/filter.cpp
index 3753eb6..a9979dd 100644
--- a/src/gis/trk/filter/filter.cpp
+++ b/src/gis/trk/filter/filter.cpp
@@ -16,15 +16,14 @@
 
 **********************************************************************************************/
 
-#include "gis/trk/CGisItemTrk.h"
 #include "CMainWindow.h"
 #include "GeoMath.h"
+#include "gis/trk/CGisItemTrk.h"
 
 #include <proj_api.h>
 
 void CGisItemTrk::filterReducePoints(qreal dist)
 {
-
     QVector<pointDP> line;
 
     foreach (const trkseg_t &seg, trk.segs)
@@ -96,6 +95,22 @@ void CGisItemTrk::filterReducePoints(qreal dist)
     changed(QObject::tr("Hide points by Douglas Peuker algorithm (%1%2)").arg(val).arg(unit), "://icons/48x48/PointHide.png");
 }
 
+void CGisItemTrk::filterReset()
+{
+    for(int i = 0; i < trk.segs.size(); i++)
+    {
+        trkseg_t& seg = trk.segs[i];
+
+        for(int n = 0; n < seg.pts.size(); n++)
+        {
+            trkpt_t& pt = seg.pts[n];
+            pt.flags &= ~trkpt_t::eHidden;
+        }
+    }
+    deriveSecondaryData();
+    changed(QObject::tr("Reset all hidden track points to visible"), "://icons/48x48/PointHide.png");
+}
+
 void CGisItemTrk::filterDelete()
 {
     for(int i = 0; i < trk.segs.size(); i++)
@@ -116,7 +131,6 @@ void CGisItemTrk::filterDelete()
         }
 
         seg.pts = pts;
-
     }
     deriveSecondaryData();
     changed(QObject::tr("Permanently removed all hidden track points"), "://icons/48x48/PointHide.png");
@@ -124,7 +138,6 @@ void CGisItemTrk::filterDelete()
 
 void CGisItemTrk::filterSmoothProfile(int points)
 {
-
     QVector<int> window(points, 0);
     QVector<int> ele1, ele2;
 
@@ -171,7 +184,6 @@ void CGisItemTrk::filterSmoothProfile(int points)
     }
     deriveSecondaryData();
     changed(QObject::tr("Smoothed profile with a Median filter of size %1").arg(points), "://icons/48x48/SetEle.png");
-
 }
 
 void CGisItemTrk::filterReplaceElevation()
@@ -212,7 +224,6 @@ void CGisItemTrk::filterReplaceElevation()
 
 void CGisItemTrk::filterOffsetElevation(int offset)
 {
-
     for(int i = 0; i < trk.segs.size(); i++)
     {
         trkseg_t& seg = trk.segs[i];
@@ -236,7 +247,6 @@ void CGisItemTrk::filterOffsetElevation(int offset)
 
 void CGisItemTrk::filterNewDate(const QDateTime& date)
 {
-
     qint64 delta = date.toTime_t() - timeStart.toUTC().toTime_t();
 
     for(int i = 0; i < trk.segs.size(); i++)
@@ -293,13 +303,12 @@ void CGisItemTrk::filterObscureDate(int delta)
         }
 
         deriveSecondaryData();
-        changed(QObject::tr("Set artifical timestamps with delta of %1 sec.").arg(delta), "://icons/48x48/Time.png");
+        changed(QObject::tr("Set artificial timestamps with delta of %1 sec.").arg(delta), "://icons/48x48/Time.png");
     }
 }
 
 void CGisItemTrk::filterSpeed(qreal speed)
 {
-
     QDateTime timestamp = timeStart;
     if(!timestamp.isValid())
     {
@@ -311,7 +320,7 @@ void CGisItemTrk::filterSpeed(qreal speed)
         trkseg_t& seg = trk.segs[i];
 
         for(int n = 0; n < seg.pts.size(); n++)
-        {          
+        {
             trkpt_t& pt = seg.pts[n];
             if(pt.flags & trkpt_t::eHidden)
             {
diff --git a/src/gis/wpt/CDetailsGeoCache.cpp b/src/gis/wpt/CDetailsGeoCache.cpp
index d333f7e..da9d442 100644
--- a/src/gis/wpt/CDetailsGeoCache.cpp
+++ b/src/gis/wpt/CDetailsGeoCache.cpp
@@ -16,12 +16,12 @@
 
 **********************************************************************************************/
 
+#include "GeoMath.h"
 #include "gis/wpt/CDetailsGeoCache.h"
 #include "gis/wpt/CGisItemWpt.h"
-#include "GeoMath.h"
 
-#include <QtWidgets>
 #include <QtWebKitWidgets>
+#include <QtWidgets>
 
 
 CDetailsGeoCache::CDetailsGeoCache(CGisItemWpt &wpt, QWidget *parent)
@@ -81,13 +81,14 @@ CDetailsGeoCache::CDetailsGeoCache(CGisItemWpt &wpt, QWidget *parent)
     webDesc->setHtml(desc);
     webDesc->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks);
 
+    photoAlbum->reload(wpt.getImages());
+
     connect(checkHint, SIGNAL(toggled(bool)), this, SLOT(slotHintChanged(bool)));
     connect(webDesc, SIGNAL(linkClicked(QUrl)), this, SLOT(slotLinkClicked(QUrl)));
 }
 
 CDetailsGeoCache::~CDetailsGeoCache()
 {
-
 }
 
 void CDetailsGeoCache::slotHintChanged(bool on)
diff --git a/src/gis/wpt/CDetailsGeoCache.h b/src/gis/wpt/CDetailsGeoCache.h
index b0fe39e..e17c45e 100644
--- a/src/gis/wpt/CDetailsGeoCache.h
+++ b/src/gis/wpt/CDetailsGeoCache.h
@@ -19,24 +19,24 @@
 #ifndef CDETAILSGEOCACHE_H
 #define CDETAILSGEOCACHE_H
 
-#include <QDialog>
 #include "ui_IDetailsGeoCache.h"
+#include <QDialog>
 
 class CGisItemWpt;
 
 class CDetailsGeoCache : public QDialog, private Ui::IDetailsGeoCache
 {
     Q_OBJECT
-    public:
-        CDetailsGeoCache(CGisItemWpt& wpt, QWidget * parent);
-        virtual ~CDetailsGeoCache();
+public:
+    CDetailsGeoCache(CGisItemWpt& wpt, QWidget * parent);
+    virtual ~CDetailsGeoCache();
 
-    private slots:
-        void slotHintChanged(bool on);
-        void slotLinkClicked(const QUrl& url);
+private slots:
+    void slotHintChanged(bool on);
+    void slotLinkClicked(const QUrl& url);
 
-    private:
-        CGisItemWpt& wpt;
+private:
+    CGisItemWpt& wpt;
 };
 
 #endif //CDETAILSGEOCACHE_H
diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
index 7d4feea..1dd8b8a 100644
--- a/src/gis/wpt/CDetailsWpt.cpp
+++ b/src/gis/wpt/CDetailsWpt.cpp
@@ -16,16 +16,16 @@
 
 **********************************************************************************************/
 
+#include "GeoMath.h"
 #include "gis/wpt/CDetailsWpt.h"
 #include "gis/wpt/CGisItemWpt.h"
-#include "GeoMath.h"
-#include "units/IUnit.h"
+#include "helpers/CElevationDialog.h"
 #include "helpers/CInputDialog.h"
+#include "helpers/CLinksDialog.h"
 #include "helpers/CPositionDialog.h"
-#include "helpers/CWptIconDialog.h"
 #include "helpers/CTextEditWidget.h"
-#include "helpers/CElevationDialog.h"
-#include "helpers/CLinksDialog.h"
+#include "helpers/CWptIconDialog.h"
+#include "units/IUnit.h"
 
 
 #include <QtWidgets>
@@ -37,6 +37,10 @@ CDetailsWpt::CDetailsWpt(CGisItemWpt &wpt, QWidget *parent)
     , originator(false)
 {
     setupUi(this);
+    toolAddImage->hide();
+    toolDelImage->hide();
+    photoAlbum->hide();
+
     setupGui();
     connect(labelName, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
     connect(labelPositon, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
@@ -47,11 +51,14 @@ CDetailsWpt::CDetailsWpt(CGisItemWpt &wpt, QWidget *parent)
     connect(toolLock, SIGNAL(toggled(bool)), this, SLOT(slotChangeReadOnlyMode(bool)));
 
     connect(listHistory, SIGNAL(sigChanged()), this, SLOT(setupGui()));
+
+    connect(toolAddImage, SIGNAL(clicked()), photoAlbum, SLOT(slotAddImage()));
+    connect(toolDelImage, SIGNAL(clicked()), photoAlbum, SLOT(slotDelImage()));
+    connect(photoAlbum, SIGNAL(sigChanged(QList<CGisItemWpt::image_t>)), this, SLOT(slotChangedImages(QList<CGisItemWpt::image_t>)));
 }
 
 CDetailsWpt::~CDetailsWpt()
 {
-
 }
 
 
@@ -73,9 +80,9 @@ void CDetailsWpt::setupGui()
     bool isReadOnly = wpt.isReadOnly();
 
     toolIcon->setIcon(wpt.getIcon());
-    toolIcon->setObjectName(wpt.getIconName());   
-    labelName->setText(IGisItem::toLink(isReadOnly, "name", wpt.getName()));
-    labelPositon->setText(IGisItem::toLink(isReadOnly, "position", strPos));
+    toolIcon->setObjectName(wpt.getIconName());
+    labelName->setText(IGisItem::toLink(isReadOnly, "name", wpt.getName(), ""));
+    labelPositon->setText(IGisItem::toLink(isReadOnly, "position", strPos, ""));
 
     if(wpt.isTainted())
     {
@@ -89,21 +96,21 @@ void CDetailsWpt::setupGui()
     if(wpt.getElevation() != NOINT)
     {
         IUnit::self().meter2elevation(wpt.getElevation(), val, unit);
-        labelElevation->setText(IGisItem::toLink(isReadOnly, "elevation", QString("%1 %2").arg(val).arg(unit)));
+        labelElevation->setText(IGisItem::toLink(isReadOnly, "elevation", QString("%1 %2").arg(val).arg(unit), ""));
     }
     else
     {
-        labelElevation->setText(IGisItem::toLink(isReadOnly, "elevation", "--"));
+        labelElevation->setText(IGisItem::toLink(isReadOnly, "elevation", "--", ""));
     }
 
     if(wpt.getProximity() != NOFLOAT)
     {
         IUnit::self().meter2elevation(wpt.getProximity(), val, unit);
-        labelProximity->setText(IGisItem::toLink(isReadOnly, "proximity", QString("%1 %2").arg(val).arg(unit)));
+        labelProximity->setText(IGisItem::toLink(isReadOnly, "proximity", QString("%1 %2").arg(val).arg(unit), ""));
     }
     else
     {
-        labelProximity->setText(IGisItem::toLink(isReadOnly, "proximity", "--"));
+        labelProximity->setText(IGisItem::toLink(isReadOnly, "proximity", "--", ""));
     }
 
     if(wpt.getTime().isValid())
@@ -113,13 +120,27 @@ void CDetailsWpt::setupGui()
 
     textCmtDesc->document()->clear();
     textCmtDesc->append(IGisItem::createText(isReadOnly, wpt.getComment(), wpt.getDescription(), wpt.getLinks()));
-    textCmtDesc->moveCursor (QTextCursor::Start) ;
-    textCmtDesc->ensureCursorVisible() ;
+    textCmtDesc->moveCursor (QTextCursor::Start);
+    textCmtDesc->ensureCursorVisible();
 
     toolLock->setChecked(isReadOnly);
 
     listHistory->setupHistory(wpt);
 
+    const QList<CGisItemWpt::image_t>& images = wpt.getImages();
+    photoAlbum->reload(images);
+    toolAddImage->hide();
+    toolDelImage->hide();
+
+    if(!isReadOnly)
+    {
+        toolAddImage->show();
+        if(!images.isEmpty())
+        {
+            toolDelImage->show();
+        }
+    }
+
     originator = false;
 }
 
@@ -173,10 +194,9 @@ void CDetailsWpt::slotLinkActivated(const QUrl& url)
         dlg.setHtml(wpt.getComment());
         if(dlg.exec() == QDialog::Accepted)
         {
-            wpt.setComment(dlg.getHtml());            
+            wpt.setComment(dlg.getHtml());
         }
         setupGui();
-
     }
     else if(url.toString() == "description")
     {
@@ -184,7 +204,7 @@ void CDetailsWpt::slotLinkActivated(const QUrl& url)
         dlg.setHtml(wpt.getDescription());
         if(dlg.exec() == QDialog::Accepted)
         {
-            wpt.setDescription(dlg.getHtml());            
+            wpt.setDescription(dlg.getHtml());
         }
         setupGui();
     }
@@ -206,7 +226,6 @@ void CDetailsWpt::slotLinkActivated(const QUrl& url)
 
 void CDetailsWpt::slotChangeIcon()
 {
-
     if(wpt.isReadOnly())
     {
         return;
@@ -226,3 +245,9 @@ void CDetailsWpt::slotChangeReadOnlyMode(bool on)
     wpt.setReadOnlyMode(on);
     setupGui();
 }
+
+void CDetailsWpt::slotChangedImages(const QList<CGisItemWpt::image_t>& images)
+{
+    wpt.setImages(images);
+    setupGui();
+}
diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
index e08460b..316a2d3 100644
--- a/src/gis/wpt/CDetailsWpt.h
+++ b/src/gis/wpt/CDetailsWpt.h
@@ -19,29 +19,30 @@
 #ifndef CDETAILSWPT_H
 #define CDETAILSWPT_H
 
-#include <QDialog>
 #include "ui_IDetailsWpt.h"
+#include <QDialog>
 
-class CGisItemWpt;
+#include <gis/wpt/CGisItemWpt.h>
 
 class CDetailsWpt : public QDialog, private Ui::IDetailsWpt
-{    
+{
     Q_OBJECT
-    public:
-        CDetailsWpt(CGisItemWpt& wpt, QWidget * parent);
-        virtual ~CDetailsWpt();
-
-    private slots:
-        void slotLinkActivated(const QString& link);
-        void slotLinkActivated(const QUrl& url);
-        void slotChangeIcon();
-        void slotChangeReadOnlyMode(bool on);
-        void setupGui();
-
-    private:        
-        CGisItemWpt& wpt;
-
-        bool originator;
+public:
+    CDetailsWpt(CGisItemWpt& wpt, QWidget * parent);
+    virtual ~CDetailsWpt();
+
+private slots:
+    void slotLinkActivated(const QString& link);
+    void slotLinkActivated(const QUrl& url);
+    void slotChangeIcon();
+    void slotChangeReadOnlyMode(bool on);
+    void slotChangedImages(const QList<CGisItemWpt::image_t>& images);
+    void setupGui();
+
+private:
+    CGisItemWpt& wpt;
+
+    bool originator;
 };
 
 #endif //CDETAILSWPT_H
diff --git a/src/gis/wpt/CGisItemWpt.cpp b/src/gis/wpt/CGisItemWpt.cpp
index 99d6f57..2f0dcd8 100644
--- a/src/gis/wpt/CGisItemWpt.cpp
+++ b/src/gis/wpt/CGisItemWpt.cpp
@@ -16,21 +16,21 @@
 
 **********************************************************************************************/
 
-#include "gis/wpt/CGisItemWpt.h"
-#include "gis/wpt/CDetailsWpt.h"
-#include "gis/wpt/CDetailsGeoCache.h"
-#include "gis/wpt/CScrOptWpt.h"
-#include "gis/prj/IGisProject.h"
+#include "CMainWindow.h"
+#include "GeoMath.h"
+#include "canvas/CCanvas.h"
 #include "gis/CGisDraw.h"
-#include "gis/WptIcons.h"
 #include "gis/CGisListWks.h"
-#include "canvas/CCanvas.h"
+#include "gis/WptIcons.h"
+#include "gis/prj/IGisProject.h"
+#include "gis/wpt/CDetailsGeoCache.h"
+#include "gis/wpt/CDetailsWpt.h"
+#include "gis/wpt/CGisItemWpt.h"
+#include "gis/wpt/CScrOptWpt.h"
+#include "helpers/CPositionDialog.h"
+#include "helpers/CWptIconDialog.h"
 #include "mouse/IMouse.h"
 #include "units/IUnit.h"
-#include "helpers/CWptIconDialog.h"
-#include "helpers/CPositionDialog.h"
-#include "GeoMath.h"
-#include "CMainWindow.h"
 
 
 
@@ -47,7 +47,6 @@ CGisItemWpt::CGisItemWpt(const QPointF& pos, const QString& name, const QString
     , proximity(NOFLOAT)
     , posScreen(NOPOINTF)
 {
-
     wpt.name    = name;
     wpt.sym     = icon;
     wpt.lon     = pos.x();
@@ -60,7 +59,6 @@ CGisItemWpt::CGisItemWpt(const QPointF& pos, const QString& name, const QString
 
     boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);
 
-    genKey();
     setupHistory();
     updateDecoration(eMarkChanged, eMarkNone);
 }
@@ -77,6 +75,7 @@ CGisItemWpt::CGisItemWpt(const QPointF& pos, const CGisItemWpt& parentWpt, IGisP
     wpt.time    = QDateTime::currentDateTimeUtc();
 
     key.clear();
+    history.events.clear();
     flags = eFlagCreatedInQms|eFlagWriteAllowed;
 
     qreal ele = CMainWindow::self().getEelevationAt(pos * DEG_TO_RAD);
@@ -84,7 +83,6 @@ CGisItemWpt::CGisItemWpt(const QPointF& pos, const CGisItemWpt& parentWpt, IGisP
 
     boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);
 
-    genKey();
     setupHistory();
     updateDecoration(eMarkChanged, eMarkNone);
 }
@@ -101,7 +99,8 @@ CGisItemWpt::CGisItemWpt(const CGisItemWpt &parentWpt, IGisProject *project, int
     if(clone)
     {
         wpt.name += QObject::tr("_Clone");
-        key.item.clear();
+        key.clear();
+        history.events.clear();
     }
 
     setupHistory();
@@ -129,7 +128,7 @@ CGisItemWpt::CGisItemWpt(const history_t& hist, IGisProject * project)
 {
     history = hist;
     loadHistory(hist.histIdxCurrent);
-    boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);    
+    boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);
 }
 
 CGisItemWpt::CGisItemWpt(quint64 id, QSqlDatabase& db, IGisProject * project)
@@ -143,7 +142,6 @@ CGisItemWpt::CGisItemWpt(quint64 id, QSqlDatabase& db, IGisProject * project)
 
 CGisItemWpt::~CGisItemWpt()
 {
-
 }
 
 void CGisItemWpt::setSymbol()
@@ -174,7 +172,6 @@ const QString& CGisItemWpt::getNewName()
         {
             lastName = lastName.left(idx) + QString::number(lastName.mid(idx).toInt() + 1);
         }
-
     }
     lastName = QInputDialog::getText(0, QObject::tr("Edit name..."), QObject::tr("Enter new waypoint name."), QLineEdit::Normal, lastName);
     return lastName;
@@ -212,14 +209,20 @@ QString CGisItemWpt::getInfo() const
 
     if(wpt.time.isValid())
     {
-        if(!str.isEmpty()) str += "<br/>\n";
+        if(!str.isEmpty())
+        {
+            str += "<br/>\n";
+        }
 
         str += IUnit::datetime2string(wpt.time, false, QPointF(wpt.lon*DEG_TO_RAD, wpt.lat*DEG_TO_RAD));
     }
 
     if(wpt.ele != NOINT)
     {
-        if(!str.isEmpty()) str += "<br/>\n";
+        if(!str.isEmpty())
+        {
+            str += "<br/>\n";
+        }
         QString val, unit;
         IUnit::self().meter2elevation(wpt.ele, val, unit);
         str += QObject::tr("Elevation: %1 %2").arg(val).arg(unit);
@@ -227,7 +230,10 @@ QString CGisItemWpt::getInfo() const
 
     if(proximity != NOFLOAT)
     {
-        if(!str.isEmpty()) str += "<br/>\n";
+        if(!str.isEmpty())
+        {
+            str += "<br/>\n";
+        }
         QString val, unit;
         IUnit::self().meter2distance(proximity, val, unit);
         str += QObject::tr("Proximity: %1 %2").arg(val).arg(unit);
@@ -236,7 +242,10 @@ QString CGisItemWpt::getInfo() const
     QString desc = removeHtml(wpt.desc).simplified();
     if(desc.count())
     {
-        if(!str.isEmpty()) str += "<br/>\n";
+        if(!str.isEmpty())
+        {
+            str += "<br/>\n";
+        }
 
         if(desc.count() < 200)
         {
@@ -252,7 +261,10 @@ QString CGisItemWpt::getInfo() const
         QString cmt = removeHtml(wpt.cmt).simplified();
         if(cmt.count())
         {
-            if(!str.isEmpty()) str += "<br/>\n";
+            if(!str.isEmpty())
+            {
+                str += "<br/>\n";
+            }
 
             if(cmt.count() < 200)
             {
@@ -291,7 +303,7 @@ void CGisItemWpt::setIcon()
 }
 
 void CGisItemWpt::setName(const QString& str)
-{    
+{
     setText(CGisListWks::eColumnName, str);
     lastName = str;
     wpt.name = str;
@@ -318,7 +330,7 @@ void CGisItemWpt::setProximity(qreal val)
 }
 
 void CGisItemWpt::setIcon(const QString& name)
-{    
+{
     lastIcon = name;
     wpt.sym  = name;
 
@@ -347,6 +359,11 @@ void CGisItemWpt::setLinks(const QList<link_t>& links)
     changed(QObject::tr("Changed links"), "://icons/48x48/Link.png");
 }
 
+void CGisItemWpt::setImages(const QList<image_t>& imgs)
+{
+    images = imgs;
+    changed(QObject::tr("Changed images"), "://icons/48x48/Image.png");
+}
 
 bool CGisItemWpt::isCloseTo(const QPointF& pos)
 {
@@ -355,7 +372,7 @@ bool CGisItemWpt::isCloseTo(const QPointF& pos)
         return false;
     }
 
-    return ((pos - posScreen).manhattanLength() < 22);
+    return (pos - posScreen).manhattanLength() < 22;
 }
 
 void CGisItemWpt::gainUserFocus(bool yes)
@@ -421,11 +438,11 @@ void CGisItemWpt::drawLabel(QPainter& p, const QPolygonF &viewport, QList<QRectF
     rect.adjust(-2,-2,2,2);
 
     // place label on top
-    rect.moveCenter(pt + QPointF(icon.width()/2, - fm.height()));
+    rect.moveCenter(pt + QPointF(icon.width()/2, -fm.height()));
     if(isBlocked(rect, blockedAreas))
     {
         // place label on bottom
-        rect.moveCenter(pt + QPointF( icon.width()/2, + fm.height() + icon.height()));
+        rect.moveCenter(pt + QPointF( icon.width()/2, +fm.height() + icon.height()));
         if(isBlocked(rect, blockedAreas))
         {
             // place label on right
@@ -433,7 +450,7 @@ void CGisItemWpt::drawLabel(QPainter& p, const QPolygonF &viewport, QList<QRectF
             if(isBlocked(rect, blockedAreas))
             {
                 // place label on left
-                rect.moveCenter(pt + QPointF( - rect.width()/2, +fm.height()));
+                rect.moveCenter(pt + QPointF( -rect.width()/2, +fm.height()));
                 if(isBlocked(rect, blockedAreas))
                 {
                     // failed to place label anywhere
@@ -455,5 +472,4 @@ void CGisItemWpt::drawHighlight(QPainter& p)
     }
 
     p.drawImage(posScreen - QPointF(31,31), QImage("://cursors/wptHighlight.png"));
-
 }
diff --git a/src/gis/wpt/CGisItemWpt.h b/src/gis/wpt/CGisItemWpt.h
index 22e47d9..15b6b31 100644
--- a/src/gis/wpt/CGisItemWpt.h
+++ b/src/gis/wpt/CGisItemWpt.h
@@ -31,173 +31,217 @@ class CQlgtWpt;
 
 class CGisItemWpt : public IGisItem
 {
-    public:
-        enum geocacheservice_e {eGC, eOC, eTC};
+public:
+    enum geocacheservice_e {eGC, eOC, eTC};
 
-        struct geocachelog_t
+    struct geocachelog_t
+    {
+        geocachelog_t() : id(0)
         {
-            geocachelog_t() : id(0){}
-            quint32 id;
-            QDateTime date;
-            QString type;
-            QString finderId;
-            QString finder;
-            bool    textIsHtml;
-            QString text;
-        };
-
-        struct geocache_t
+        }
+        quint32 id;
+        QDateTime date;
+        QString type;
+        QString finderId;
+        QString finder;
+        bool textIsHtml;
+        QString text;
+    };
+
+    struct geocache_t
+    {
+        geocache_t() : service(eOC), hasData(false), id(0), available(true), archived(false), difficulty(0), terrain(0), shortDescIsHtml(false), longDescIsHtml(false)
         {
-            geocache_t() : service(eOC), hasData(false), id(0), available(true), archived(false), difficulty(0), terrain(0), shortDescIsHtml(false), longDescIsHtml(false){}
-            geocacheservice_e service;
-            bool hasData;
-            quint32 id;
-            bool available;
-            bool archived;
-            qreal difficulty;
-            qreal terrain;
-            QString status;
-            QString name;
-            QString owner;
-            QString ownerId;
-            QString type;
-            QString container;
-            bool    shortDescIsHtml;
-            QString shortDesc;
-            bool    longDescIsHtml;
-            QString longDesc;
-            QString hint;
-            QString country;
-            QString state;
-            QString locale;
-            QList<geocachelog_t> logs;
-        };
-
-        struct image_t
-        {
-            QImage  pixmap;
-            qreal   direction;
-            QString info;
-            QString filePath;
-            QString fileName;
-        };
-
-        /**
-           @brief Create a completely new waypoint
-           @param pos       the waypoint's position [°]
-           @param name      the waypoint's name
-           @param icon      the waypoint's icon
-           @param project   the project the waypoint is added to
-         */
-        CGisItemWpt(const QPointF& pos, const QString& name, const QString& icon, IGisProject * project);
-        /**
-           @brief Create a copy of an existing waypoint with a new position
-           @param pos       the waypoint's new position [°]
-           @param parentWpt the waypoint to copy
-           @param project   the project the waypoint is added to
-         */
-        CGisItemWpt(const QPointF& pos, const CGisItemWpt &parentWpt, IGisProject *project);
-        /**
-           @brief Create a 1:1 copy of an existing waypoint (with new key)
-           @param parentWpt the waypoint to copy
-           @param project   the project the waypoint is added to
-           @param idx       the index to insert the item. If -1 the item will be appended to it's group
-         */
-        CGisItemWpt(const CGisItemWpt &parentWpt, IGisProject *project, int idx, bool clone);
-        /**
-           @brief Create item from GPX.
-           @param xml       the GPX section containing the item
-           @param project   the project to append with item
-         */
-        CGisItemWpt(const QDomNode& xml, IGisProject * project);
-
-        /**
-           @brief Create item from list of changes
-           @param hist      the change history
-           @param project   the project to append with item
-        */
-        CGisItemWpt(const history_t& hist, IGisProject * project);
-
-        /**
-           @brief Read item from database by it's database ID
-           @param id        the item's ID in the database
-           @param db        the database itself
-           @param project   the project to append with item
-        */
-        CGisItemWpt(quint64 id, QSqlDatabase& db, IGisProject * project);
-
-        CGisItemWpt(const CQlgtWpt& wpt1);
-
-        virtual ~CGisItemWpt();
-
-        void save(QDomNode& gpx);
-        QDataStream& operator<<(QDataStream& stream);
-        QDataStream& operator>>(QDataStream& stream);
-
-        void setName(const QString& str);
-        void setPosition(const QPointF& pos);
-        void setElevation(qint32 val);
-        void setProximity(qreal val);
-        void setIcon(const QString& name);
-        void setComment(const QString& str);
-        void setDescription(const QString& str);
-        void setLinks(const QList<link_t>& links);
-
-        const QString& getName() const {return wpt.name;}
-        QString getInfo() const;
-        QPointF getPosition(){return QPointF(wpt.lon, wpt.lat);}
-        qint32 getElevation(){return wpt.ele;}
-        qreal getProximity(){return proximity;}
-        const QDateTime& getTime(){return wpt.time;}
-        const QString& getIconName(){return wpt.sym;}
-        const QString& getComment(){return wpt.cmt;}
-        const QString& getDescription(){return wpt.desc;}
-        const geocache_t& getGeoCache(){return geocache;}
-        const QList<link_t>& getLinks(){return wpt.links;}
-
-        IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse);
-        QPointF getPointCloseBy(const QPoint& ){return posScreen;}
-
-        void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
-        void drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
-        void drawHighlight(QPainter& p);        
-        bool isCloseTo(const QPointF& pos);
-        bool isGeocache(){return geocache.hasData;}
-        void gainUserFocus(bool yes);
-
-        void edit();
-
-        static const QString &getNewName();
-        static const QString &getNewIcon();
-        static void getNewPosition(QPointF &pos);
-
-    private:
-        void setSymbol();
-        void readGpx(const QDomNode& xml);
-        void setIcon();
-        void readGcExt(const QDomNode& xmlCache);
-        void writeGcExt(QDomNode& xmlCache);
-
-        static key_t keyUserFocus;
-        static QString lastName;
-        static QString lastIcon;
-
-
-        // --- start all waypoint data ----
-        wpt_t wpt;
-        qreal proximity;
-        geocache_t geocache;
-        QList<image_t> images;
-
-        QPointF focus;
-        QPointF posScreen;
-
-        // additonal data, common to all IGisItems, is found in IItem //
-
-        // --- stop all waypoint data ----
-
-        QPointer<CScrOptWpt> scrOpt;
-
+        }
+        geocacheservice_e service;
+        bool hasData;
+        quint32 id;
+        bool available;
+        bool archived;
+        qreal difficulty;
+        qreal terrain;
+        QString status;
+        QString name;
+        QString owner;
+        QString ownerId;
+        QString type;
+        QString container;
+        bool shortDescIsHtml;
+        QString shortDesc;
+        bool longDescIsHtml;
+        QString longDesc;
+        QString hint;
+        QString country;
+        QString state;
+        QString locale;
+        QList<geocachelog_t> logs;
+    };
+
+    struct image_t
+    {
+        QImage pixmap;
+        qreal direction;
+        QString info;
+        QString filePath;
+        QString fileName;
+    };
+
+    /**
+       @brief Create a completely new waypoint
+       @param pos       the waypoint's position [°]
+       @param name      the waypoint's name
+       @param icon      the waypoint's icon
+       @param project   the project the waypoint is added to
+     */
+    CGisItemWpt(const QPointF& pos, const QString& name, const QString& icon, IGisProject * project);
+    /**
+       @brief Create a copy of an existing waypoint with a new position
+       @param pos       the waypoint's new position [°]
+       @param parentWpt the waypoint to copy
+       @param project   the project the waypoint is added to
+     */
+    CGisItemWpt(const QPointF& pos, const CGisItemWpt &parentWpt, IGisProject *project);
+    /**
+       @brief Create a 1:1 copy of an existing waypoint (with new key)
+       @param parentWpt the waypoint to copy
+       @param project   the project the waypoint is added to
+       @param idx       the index to insert the item. If -1 the item will be appended to it's group
+     */
+    CGisItemWpt(const CGisItemWpt &parentWpt, IGisProject *project, int idx, bool clone);
+    /**
+       @brief Create item from GPX.
+       @param xml       the GPX section containing the item
+       @param project   the project to append with item
+     */
+    CGisItemWpt(const QDomNode& xml, IGisProject * project);
+
+    /**
+       @brief Create item from list of changes
+       @param hist      the change history
+       @param project   the project to append with item
+     */
+    CGisItemWpt(const history_t& hist, IGisProject * project);
+
+    /**
+       @brief Read item from database by it's database ID
+       @param id        the item's ID in the database
+       @param db        the database itself
+       @param project   the project to append with item
+     */
+    CGisItemWpt(quint64 id, QSqlDatabase& db, IGisProject * project);
+
+    CGisItemWpt(const CQlgtWpt& wpt1);
+
+    virtual ~CGisItemWpt();
+
+    void save(QDomNode& gpx);
+    QDataStream& operator<<(QDataStream& stream);
+    QDataStream& operator>>(QDataStream& stream);
+
+    void setName(const QString& str);
+    void setPosition(const QPointF& pos);
+    void setElevation(qint32 val);
+    void setProximity(qreal val);
+    void setIcon(const QString& name);
+    void setComment(const QString& str);
+    void setDescription(const QString& str);
+    void setLinks(const QList<link_t>& links);
+    void setImages(const QList<image_t>& imgs);
+
+    const QString& getName() const
+    {
+        return wpt.name;
+    }
+    QString getInfo() const;
+    QPointF getPosition() const
+    {
+        return QPointF(wpt.lon, wpt.lat);
+    }
+    qint32 getElevation() const
+    {
+        return wpt.ele;
+    }
+    qreal getProximity() const
+    {
+        return proximity;
+    }
+    const QDateTime& getTime() const
+    {
+        return wpt.time;
+    }
+    const QString& getIconName() const
+    {
+        return wpt.sym;
+    }
+    const QString& getComment() const
+    {
+        return wpt.cmt;
+    }
+    const QString& getDescription() const
+    {
+        return wpt.desc;
+    }
+    const geocache_t& getGeoCache() const
+    {
+        return geocache;
+    }
+    const QList<link_t>& getLinks() const
+    {
+        return wpt.links;
+    }
+    const QList<image_t>& getImages() const
+    {
+        return images;
+    }
+
+    IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse);
+    QPointF getPointCloseBy(const QPoint& )
+    {
+        return posScreen;
+    }
+
+    void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
+    void drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
+    void drawHighlight(QPainter& p);
+    bool isCloseTo(const QPointF& pos);
+    bool isGeocache()
+    {
+        return geocache.hasData;
+    }
+    void gainUserFocus(bool yes);
+
+    void edit();
+
+    static const QString &getNewName();
+    static const QString &getNewIcon();
+    static void getNewPosition(QPointF &pos);
+
+private:
+    void setSymbol();
+    void readGpx(const QDomNode& xml);
+    void setIcon();
+    void readGcExt(const QDomNode& xmlCache);
+    void writeGcExt(QDomNode& xmlCache);
+
+    static key_t keyUserFocus;
+    static QString lastName;
+    static QString lastIcon;
+
+
+    // --- start all waypoint data ----
+    wpt_t wpt;
+    qreal proximity;
+    geocache_t geocache;
+    QList<image_t> images;
+
+    QPointF focus;
+    QPointF posScreen;
+
+    // additonal data, common to all IGisItems, is found in IItem //
+
+    // --- stop all waypoint data ----
+
+    QPointer<CScrOptWpt> scrOpt;
 };
 
 #endif //CGISITEMWPT_H
diff --git a/src/gis/wpt/CProjWpt.cpp b/src/gis/wpt/CProjWpt.cpp
index e613b92..171d4ef 100644
--- a/src/gis/wpt/CProjWpt.cpp
+++ b/src/gis/wpt/CProjWpt.cpp
@@ -16,13 +16,13 @@
 
 **********************************************************************************************/
 
-#include "gis/wpt/CProjWpt.h"
+#include "CMainWindow.h"
+#include "GeoMath.h"
+#include "gis/prj/IGisProject.h"
 #include "gis/wpt/CGisItemWpt.h"
+#include "gis/wpt/CProjWpt.h"
 #include "helpers/CWptIconDialog.h"
-#include "gis/prj/IGisProject.h"
 #include "units/IUnit.h"
-#include "GeoMath.h"
-#include "CMainWindow.h"
 
 #include <QtWidgets>
 #include <proj_api.h>
@@ -49,7 +49,6 @@ CProjWpt::CProjWpt(CGisItemWpt& wpt, QWidget *parent)
 
 CProjWpt::~CProjWpt()
 {
-
 }
 
 void CProjWpt::slotChangeIcon()
diff --git a/src/gis/wpt/CProjWpt.h b/src/gis/wpt/CProjWpt.h
index cf0546e..f53f1b6 100644
--- a/src/gis/wpt/CProjWpt.h
+++ b/src/gis/wpt/CProjWpt.h
@@ -19,28 +19,28 @@
 #ifndef CPROJWPT_H
 #define CPROJWPT_H
 
-#include <QDialog>
 #include "ui_IProjWpt.h"
+#include <QDialog>
 
 class CGisItemWpt;
 
 class CProjWpt : public QDialog, private Ui::IProjWpt
 {
     Q_OBJECT
-    public:
-        CProjWpt(CGisItemWpt &wpt, QWidget * parent);
-        virtual ~CProjWpt();
+public:
+    CProjWpt(CGisItemWpt &wpt, QWidget * parent);
+    virtual ~CProjWpt();
 
-    public slots:
-        void accept();
+public slots:
+    void accept();
 
-    private slots:
-        void slotChangeIcon();
-        void slotChangeName();
+private slots:
+    void slotChangeIcon();
+    void slotChangeName();
 
-    private:
-        CGisItemWpt& wpt;
-        QString name;
+private:
+    CGisItemWpt& wpt;
+    QString name;
 };
 
 #endif //CPROJWPT_H
diff --git a/src/gis/wpt/CScrOptWpt.cpp b/src/gis/wpt/CScrOptWpt.cpp
index b9f272d..7548a3f 100644
--- a/src/gis/wpt/CScrOptWpt.cpp
+++ b/src/gis/wpt/CScrOptWpt.cpp
@@ -17,18 +17,18 @@
 **********************************************************************************************/
 
 
-#include "gis/wpt/CScrOptWpt.h"
+#include "CMainWindow.h"
+#include "canvas/CCanvas.h"
+#include "gis/CGisWidget.h"
 #include "gis/wpt/CGisItemWpt.h"
 #include "gis/wpt/CProjWpt.h"
-#include "gis/CGisWidget.h"
+#include "gis/wpt/CScrOptWpt.h"
 #include "mouse/IMouse.h"
-#include "canvas/CCanvas.h"
-#include "CMainWindow.h"
 
 #include <QtWidgets>
 
 CScrOptWpt::CScrOptWpt(CGisItemWpt *wpt, const QPoint& point, IMouse *parent)
-    : IScrOpt(parent->getCanvas())    
+    : IScrOpt(parent->getCanvas())
 {
     key         = wpt->getKey();
 
@@ -40,6 +40,7 @@ CScrOptWpt::CScrOptWpt(CGisItemWpt *wpt, const QPoint& point, IMouse *parent)
 
     toolMove->setEnabled(!wpt->isReadOnly());
     toolProj->setEnabled(!wpt->isGeocache());
+    photoAlbum->reload(wpt->getImages());
 
     anchor = wpt->getPointCloseBy(point);
     move(anchor.toPoint() + QPoint(-width()/2,SCR_OPT_OFFSET));
@@ -50,11 +51,12 @@ CScrOptWpt::CScrOptWpt(CGisItemWpt *wpt, const QPoint& point, IMouse *parent)
     connect(toolCopy, SIGNAL(clicked()), this, SLOT(slotCopy()));
     connect(toolMove, SIGNAL(clicked()), this, SLOT(slotMove()));
     connect(toolProj, SIGNAL(clicked()), this, SLOT(slotProj()));
+
+    adjustSize();
 }
 
 CScrOptWpt::~CScrOptWpt()
 {
-
 }
 
 void CScrOptWpt::slotDelete()
diff --git a/src/gis/wpt/CScrOptWpt.h b/src/gis/wpt/CScrOptWpt.h
index 713092a..672ace9 100644
--- a/src/gis/wpt/CScrOptWpt.h
+++ b/src/gis/wpt/CScrOptWpt.h
@@ -19,34 +19,34 @@
 #ifndef CSCROPTWPT_H
 #define CSCROPTWPT_H
 
-#include "mouse/IScrOpt.h"
 #include "gis/IGisItem.h"
+#include "mouse/IScrOpt.h"
 
-#include <QWidget>
 #include "ui_IScrOptWpt.h"
+#include <QWidget>
 
 class CGisItemWpt;
 class IMouse;
 
-class CScrOptWpt : public IScrOpt , private Ui::IScrOptWpt
+class CScrOptWpt : public IScrOpt, private Ui::IScrOptWpt
 {
     Q_OBJECT
-    public:
-        CScrOptWpt(CGisItemWpt * wpt, const QPoint &point, IMouse *parent);
-        virtual ~CScrOptWpt();
-
-        void draw(QPainter& p);
-
-    private slots:
-        void slotDelete();
-        void slotEdit();
-        void slotCopy();
-        void slotMove();
-        void slotProj();
-
-    private:
-        IGisItem::key_t key;
-        QPointF anchor;
+public:
+    CScrOptWpt(CGisItemWpt * wpt, const QPoint &point, IMouse *parent);
+    virtual ~CScrOptWpt();
+
+    void draw(QPainter& p);
+
+private slots:
+    void slotDelete();
+    void slotEdit();
+    void slotCopy();
+    void slotMove();
+    void slotProj();
+
+private:
+    IGisItem::key_t key;
+    QPointF anchor;
 };
 
 #endif //CSCROPTWPT_H
diff --git a/src/gis/wpt/IDetailsGeoCache.ui b/src/gis/wpt/IDetailsGeoCache.ui
index 13abbb3..934af5a 100644
--- a/src/gis/wpt/IDetailsGeoCache.ui
+++ b/src/gis/wpt/IDetailsGeoCache.ui
@@ -29,10 +29,29 @@
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
     <layout class="QGridLayout" name="gridLayout">
-     <item row="0" column="1">
-      <widget class="QLabel" name="labelName">
+     <item row="0" column="0">
+      <widget class="QToolButton" name="toolIcon">
        <property name="text">
-        <string>-</string>
+        <string>...</string>
+       </property>
+       <property name="iconSize">
+        <size>
+         <width>22</width>
+         <height>22</height>
+        </size>
+       </property>
+       <property name="autoRaise">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="6" column="1">
+      <widget class="CPhotoAlbum" name="photoAlbum" native="true">
+       <property name="minimumSize">
+        <size>
+         <width>0</width>
+         <height>150</height>
+        </size>
        </property>
       </widget>
      </item>
@@ -45,6 +64,13 @@
        </property>
       </widget>
      </item>
+     <item row="0" column="1">
+      <widget class="QLabel" name="labelName">
+       <property name="text">
+        <string>-</string>
+       </property>
+      </widget>
+     </item>
      <item row="1" column="1">
       <layout class="QHBoxLayout" name="horizontalLayout_2">
        <item>
@@ -225,22 +251,6 @@
        </item>
       </layout>
      </item>
-     <item row="0" column="0">
-      <widget class="QToolButton" name="toolIcon">
-       <property name="text">
-        <string>...</string>
-       </property>
-       <property name="iconSize">
-        <size>
-         <width>22</width>
-         <height>22</height>
-        </size>
-       </property>
-       <property name="autoRaise">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
      <item row="3" column="1">
       <layout class="QHBoxLayout" name="horizontalLayout">
        <item>
@@ -272,6 +282,13 @@
        </item>
       </layout>
      </item>
+     <item row="5" column="0" colspan="2">
+      <widget class="Line" name="line">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+      </widget>
+     </item>
     </layout>
    </item>
   </layout>
@@ -282,6 +299,12 @@
    <extends>QWidget</extends>
    <header>QtWebKitWidgets/QWebView</header>
   </customwidget>
+  <customwidget>
+   <class>CPhotoAlbum</class>
+   <extends>QWidget</extends>
+   <header>helpers/CPhotoAlbum.h</header>
+   <container>1</container>
+  </customwidget>
  </customwidgets>
  <resources>
   <include location="../../resources.qrc"/>
diff --git a/src/gis/wpt/IDetailsWpt.ui b/src/gis/wpt/IDetailsWpt.ui
index 2e838f8..5e3c2e9 100644
--- a/src/gis/wpt/IDetailsWpt.ui
+++ b/src/gis/wpt/IDetailsWpt.ui
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>550</width>
-    <height>500</height>
+    <height>506</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -35,6 +35,85 @@
    </property>
    <item>
     <layout class="QGridLayout" name="gridLayout">
+     <property name="spacing">
+      <number>3</number>
+     </property>
+     <item row="1" column="1">
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <item>
+        <widget class="QLabel" name="label_3">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text">
+          <string>Position:</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="labelPositon">
+         <property name="text">
+          <string>-</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text">
+          <string>Ele.</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="labelElevation">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text">
+          <string>-</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="label_2">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text">
+          <string>Proximity:</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLabel" name="labelProximity">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text">
+          <string>-</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
      <item row="3" column="1">
       <widget class="QTextBrowser" name="textCmtDesc">
        <property name="sizePolicy">
@@ -148,117 +227,98 @@
        </item>
       </layout>
      </item>
-     <item row="1" column="1">
-      <layout class="QHBoxLayout" name="horizontalLayout_2">
+     <item row="5" column="1">
+      <widget class="CHistoryListWidget" name="listHistory"/>
+     </item>
+     <item row="0" column="0">
+      <widget class="QToolButton" name="toolIcon">
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="iconSize">
+        <size>
+         <width>22</width>
+         <height>22</height>
+        </size>
+       </property>
+       <property name="autoRaise">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="4" column="1">
+      <widget class="CPhotoAlbum" name="photoAlbum" native="true">
+       <property name="minimumSize">
+        <size>
+         <width>0</width>
+         <height>150</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>16777215</width>
+         <height>150</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+     <item row="4" column="0">
+      <layout class="QVBoxLayout" name="verticalLayout">
        <item>
-        <widget class="QLabel" name="label_3">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="text">
-          <string>Position:</string>
+        <widget class="QToolButton" name="toolAddImage">
+         <property name="toolTip">
+          <string>Add images.</string>
          </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QLabel" name="labelPositon">
          <property name="text">
-          <string>-</string>
+          <string>...</string>
          </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QLabel" name="label">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
+         <property name="icon">
+          <iconset resource="../../resources.qrc">
+           <normaloff>:/icons/32x32/AddImage.png</normaloff>:/icons/32x32/AddImage.png</iconset>
          </property>
-         <property name="text">
-          <string>Ele.</string>
+         <property name="iconSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
          </property>
         </widget>
        </item>
        <item>
-        <widget class="QLabel" name="labelElevation">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
+        <widget class="QToolButton" name="toolDelImage">
+         <property name="toolTip">
+          <string>Delete selected image.</string>
          </property>
          <property name="text">
-          <string>-</string>
+          <string>...</string>
          </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QLabel" name="label_2">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
+         <property name="icon">
+          <iconset resource="../../resources.qrc">
+           <normaloff>:/icons/32x32/DelImage.png</normaloff>:/icons/32x32/DelImage.png</iconset>
          </property>
-         <property name="text">
-          <string>Proximity:</string>
+         <property name="iconSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
          </property>
         </widget>
        </item>
        <item>
-        <widget class="QLabel" name="labelProximity">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
+        <spacer name="verticalSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
          </property>
-         <property name="text">
-          <string>-</string>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
          </property>
-        </widget>
+        </spacer>
        </item>
       </layout>
      </item>
-     <item row="4" column="1">
-      <widget class="CHistoryListWidget" name="listHistory"/>
-     </item>
-     <item row="5" column="1">
-      <spacer name="verticalSpacer">
-       <property name="orientation">
-        <enum>Qt::Vertical</enum>
-       </property>
-       <property name="sizeType">
-        <enum>QSizePolicy::Expanding</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>20</width>
-         <height>40</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-     <item row="0" column="0">
-      <widget class="QToolButton" name="toolIcon">
-       <property name="text">
-        <string>...</string>
-       </property>
-       <property name="iconSize">
-        <size>
-         <width>22</width>
-         <height>22</height>
-        </size>
-       </property>
-       <property name="autoRaise">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
     </layout>
    </item>
   </layout>
@@ -269,6 +329,12 @@
    <extends>QListWidget</extends>
    <header>helpers/CHistoryListWidget.h</header>
   </customwidget>
+  <customwidget>
+   <class>CPhotoAlbum</class>
+   <extends>QWidget</extends>
+   <header>helpers/CPhotoAlbum.h</header>
+   <container>1</container>
+  </customwidget>
  </customwidgets>
  <resources>
   <include location="../../resources.qrc"/>
diff --git a/src/gis/wpt/IScrOptWpt.ui b/src/gis/wpt/IScrOptWpt.ui
index 19d49ad..038b696 100644
--- a/src/gis/wpt/IScrOptWpt.ui
+++ b/src/gis/wpt/IScrOptWpt.ui
@@ -163,8 +163,26 @@
      </property>
     </widget>
    </item>
+   <item>
+    <widget class="CPhotoAlbum" name="photoAlbum" native="true">
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>100</height>
+      </size>
+     </property>
+    </widget>
+   </item>
   </layout>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>CPhotoAlbum</class>
+   <extends>QWidget</extends>
+   <header>helpers/CPhotoAlbum.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
  <resources>
   <include location="../../resources.qrc"/>
  </resources>
diff --git a/src/grid/CGrid.cpp b/src/grid/CGrid.cpp
index f0b582d..1b50fa6 100644
--- a/src/grid/CGrid.cpp
+++ b/src/grid/CGrid.cpp
@@ -16,12 +16,12 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
+#include "GeoMath.h"
+#include "canvas/CCanvas.h"
 #include "grid/CGrid.h"
 #include "helpers/CSettings.h"
-#include "canvas/CCanvas.h"
-#include "CMainWindow.h"
 #include "map/CMapDraw.h"
-#include "GeoMath.h"
 
 #include <QtGui>
 
@@ -40,7 +40,6 @@ CGrid::CGrid(CMapDraw *map)
 
 CGrid::~CGrid()
 {
-
 }
 
 void CGrid::convertPos2Str(const QPointF& pos, QString& info)
@@ -86,9 +85,11 @@ void CGrid::setProjAndColor(const QString& proj, const QColor& c)
     projstr = proj;
     color   = c;
 
-    if(pjGrid) pj_free(pjGrid);
+    if(pjGrid)
+    {
+        pj_free(pjGrid);
+    }
     pjGrid  = pj_init_plus(projstr.toLatin1());
-
 }
 
 void CGrid::findGridSpace(qreal min, qreal max, qreal& xSpace, qreal& ySpace)
@@ -175,7 +176,6 @@ void CGrid::findGridSpace(qreal min, qreal max, qreal& xSpace, qreal& ySpace)
         xSpace = 50000000;
         ySpace = 50000000;
     }
-
 }
 
 
@@ -199,14 +199,19 @@ bool CGrid::calcIntersection(qreal x1, qreal y1, qreal x2, qreal y2, qreal x3, q
 
 struct val_t
 {
-    val_t(qint32 pos, qreal val) : pos(pos), val(val){}
+    val_t(qint32 pos, qreal val) : pos(pos), val(val)
+    {
+    }
     qint32 pos;
     qreal val;
 };
 
 void CGrid::draw(QPainter& p, const QRect& rect)
 {
-    if(pjWGS84 == 0 || pjGrid == 0 || !CMainWindow::self().isGridVisible()) return;
+    if(pjWGS84 == 0 || pjGrid == 0 || !CMainWindow::self().isGridVisible())
+    {
+        return;
+    }
 
     QPointF topLeft     = rect.topLeft();
     QPointF topRight    = rect.topRight();
@@ -252,8 +257,14 @@ void CGrid::draw(QPainter& p, const QRect& rect)
 
     if(pj_is_latlong(pjGrid))
     {
-        if(y > (85*DEG_TO_RAD)) y = (85*DEG_TO_RAD);
-        if(btmMin < -(85*DEG_TO_RAD - yGridSpace)) btmMin = -(85*DEG_TO_RAD - yGridSpace);
+        if(y > (85*DEG_TO_RAD))
+        {
+            y = (85*DEG_TO_RAD);
+        }
+        if(btmMin < -(85*DEG_TO_RAD - yGridSpace))
+        {
+            btmMin = -(85*DEG_TO_RAD - yGridSpace);
+        }
 
         if(x > rightMax)
         {
@@ -338,7 +349,7 @@ void CGrid::draw(QPainter& p, const QRect& rect)
     p.restore();
 
     QColor textColor;
-    textColor.setHsv(color.hslHue(), color.hsvSaturation(), (color.value()>128?color.value()-128:0));
+    textColor.setHsv(color.hslHue(), color.hsvSaturation(), (color.value()>128 ? color.value()-128 : 0));
 
     if(pj_is_latlong(pjGrid))
     {
@@ -346,24 +357,24 @@ 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)
+        foreach(const val_t &val, horzTopTicks)
         {
-            CCanvas::drawText(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);
+            CCanvas::drawText(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)
+        foreach(const val_t &val, horzBtmTicks)
         {
-            CCanvas::drawText(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);
+            CCanvas::drawText(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)
+        foreach(const val_t &val, vertLftTicks)
         {
-            CCanvas::drawText(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);
+            CCanvas::drawText(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)
+        foreach(const val_t &val, vertRgtTicks)
         {
-            CCanvas::drawText(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);
+            CCanvas::drawText(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);
         }
     }
     else
@@ -372,22 +383,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)
+        foreach(const val_t &val, horzTopTicks)
         {
             CCanvas::drawText(QString("%1").arg(qint32(val.val/1000)), p, QPoint(val.pos, yoff), textColor);
         }
 
-        foreach(const val_t& val, horzBtmTicks)
+        foreach(const val_t &val, horzBtmTicks)
         {
             CCanvas::drawText(QString("%1").arg(qint32(val.val/1000)), p, QPoint(val.pos, h), textColor);
         }
 
-        foreach(const val_t& val, vertLftTicks)
+        foreach(const val_t &val, vertLftTicks)
         {
             CCanvas::drawText(QString("%1").arg(qint32(val.val/1000)), p, QPoint(xoff, val.pos), textColor);
         }
 
-        foreach(const val_t& val, vertRgtTicks)
+        foreach(const val_t &val, vertRgtTicks)
         {
             CCanvas::drawText(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 279fb57..04981a7 100644
--- a/src/grid/CGrid.h
+++ b/src/grid/CGrid.h
@@ -19,8 +19,8 @@
 #ifndef CGRID_H
 #define CGRID_H
 
-#include <QObject>
 #include <QColor>
+#include <QObject>
 #include <proj_api.h>
 class QPainter;
 class QSettings;
@@ -29,33 +29,31 @@ class CMapDraw;
 class CGrid : public QObject
 {
     Q_OBJECT
-    public:
-        CGrid(CMapDraw * map);
-        virtual ~CGrid();
-
-        void saveConfig(QSettings& cfg);
-        void loadConfig(QSettings& cfg);
-
-        void draw(QPainter& p, const QRect &rect);
+public:
+    CGrid(CMapDraw * map);
+    virtual ~CGrid();
 
-        void setProjAndColor(const QString& proj, const QColor& c);
+    void saveConfig(QSettings& cfg);
+    void loadConfig(QSettings& cfg);
 
-        void convertPos2Str(const QPointF& pos, QString& info);
+    void draw(QPainter& p, const QRect &rect);
 
-    private:
-        friend class CGridSetup;
-        void findGridSpace(qreal min, qreal max, qreal& xSpace, qreal& ySpace);
-        bool calcIntersection(qreal x1, qreal y1, qreal x2, qreal y2, qreal x3, qreal y3, qreal x4, qreal y4, qreal& x, qreal& y);
+    void setProjAndColor(const QString& proj, const QColor& c);
 
-        CMapDraw * map;
+    void convertPos2Str(const QPointF& pos, QString& info);
 
-        projPJ  pjWGS84;
-        projPJ  pjGrid;
+private:
+    friend class CGridSetup;
+    void findGridSpace(qreal min, qreal max, qreal& xSpace, qreal& ySpace);
+    bool calcIntersection(qreal x1, qreal y1, qreal x2, qreal y2, qreal x3, qreal y3, qreal x4, qreal y4, qreal& x, qreal& y);
 
-        QString projstr;
-        QColor color;
+    CMapDraw * map;
 
+    projPJ pjWGS84;
+    projPJ pjGrid;
 
+    QString projstr;
+    QColor color;
 };
 
 #endif //CGRID_H
diff --git a/src/grid/CGridSetup.cpp b/src/grid/CGridSetup.cpp
index 105606f..cca915d 100644
--- a/src/grid/CGridSetup.cpp
+++ b/src/grid/CGridSetup.cpp
@@ -16,9 +16,9 @@
 
 **********************************************************************************************/
 
+#include "grid/CGrid.h"
 #include "grid/CGridSetup.h"
 #include "grid/CProjWizard.h"
-#include "grid/CGrid.h"
 #include "map/CMapDraw.h"
 
 #include <QtWidgets>
@@ -40,12 +40,10 @@ CGridSetup::CGridSetup(CGrid *grid, CMapDraw * map)
     connect(toolFromMap, SIGNAL(clicked()), this, SLOT(slotProjFromMap()));
     connect(toolProjWizzard, SIGNAL(clicked()), this, SLOT(slotProjWizard()));
     connect(toolGridColor,SIGNAL(clicked()),this,SLOT(slotSelectGridColor()));
-
 }
 
 CGridSetup::~CGridSetup()
 {
-
 }
 
 void CGridSetup::accept()
diff --git a/src/grid/CGridSetup.h b/src/grid/CGridSetup.h
index 5cd6c13..030844d 100644
--- a/src/grid/CGridSetup.h
+++ b/src/grid/CGridSetup.h
@@ -19,8 +19,8 @@
 #ifndef CGRIDSETUP_H
 #define CGRIDSETUP_H
 
-#include <QDialog>
 #include "ui_IGridSetup.h"
+#include <QDialog>
 
 class CGrid;
 class CMapDraw;
@@ -28,22 +28,22 @@ class CMapDraw;
 class CGridSetup : public QDialog, private Ui::IGridSetup
 {
     Q_OBJECT
-    public:
-        CGridSetup(CGrid * grid, CMapDraw *map);
-        virtual ~CGridSetup();
-
-    public slots:
-        void accept();
-
-    private slots:
-        void slotProjWizard();
-        void slotSelectGridColor();
-        void slotRestoreDefault();
-        void slotProjFromMap();
-
-    private:
-        CGrid * grid;
-        CMapDraw * map;
+public:
+    CGridSetup(CGrid * grid, CMapDraw *map);
+    virtual ~CGridSetup();
+
+public slots:
+    void accept();
+
+private slots:
+    void slotProjWizard();
+    void slotSelectGridColor();
+    void slotRestoreDefault();
+    void slotProjFromMap();
+
+private:
+    CGrid * grid;
+    CMapDraw * map;
 };
 
 #endif //CGRIDSETUP_H
diff --git a/src/grid/CProjWizard.cpp b/src/grid/CProjWizard.cpp
index c07bc06..289115f 100644
--- a/src/grid/CProjWizard.cpp
+++ b/src/grid/CProjWizard.cpp
@@ -19,10 +19,10 @@
 #include "CProjWizard.h"
 #include "grid/mitab.h"
 
-#include <proj_api.h>
 #include <QtWidgets>
+#include <proj_api.h>
 
-struct mitab_entry_t {QString name; int idx;};
+struct mitab_entry_t {QString name; int idx; };
 
 static bool mitabLessThan(const mitab_entry_t &s1, const mitab_entry_t &s2)
 {
@@ -33,7 +33,7 @@ CProjWizard::CProjWizard(QLineEdit &line)
     : line(line)
 {
     setupUi(this);
-    mitab_entry_t           entry;
+    mitab_entry_t entry;
     QList<mitab_entry_t>    list;
     int idx                 = 0;
     const MapInfoDatumInfo * di   = asDatumInfoListQL;
@@ -43,7 +43,7 @@ CProjWizard::CProjWizard(QLineEdit &line)
         entry.name  = di->pszOGCDatumName;
         entry.idx   = idx;
         list << entry;
-        ++di;++idx;
+        ++di; ++idx;
     }
     qSort(list.begin(), list.end(), mitabLessThan);
 
@@ -63,7 +63,7 @@ CProjWizard::CProjWizard(QLineEdit &line)
     connect(radioUserDef, SIGNAL(clicked()), this, SLOT(slotChange()));
     connect(comboDatum, SIGNAL(currentIndexChanged(int)), this, SLOT(slotChange()));
     connect(comboHemisphere, SIGNAL(currentIndexChanged(int)), this, SLOT(slotChange()));
-    connect(lineUserDef, SIGNAL(textChanged(const QString&)), this, SLOT(slotChange()));
+    connect(lineUserDef, SIGNAL(textChanged(const QString &)), this, SLOT(slotChange()));
     connect(spinUTMZone, SIGNAL(valueChanged(int)), this, SLOT(slotChange()));
 
     QString projstr = line.text();
@@ -100,7 +100,6 @@ CProjWizard::CProjWizard(QLineEdit &line)
 
 CProjWizard::~CProjWizard()
 {
-
 }
 
 
@@ -112,14 +111,16 @@ void CProjWizard::findDatum(const QString& str)
 
     while(di->nMapInfoDatumID != -1)
     {
-
         cmp.clear();
         if(di->pszOGCDatumName != QString(""))
         {
             const MapInfoSpheroidInfo * si = asSpheroidInfoList;
             while(si->nMapInfoId != -1)
             {
-                if(si->nMapInfoId == di->nEllipsoid) break;
+                if(si->nMapInfoId == di->nEllipsoid)
+                {
+                    break;
+                }
                 ++si;
             }
 
@@ -134,9 +135,8 @@ void CProjWizard::findDatum(const QString& str)
             break;
         }
 
-        ++di;++idx;
+        ++di; ++idx;
     }
-
 }
 
 
@@ -164,7 +164,6 @@ void CProjWizard::slotChange()
     else if(radioUTM->isChecked())
     {
         str += QString("+proj=utm +zone=%1 %2 ").arg(spinUTMZone->value()).arg(comboHemisphere->itemData(comboHemisphere->currentIndex()).toString());
-
     }
     else if(radioUserDef->isChecked())
     {
@@ -178,7 +177,10 @@ void CProjWizard::slotChange()
         const MapInfoSpheroidInfo * si = asSpheroidInfoList;
         while(si->nMapInfoId != -1)
         {
-            if(si->nMapInfoId == di.nEllipsoid) break;
+            if(si->nMapInfoId == di.nEllipsoid)
+            {
+                break;
+            }
             ++si;
         }
 
diff --git a/src/grid/CProjWizard.h b/src/grid/CProjWizard.h
index 5917952..ea4fd11 100644
--- a/src/grid/CProjWizard.h
+++ b/src/grid/CProjWizard.h
@@ -19,25 +19,25 @@
 #ifndef CPROJWIZARD_H
 #define CPROJWIZARD_H
 
-#include <QDialog>
 #include "ui_IProjWizard.h"
+#include <QDialog>
 
 class CProjWizard : public QDialog, private Ui::IProjWizard
 {
     Q_OBJECT
-    public:
-        CProjWizard(QLineEdit& line);
-        virtual ~CProjWizard();
-        static bool validProjStr(const QString projStr);
+public:
+    CProjWizard(QLineEdit& line);
+    virtual ~CProjWizard();
+    static bool validProjStr(const QString projStr);
 
-    public slots:
-        void accept();
-        void slotChange();
+public slots:
+    void accept();
+    void slotChange();
 
-    private:
-        void findDatum(const QString& str);
+private:
+    void findDatum(const QString& str);
 
-        QLineEdit& line;
+    QLineEdit& line;
 };
 
 #endif //CPROJWIZARD_H
diff --git a/src/grid/mitab.cpp b/src/grid/mitab.cpp
index e8e6861..4569a17 100644
--- a/src/grid/mitab.cpp
+++ b/src/grid/mitab.cpp
@@ -19,7 +19,6 @@
 
 const MapInfoDatumInfo asDatumInfoListQL[] =
 {
-
     {                            // Datum ignore
         0,  "",                            29, 0,   0,    0,   0, 0, 0, 0, 0
     },
diff --git a/src/grid/mitab.h b/src/grid/mitab.h
index ce1cce0..6229b55 100644
--- a/src/grid/mitab.h
+++ b/src/grid/mitab.h
@@ -20,25 +20,25 @@
 
 struct MapInfoDatumInfo
 {
-    int         nMapInfoDatumID;
+    int nMapInfoDatumID;
     const char  *pszOGCDatumName;
-    int         nEllipsoid;
-    double      dfShiftX;
-    double      dfShiftY;
-    double      dfShiftZ;
-    double      dfDatumParm0;    /* RotX */
-    double      dfDatumParm1;    /* RotY */
-    double      dfDatumParm2;    /* RotZ */
-    double      dfDatumParm3;    /* Scale Factor */
-    double      dfDatumParm4;    /* Prime Meridian */
+    int nEllipsoid;
+    double dfShiftX;
+    double dfShiftY;
+    double dfShiftZ;
+    double dfDatumParm0;         /* RotX */
+    double dfDatumParm1;         /* RotY */
+    double dfDatumParm2;         /* RotZ */
+    double dfDatumParm3;         /* Scale Factor */
+    double dfDatumParm4;         /* Prime Meridian */
 };
 
 struct MapInfoSpheroidInfo
 {
-    int         nMapInfoId;
+    int nMapInfoId;
     const char *pszMapinfoName;
-    double      dfA;             /* semi major axis in meters */
-    double      dfInvFlattening; /* Inverse flattening */
+    double dfA;                  /* semi major axis in meters */
+    double dfInvFlattening;      /* Inverse flattening */
 };
 
 extern const MapInfoDatumInfo asDatumInfoListQL[];
diff --git a/src/helpers/CAppOpts.h b/src/helpers/CAppOpts.h
index 2dd302b..1c3a1de 100644
--- a/src/helpers/CAppOpts.h
+++ b/src/helpers/CAppOpts.h
@@ -26,17 +26,19 @@
 
 class CAppOpts
 {
-    public:
-        const bool debug;        // -d, print debug messages
-        const bool nosplash;     // -n, do not display splash screen
-        const QString configfile;
-        const QStringList arguments;
-
-        CAppOpts(bool doDebug, bool noSplash, const QString& config, const QStringList& args)
-            : debug(doDebug)
-            , nosplash(noSplash)
-            , configfile(config)
-            , arguments(args) {}
+public:
+    const bool debug;            // -d, print debug messages
+    const bool nosplash;         // -n, do not display splash screen
+    const QString configfile;
+    const QStringList arguments;
+
+    CAppOpts(bool doDebug, bool noSplash, const QString& config, const QStringList& args)
+        : debug(doDebug)
+        , nosplash(noSplash)
+        , configfile(config)
+        , arguments(args)
+    {
+    }
 };
 
 extern CAppOpts *qlOpts;
diff --git a/src/helpers/CElevationDialog.cpp b/src/helpers/CElevationDialog.cpp
index 483ad5b..a3d0305 100644
--- a/src/helpers/CElevationDialog.cpp
+++ b/src/helpers/CElevationDialog.cpp
@@ -16,9 +16,9 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "helpers/CElevationDialog.h"
 #include "units/IUnit.h"
-#include "CMainWindow.h"
 
 #include <QtWidgets>
 #include <proj_api.h>
@@ -44,12 +44,10 @@ CElevationDialog::CElevationDialog(QWidget * parent, QVariant &val, const QVaria
         IUnit::self().meter2elevation(val.toDouble(), str, unit);
         lineValue->setText(str);
     }
-
 }
 
 CElevationDialog::~CElevationDialog()
 {
-
 }
 
 void CElevationDialog::accept()
diff --git a/src/helpers/CElevationDialog.h b/src/helpers/CElevationDialog.h
index 0d3837c..eec3421 100644
--- a/src/helpers/CElevationDialog.h
+++ b/src/helpers/CElevationDialog.h
@@ -19,27 +19,26 @@
 #ifndef CELEVATIONDIALOG_H
 #define CELEVATIONDIALOG_H
 
-#include <QDialog>
 #include "ui_IElevationDialog.h"
+#include <QDialog>
 
 class CElevationDialog : public QDialog, private Ui::IElevationDialog
 {
     Q_OBJECT
-    public:
-        CElevationDialog(QWidget * parent, QVariant &val, const QVariant &reset, const QPointF& pos);
-        virtual ~CElevationDialog();
-
-    public slots:
-        void accept();
-
-    private slots:
-        void slotReset();
-        void slotGetEle();
-    private:
-        QVariant& val;
-        QVariant reset;
-        QPointF pos;
-
+public:
+    CElevationDialog(QWidget * parent, QVariant &val, const QVariant &reset, const QPointF& pos);
+    virtual ~CElevationDialog();
+
+public slots:
+    void accept();
+
+private slots:
+    void slotReset();
+    void slotGetEle();
+private:
+    QVariant& val;
+    QVariant reset;
+    QPointF pos;
 };
 
 #endif //CELEVATIONDIALOG_H
diff --git a/src/helpers/CFileExt.h b/src/helpers/CFileExt.h
index 9275d15..a09841b 100644
--- a/src/helpers/CFileExt.h
+++ b/src/helpers/CFileExt.h
@@ -23,21 +23,24 @@
 
 class CFileExt : public QFile
 {
-    public:
-        CFileExt(const QString &filename)
-            : QFile(filename)
-            , mapped(NULL)
-            {}
-
-        // data access function
-        const char *data(qint64 offset)
+public:
+    CFileExt(const QString &filename)
+        : QFile(filename)
+        , mapped(NULL)
+    {
+    }
+
+    // data access function
+    const char *data(qint64 offset)
+    {
+        if(!mapped)
         {
-            if(!mapped)
-                mapped = reinterpret_cast<const char*>(map(0, size()));
-            return mapped + offset;
+            mapped = reinterpret_cast<const char*>(map(0, size()));
         }
-    private:
-        const char *mapped;
+        return mapped + offset;
+    }
+private:
+    const char *mapped;
 };
 
 
diff --git a/src/helpers/CHistoryListWidget.cpp b/src/helpers/CHistoryListWidget.cpp
index 99482ac..b04b6e8 100644
--- a/src/helpers/CHistoryListWidget.cpp
+++ b/src/helpers/CHistoryListWidget.cpp
@@ -16,15 +16,14 @@
 
 **********************************************************************************************/
 
-#include "helpers/CHistoryListWidget.h"
 #include "gis/CGisWidget.h"
+#include "helpers/CHistoryListWidget.h"
 
 #include <QtWidgets>
 
 CHistoryListWidget::CHistoryListWidget(QWidget *parent)
     : QListWidget(parent)
 {
-
     setIconSize(QSize(32,32));
     setContextMenuPolicy(Qt::CustomContextMenu);
     connect(this, SIGNAL(itemSelectionChanged()), this, SLOT(slotSelectionChanged()));
@@ -36,7 +35,6 @@ CHistoryListWidget::CHistoryListWidget(QWidget *parent)
 
 CHistoryListWidget::~CHistoryListWidget()
 {
-
 }
 
 void CHistoryListWidget::setupHistory(IGisItem& gisItem)
diff --git a/src/helpers/CHistoryListWidget.h b/src/helpers/CHistoryListWidget.h
index b93c087..1aa0433 100644
--- a/src/helpers/CHistoryListWidget.h
+++ b/src/helpers/CHistoryListWidget.h
@@ -19,30 +19,30 @@
 #ifndef CHISTORYLISTWIDGET_H
 #define CHISTORYLISTWIDGET_H
 
-#include <QListWidget>
 #include "gis/IGisItem.h"
+#include <QListWidget>
 
 class CHistoryListWidget : public QListWidget
 {
     Q_OBJECT
-    public:
-        CHistoryListWidget(QWidget * parent);
-        virtual ~CHistoryListWidget();
+public:
+    CHistoryListWidget(QWidget * parent);
+    virtual ~CHistoryListWidget();
 
-        void setupHistory(IGisItem &gisItem);
+    void setupHistory(IGisItem &gisItem);
 
-    signals:
-        void sigChanged();
+signals:
+    void sigChanged();
 
-    private slots:
-        void slotSelectionChanged();
-        void slotContextMenu(const QPoint& point);
-        void slotCutHistory();
+private slots:
+    void slotSelectionChanged();
+    void slotContextMenu(const QPoint& point);
+    void slotCutHistory();
 
-    private:
-        IGisItem::key_t key;
-        QMenu * menu;
-        QAction * actionCutHistory;
+private:
+    IGisItem::key_t key;
+    QMenu * menu;
+    QAction * actionCutHistory;
 };
 
 #endif //CHISTORYLISTWIDGET_H
diff --git a/src/helpers/CInputDialog.cpp b/src/helpers/CInputDialog.cpp
index a645589..8aaca45 100644
--- a/src/helpers/CInputDialog.cpp
+++ b/src/helpers/CInputDialog.cpp
@@ -34,12 +34,10 @@ CInputDialog::CInputDialog(QWidget *parent, const QString& text, QVariant& val,
     {
         lineEdit->setText(val.toString());
     }
-
 }
 
 CInputDialog::~CInputDialog()
 {
-
 }
 
 void CInputDialog::accept()
diff --git a/src/helpers/CInputDialog.h b/src/helpers/CInputDialog.h
index 6181479..1b80d76 100644
--- a/src/helpers/CInputDialog.h
+++ b/src/helpers/CInputDialog.h
@@ -19,24 +19,24 @@
 #ifndef CINPUTDIALOG_H
 #define CINPUTDIALOG_H
 
-#include <QDialog>
 #include "ui_IInputDialog.h"
+#include <QDialog>
 
 class CInputDialog : public QDialog, private Ui::IInputDialog
 {
     Q_OBJECT
-    public:
-        CInputDialog(QWidget * parent, const QString &text, QVariant &val, const QVariant &reset);
-        virtual ~CInputDialog();
-
-    public slots:
-        void accept();
-
-    private slots:
-        void slotReset();
-    private:
-        QVariant& val;
-        QVariant reset;
+public:
+    CInputDialog(QWidget * parent, const QString &text, QVariant &val, const QVariant &reset);
+    virtual ~CInputDialog();
+
+public slots:
+    void accept();
+
+private slots:
+    void slotReset();
+private:
+    QVariant& val;
+    QVariant reset;
 };
 
 #endif //CINPUTDIALOG_H
diff --git a/src/helpers/CLinksDialog.cpp b/src/helpers/CLinksDialog.cpp
index f168327..6856553 100644
--- a/src/helpers/CLinksDialog.cpp
+++ b/src/helpers/CLinksDialog.cpp
@@ -38,12 +38,10 @@ CLinksDialog::CLinksDialog(QList<IGisItem::link_t> &links, QWidget *parent)
         item->setText(2, link.uri.toString());
         item->setFlags(item->flags()|Qt::ItemIsEditable);
     }
-
 }
 
 CLinksDialog::~CLinksDialog()
 {
-
 }
 
 void CLinksDialog::slotItemSelectionChanged()
diff --git a/src/helpers/CLinksDialog.h b/src/helpers/CLinksDialog.h
index be89600..51d20a6 100644
--- a/src/helpers/CLinksDialog.h
+++ b/src/helpers/CLinksDialog.h
@@ -20,26 +20,26 @@
 #define CLINKSDIALOG_H
 
 #include "gis/IGisItem.h"
-#include <QDialog>
 #include "ui_ILinksDialog.h"
+#include <QDialog>
 
 class CLinksDialog : public QDialog, private Ui::ILinksDialog
 {
     Q_OBJECT
-    public:
-        CLinksDialog(QList<IGisItem::link_t>& links, QWidget * parent);
-        virtual ~CLinksDialog();
+public:
+    CLinksDialog(QList<IGisItem::link_t>& links, QWidget * parent);
+    virtual ~CLinksDialog();
 
-    public slots:
-        void accept();
+public slots:
+    void accept();
 
-    private slots:
-        void slotAddLink();
-        void slotDelLink();
-        void slotItemSelectionChanged();
+private slots:
+    void slotAddLink();
+    void slotDelLink();
+    void slotItemSelectionChanged();
 
-    private:
-        QList<IGisItem::link_t>& links;
+private:
+    QList<IGisItem::link_t>& links;
 };
 
 #endif //CLINKSDIALOG_H
diff --git a/src/helpers/CPhotoAlbum.cpp b/src/helpers/CPhotoAlbum.cpp
new file mode 100644
index 0000000..6a637fb
--- /dev/null
+++ b/src/helpers/CPhotoAlbum.cpp
@@ -0,0 +1,197 @@
+/**********************************************************************************************
+    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 "helpers/CPhotoAlbum.h"
+#include "helpers/CPhotoViewer.h"
+
+#include <QtWidgets>
+
+CPhotoAlbum::CPhotoAlbum(QWidget *parent)
+    : QWidget(parent)
+    , idx1stVisible(0)
+    , idxSelected(0)
+{
+    setupUi(this);
+    connect(toolLeft, SIGNAL(clicked()), this, SLOT(slotLeft()));
+    connect(toolRight, SIGNAL(clicked()), this, SLOT(slotRight()));
+}
+
+CPhotoAlbum::~CPhotoAlbum()
+{
+}
+
+void CPhotoAlbum::resizeEvent(QResizeEvent * e)
+{
+    QWidget::resizeEvent(e);
+    updateView();
+}
+
+void CPhotoAlbum::mouseDoubleClickEvent(QMouseEvent * e)
+{
+    CPhotoViewer dlg(images, 0,this);
+    dlg.exec();
+}
+
+void CPhotoAlbum::reload(const QList<CGisItemWpt::image_t>& imgs)
+{
+    images = imgs;
+
+    if(idxSelected >= images.size())
+    {
+        idx1stVisible   = 0;
+        idxSelected     = 0;
+    }
+
+    updateView();
+}
+
+void CPhotoAlbum::slotAddImage()
+{
+    QStringList filenames = QFileDialog::getOpenFileNames(this, tr("Select images..."), "./");
+    if(filenames.isEmpty())
+    {
+        return;
+    }
+    foreach(const QString& filename, filenames)
+    {
+        CGisItemWpt::image_t image;
+        image.fileName = filename;
+        image.pixmap.load(filename);
+
+        int w = image.pixmap.width();
+        int h = image.pixmap.height();
+
+        if(w < h)
+        {
+            h *= 400.0 / w;
+            w  = 400;
+        }
+        else
+        {
+            h *= 600.0 / w;
+            w  = 600;
+        }
+        image.pixmap = image.pixmap.scaled(w,h,Qt::KeepAspectRatio, Qt::SmoothTransformation);
+
+        images << image;
+    }
+
+    emit sigChanged(images);
+}
+
+void CPhotoAlbum::slotDelImage()
+{
+    images.removeAt(idxSelected);
+    emit sigChanged(images);
+}
+
+void CPhotoAlbum::slotRight()
+{
+    idxSelected++;
+    QRect r1 = rects[idxSelected];
+    QRect r2 = label->rect();
+
+    while(!r2.contains(r1))
+    {
+        int w = rects[idx1stVisible].width();
+        r1.moveLeft(r1.left() - w);
+        idx1stVisible++;
+    }
+
+    updateView();
+}
+
+void CPhotoAlbum::slotLeft()
+{
+    idxSelected--;
+    QRect r1 = rects[idxSelected];
+    QRect r2 = label->rect();
+
+    while(!r2.contains(r1))
+    {
+        idx1stVisible--;
+        int w = rects[idx1stVisible].width();
+        r1.moveLeft(r1.left() + w);
+    }
+
+    updateView();
+}
+
+
+void CPhotoAlbum::updateView()
+{
+    toolLeft->setEnabled(idxSelected != 0);
+    toolRight->setEnabled(idxSelected != (images.size() - 1));
+
+    if(images.isEmpty())
+    {
+        hide();
+        return;
+    }
+    setEnabled(true);
+    show();
+
+    QPixmap img(label->size());
+    img.fill(Qt::black);
+    QPainter p(&img);
+
+    int xoff = 0;
+
+    for(int i = 0; i < rects.size() && i < idx1stVisible; i++)
+    {
+        xoff -= rects[i].width();
+    }
+
+    rects.clear();
+    for(int i = 0; i < images.size(); i++)
+    {
+        CGisItemWpt::image_t& image = images[i];
+
+        QImage tmp  = image.pixmap.scaledToHeight(label->height(), Qt::SmoothTransformation);
+
+        if(tmp.width() > label->width())
+        {
+            tmp  = image.pixmap.scaledToWidth(label->width(), Qt::SmoothTransformation);
+        }
+
+        QRect r     = tmp.rect();
+
+        int yoff = (height()- r.height()) / 2;
+
+        p.save();
+        p.translate(xoff,yoff);
+        p.drawImage(0,0,tmp);
+        p.setPen(QPen(Qt::black, 3));
+        p.setBrush(Qt::NoBrush);
+        p.drawRect(r);
+        p.restore();
+
+        r.moveTopLeft(QPoint(xoff, yoff));
+        rects << r;
+
+        xoff += tmp.width();
+    }
+
+    if(idxSelected < rects.size())
+    {
+        p.setPen(QPen(Qt::yellow, 5));
+        p.drawRect(rects[idxSelected]);
+    }
+
+    label->setPixmap(img);
+}
diff --git a/src/qlgt/CImportDatabase.h b/src/helpers/CPhotoAlbum.h
similarity index 55%
copy from src/qlgt/CImportDatabase.h
copy to src/helpers/CPhotoAlbum.h
index 38faf8f..a896db2 100644
--- a/src/qlgt/CImportDatabase.h
+++ b/src/helpers/CPhotoAlbum.h
@@ -16,35 +16,46 @@
 
 **********************************************************************************************/
 
-#ifndef CIMPORTDATABASE_H
-#define CIMPORTDATABASE_H
+#ifndef CPHOTOALBUM_H
+#define CPHOTOALBUM_H
 
+#include "ui_IPhotoAlbum.h"
 #include <QWidget>
-#include <QPointer>
-#include "ui_IImportDatabase.h"
 
-class CQlgtDb;
+#include <gis/wpt/CGisItemWpt.h>
 
-class CImportDatabase : public QWidget, private Ui::IImportDatabase
+class CPhotoAlbum : public QWidget, private Ui::IPhotoAlbum
 {
     Q_OBJECT
-    public:
-        CImportDatabase(QWidget * parent);
-        virtual ~CImportDatabase();
+public:
+    CPhotoAlbum(QWidget * parent);
+    virtual ~CPhotoAlbum();
 
-        void stdOut(const QString& str);
-        void stdErr(const QString& str);
+    void reload(const QList<CGisItemWpt::image_t>& imgs);
 
-    private slots:
-        void slotSelectSource();
-        void slotSelectTarget();
-        void slotStart();
+signals:
+    void sigChanged(const QList<CGisItemWpt::image_t>& imgs);
 
+public slots:
+    void slotAddImage();
+    void slotDelImage();
 
-    private:
-        QPointer<CQlgtDb> dbQlgt;
+protected:
+    void resizeEvent(QResizeEvent * e);
+    void mouseDoubleClickEvent(QMouseEvent * e);
 
+private slots:
+    void slotRight();
+    void slotLeft();
+
+private:
+    void updateView();
+    QList<CGisItemWpt::image_t> images;
+    QList<QRect> rects;
+
+    qint32 idx1stVisible;
+    qint32 idxSelected;
 };
 
-#endif //CIMPORTDATABASE_H
+#endif //CPHOTOALBUM_H
 
diff --git a/src/helpers/CPhotoViewer.cpp b/src/helpers/CPhotoViewer.cpp
new file mode 100644
index 0000000..f538486
--- /dev/null
+++ b/src/helpers/CPhotoViewer.cpp
@@ -0,0 +1,166 @@
+/**********************************************************************************************
+    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 "CPhotoViewer.h"
+
+#include <QtWidgets>
+
+CPhotoViewer::CPhotoViewer(QList<CGisItemWpt::image_t> &images, int idx, QWidget *parent)
+    : QDialog(parent)
+    , images(images)
+    , idx(idx)
+    , rectImage(0,0,100,100)
+    , rectClose(0,0,32,32)
+    , rectPrev(0,0,32,32)
+    , rectNext(0,0,32,32)
+{
+    setStyleSheet("background-color:black;");
+    setAttribute(Qt::WA_TranslucentBackground);
+
+    Qt::WindowFlags flags = windowFlags() & Qt::WindowType_Mask;
+    setWindowFlags(flags | Qt::CustomizeWindowHint);
+    showMaximized();
+
+    if(images.isEmpty())
+    {
+        return;
+    }
+
+    setImageAtIdx(idx);
+}
+
+CPhotoViewer::~CPhotoViewer()
+{
+
+}
+
+
+void CPhotoViewer::resizeEvent(QResizeEvent * e)
+{
+    QDialog::resizeEvent(e);
+    setImageAtIdx(idx);
+}
+
+
+void CPhotoViewer::setImageAtIdx(int i)
+{
+    const QRect& rectScreen = rect();
+    const QPoint& center    = rectScreen.center();
+    QImage& pixmap          = images[i].pixmap;
+
+    if(!images[i].filePath.isEmpty())
+    {
+        pixmap = QImage(images[i].filePath);
+    }
+
+    double width  = rectScreen.width() - 64;
+    double height = rectScreen.height() - 64;
+
+    if(pixmap.width() > width || pixmap.height() > height)
+    {
+        rectImage = pixmap.rect();
+
+        if(pixmap.width() > width)
+        {
+            double ratio = width / rectImage.width();
+            rectImage.setWidth(width);
+            rectImage.setHeight(floor(rectImage.height() * ratio) - 1);
+        }
+
+        if(pixmap.height() > height)
+        {
+            double ratio = height / rectImage.height();
+            rectImage.setHeight(height);
+            rectImage.setWidth(floor(rectImage.width() * ratio) - 1);
+        }
+
+        rectImage.moveCenter(center);
+
+    }
+    else
+    {
+        rectImage = pixmap.rect();
+        rectImage.moveCenter(center);
+    }
+
+    rectClose.moveCenter(rectImage.topRight());
+    rectPrev.moveBottomLeft(rectImage.bottomLeft());
+    rectNext.moveBottomRight(rectImage.bottomRight());
+}
+
+
+void CPhotoViewer::paintEvent(QPaintEvent * e)
+{
+    QDialog::paintEvent(e);
+
+    QPainter p(this);
+    p.setPen(Qt::NoPen);
+    p.setBrush(QColor(0,0,0,190));
+    p.drawRect(rect());
+
+    p.setPen(QPen(Qt::white, 11, Qt::SolidLine, Qt::RoundCap, Qt::MiterJoin));
+    p.setBrush(Qt::white);
+    p.drawRect(rectImage);
+
+    p.drawImage(rectImage, images[idx].pixmap.scaled(rectImage.size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
+    p.drawPixmap(rectClose, QPixmap("://icons/32x32/Close.png"));
+
+    if(idx != (images.size() - 1))
+    {
+        p.setPen(Qt::NoPen);
+        p.setBrush(QColor(255,255,255,128));
+        p.drawRect(rectNext);
+        p.drawPixmap(rectNext, QPixmap("://icons/32x32/Right.png"));
+    }
+    if(idx != 0)
+    {
+        p.setPen(Qt::NoPen);
+        p.setBrush(QColor(255,255,255,128));
+        p.drawRect(rectPrev);
+        p.drawPixmap(rectPrev, QPixmap("://icons/32x32/Left.png"));
+    }
+
+}
+
+
+void CPhotoViewer::mousePressEvent(QMouseEvent * e)
+{
+    QPoint pos  = e->pos();
+    if(rectClose.contains(pos))
+    {
+        reject();
+    }
+    else if(rectNext.contains(pos))
+    {
+        if(idx != (images.size() - 1))
+        {
+            setImageAtIdx(++idx);
+            update();
+        }
+    }
+    else if(rectPrev.contains(pos))
+    {
+        if(idx != 0)
+        {
+            setImageAtIdx(--idx);
+            update();
+        }
+    }
+
+    e->accept();
+}
diff --git a/src/helpers/CWptIconDialog.h b/src/helpers/CPhotoViewer.h
similarity index 62%
copy from src/helpers/CWptIconDialog.h
copy to src/helpers/CPhotoViewer.h
index 00eeb77..4c3764e 100644
--- a/src/helpers/CWptIconDialog.h
+++ b/src/helpers/CPhotoViewer.h
@@ -16,34 +16,36 @@
 
 **********************************************************************************************/
 
-#ifndef CWPTICONDIALOG_H
-#define CWPTICONDIALOG_H
+#ifndef CPHOTOVIEWER_H
+#define CPHOTOVIEWER_H
 
 #include <QDialog>
-#include "ui_IWptIconDialog.h"
 
-class QToolButton;
-class QAction;
-class QListWidgetItem;
+#include "gis/wpt/CGisItemWpt.h"
 
-class CWptIconDialog : public QDialog, private Ui::IWptIconDialog
+class CPhotoViewer : public QDialog
 {
     Q_OBJECT
-    public:
-        CWptIconDialog(QToolButton * parent);
-        CWptIconDialog(QAction * parent);
-        virtual ~CWptIconDialog();
+public:
+    CPhotoViewer(QList<CGisItemWpt::image_t> &images, int idx, QWidget *parent);
+    virtual ~CPhotoViewer();
 
-    private slots:
-        void slotItemClicked(QListWidgetItem * item);
+protected:
+    void paintEvent(QPaintEvent * e);
+    void resizeEvent(QResizeEvent * e);
+    void mousePressEvent(QMouseEvent * e);
 
-    private:
-        void setupList(QObject *obj);
+private:
+    void setImageAtIdx(int i);
 
-        QToolButton * button;
-        QAction     * action;
+    QList<CGisItemWpt::image_t> images;
+    int idx;
+    QRect rectImage;
+    QRect rectClose;
+    QRect rectPrev;
+    QRect rectNext;
 
 };
 
-#endif //CWPTICONDIALOG_H
+#endif //CPHOTOVIEWER_H
 
diff --git a/src/helpers/CPositionDialog.cpp b/src/helpers/CPositionDialog.cpp
index bd6482b..2e28102 100644
--- a/src/helpers/CPositionDialog.cpp
+++ b/src/helpers/CPositionDialog.cpp
@@ -48,7 +48,6 @@ CPositionDialog::CPositionDialog(QWidget * parent, QPointF &pos)
 
 CPositionDialog::~CPositionDialog()
 {
-
 }
 
 void CPositionDialog::accept()
@@ -68,7 +67,6 @@ void CPositionDialog::accept()
     }
     else if(reCoord1.exactMatch(str))
     {
-
         bool signLat    = reCoord1.cap(1) == "S";
         int degLat      = reCoord1.cap(2).toInt();
         qreal minLat    = reCoord1.cap(3).toDouble();
@@ -101,7 +99,6 @@ void CPositionDialog::accept()
         int secLon    = reCoord4.cap(8).toInt();
 
         GPS_Math_DegMinSec_To_Deg(signLon, degLon, minLon, secLon, lon);
-
     }
     else if(reCoord5.exactMatch(str))
     {
@@ -110,8 +107,14 @@ void CPositionDialog::accept()
         lat             = reCoord5.cap(1).toDouble();
         lon             = reCoord5.cap(3).toDouble();
 
-        if(signLon) lon = -lon;
-        if(signLat) lat = -lat;
+        if(signLon)
+        {
+            lon = -lon;
+        }
+        if(signLat)
+        {
+            lat = -lat;
+        }
     }
     else
     {
@@ -122,7 +125,6 @@ void CPositionDialog::accept()
     pos.ry() = lat;
 
     QDialog::accept();
-
 }
 
 void CPositionDialog::slotEdit(const QString& str)
diff --git a/src/helpers/CPositionDialog.h b/src/helpers/CPositionDialog.h
index e0bf3a3..59e1824 100644
--- a/src/helpers/CPositionDialog.h
+++ b/src/helpers/CPositionDialog.h
@@ -19,26 +19,26 @@
 #ifndef CPOSITIONDIALOG_H
 #define CPOSITIONDIALOG_H
 
-#include <QDialog>
 #include "ui_IPositionDialog.h"
+#include <QDialog>
 
 class QPointF;
 
 class CPositionDialog : public QDialog, private Ui::IPositionDialog
 {
     Q_OBJECT
-    public:
-        CPositionDialog(QWidget * parent, QPointF &pos);
-        virtual ~CPositionDialog();
+public:
+    CPositionDialog(QWidget * parent, QPointF &pos);
+    virtual ~CPositionDialog();
 
-    public slots:
-        void accept();
+public slots:
+    void accept();
 
-    private slots:
-        void slotEdit(const QString& str);
+private slots:
+    void slotEdit(const QString& str);
 
-    private:
-        QPointF& pos;
+private:
+    QPointF& pos;
 };
 
 #endif //CPOSITIONDIALOG_H
diff --git a/src/helpers/CSelectCopyAction.cpp b/src/helpers/CSelectCopyAction.cpp
index 10a226f..1201001 100644
--- a/src/helpers/CSelectCopyAction.cpp
+++ b/src/helpers/CSelectCopyAction.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "helpers/CSelectCopyAction.h"
 #include "gis/IGisItem.h"
+#include "helpers/CSelectCopyAction.h"
 
 #include <QtWidgets>
 
@@ -41,7 +41,6 @@ CSelectCopyAction::CSelectCopyAction(const IGisItem *src, const IGisItem *tar, Q
 
 CSelectCopyAction::~CSelectCopyAction()
 {
-
 }
 
 bool CSelectCopyAction::allOthersToo()
diff --git a/src/helpers/CSelectCopyAction.h b/src/helpers/CSelectCopyAction.h
index 49847d6..7f2597e 100644
--- a/src/helpers/CSelectCopyAction.h
+++ b/src/helpers/CSelectCopyAction.h
@@ -19,34 +19,37 @@
 #ifndef CSELECTCOPYACTION_H
 #define CSELECTCOPYACTION_H
 
-#include <QDialog>
 #include "ui_ISelectCopyAction.h"
+#include <QDialog>
 
 class IGisItem;
 
 class CSelectCopyAction : public QDialog, private Ui::ISelectCopyAction
 {
     Q_OBJECT
-    public:
-        CSelectCopyAction(const IGisItem * src, const IGisItem * tar, QWidget * parent);
-        virtual ~CSelectCopyAction();
-
-        enum result_e
-        {
-            eResultNone,
-            eResultCopy,
-            eResultSkip,
-            eResultClone
-        };
-
-        result_e getResult(){return result;}
-        bool allOthersToo();
-
-    private slots:
-        void slotSelectResult();
-
-    private:
-        result_e result;
+public:
+    CSelectCopyAction(const IGisItem * src, const IGisItem * tar, QWidget * parent);
+    virtual ~CSelectCopyAction();
+
+    enum result_e
+    {
+        eResultNone,
+        eResultCopy,
+        eResultSkip,
+        eResultClone
+    };
+
+    result_e getResult()
+    {
+        return result;
+    }
+    bool allOthersToo();
+
+private slots:
+    void slotSelectResult();
+
+private:
+    result_e result;
 };
 
 #endif //CSELECTCOPYACTION_H
diff --git a/src/helpers/CSelectProjectDialog.cpp b/src/helpers/CSelectProjectDialog.cpp
index 3220dc9..2959bb4 100644
--- a/src/helpers/CSelectProjectDialog.cpp
+++ b/src/helpers/CSelectProjectDialog.cpp
@@ -16,9 +16,9 @@
 
 **********************************************************************************************/
 
-#include "helpers/CSelectProjectDialog.h"
-#include "gis/prj/IGisProject.h"
 #include "gis/CGisListWks.h"
+#include "gis/prj/IGisProject.h"
+#include "helpers/CSelectProjectDialog.h"
 #include "helpers/CSettings.h"
 
 
@@ -39,7 +39,7 @@ CSelectProjectDialog::CSelectProjectDialog(QString &key, QString &name, type_e&
             IGisProject * project = dynamic_cast<IGisProject*>(parent->topLevelItem(i));
             if(project == 0)
             {
-             continue;
+                continue;
             }
 
             QListWidgetItem * item = new QListWidgetItem(project->icon(CGisListWks::eColumnName), project->text(CGisListWks::eColumnName),listWidget);
@@ -83,7 +83,6 @@ CSelectProjectDialog::CSelectProjectDialog(QString &key, QString &name, type_e&
 
 CSelectProjectDialog::~CSelectProjectDialog()
 {
-
 }
 
 void CSelectProjectDialog::reject()
@@ -97,7 +96,6 @@ void CSelectProjectDialog::reject()
 
 void CSelectProjectDialog::slotItemClicked(QListWidgetItem * item)
 {
-
     key = item->data(Qt::UserRole).toString();
     lineEdit->setText(item->text());
     frameType->setEnabled(false);
diff --git a/src/helpers/CSelectProjectDialog.h b/src/helpers/CSelectProjectDialog.h
index 0db2d7b..3aa9c6c 100644
--- a/src/helpers/CSelectProjectDialog.h
+++ b/src/helpers/CSelectProjectDialog.h
@@ -19,40 +19,38 @@
 #ifndef CSELECTPROJECTDIALOG_H
 #define CSELECTPROJECTDIALOG_H
 
-#include <QDialog>
 #include "ui_ISelectProjectDialog.h"
+#include <QDialog>
 
 class QTreeWidget;
 
 class CSelectProjectDialog : public QDialog, private Ui::ISelectProjectDialog
 {
     Q_OBJECT
-    public:
-        enum type_e
-        {
-             eTypeNone
-            ,eTypeQms
-            ,eTypeGpx
-
-        };
-
-        CSelectProjectDialog(QString& key, QString& name, type_e& type, QTreeWidget *parent);
-        virtual ~CSelectProjectDialog();
-
-    public slots:
-        void reject();
-
-    private slots:
-        void slotItemClicked(QListWidgetItem * item);
-        void slotProjectChanged(const QString& text);
-        void slotProjectEdited(const QString& text);
-        void slotTypeChanged();
-
-    private:
-        QString& key;
-        QString& name;
-        type_e& type;
-
+public:
+    enum type_e
+    {
+        eTypeNone
+        ,eTypeQms
+        ,eTypeGpx
+    };
+
+    CSelectProjectDialog(QString& key, QString& name, type_e& type, QTreeWidget *parent);
+    virtual ~CSelectProjectDialog();
+
+public slots:
+    void reject();
+
+private slots:
+    void slotItemClicked(QListWidgetItem * item);
+    void slotProjectChanged(const QString& text);
+    void slotProjectEdited(const QString& text);
+    void slotTypeChanged();
+
+private:
+    QString& key;
+    QString& name;
+    type_e& type;
 };
 
 #endif //CSELECTPROJECTDIALOG_H
diff --git a/src/helpers/CSettings.h b/src/helpers/CSettings.h
index f34aa21..6c60ca2 100644
--- a/src/helpers/CSettings.h
+++ b/src/helpers/CSettings.h
@@ -23,28 +23,32 @@
 
 class CSettings : public QObject
 {
-
-    public:
-        CSettings()
+public:
+    CSettings()
+    {
+        if(!qlOpts->configfile.isEmpty())
         {
-            if(!qlOpts->configfile.isEmpty())
-            {
-                cfg = new QSettings(qlOpts->configfile, QSettings::IniFormat, this);
-            }
-            else
-            {
-                cfg = new QSettings(this);
-            }
+            cfg = new QSettings(qlOpts->configfile, QSettings::IniFormat, this);
         }
-        ~CSettings(){}
-
-        QSettings& get(){return *cfg;}
-
-    private:
-        QSettings  * cfg;
+        else
+        {
+            cfg = new QSettings(this);
+        }
+    }
+    ~CSettings()
+    {
+    }
+
+    QSettings& get()
+    {
+        return *cfg;
+    }
+
+private:
+    QSettings  * cfg;
 };
 
 #define SETTINGS \
-CSettings ccfg;\
-QSettings& cfg = ccfg.get()
+    CSettings ccfg; \
+    QSettings& cfg = ccfg.get()
 #endif                           //CSETTINGS_H
diff --git a/src/helpers/CTextEditWidget.cpp b/src/helpers/CTextEditWidget.cpp
index 208a8fb..e4ee1bc 100644
--- a/src/helpers/CTextEditWidget.cpp
+++ b/src/helpers/CTextEditWidget.cpp
@@ -1,50 +1,50 @@
 /****************************************************************************
- **
- ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
- ** Contact: http://www.qt-project.org/legal
- **
- ** This file is part of the demonstration applications of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
- ** Commercial License Usage
- ** Licensees holding valid commercial Qt licenses may use this file in
- ** accordance with the commercial license agreement provided with the
- ** Software or, alternatively, in accordance with the terms contained in
- ** a written agreement between you and Digia.  For licensing terms and
- ** conditions see http://qt.digia.com/licensing.  For further information
- ** use the contact form at http://qt.digia.com/contact-us.
- **
- ** GNU Lesser General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU Lesser
- ** General Public License version 2.1 as published by the Free Software
- ** Foundation and appearing in the file LICENSE.LGPL included in the
- ** packaging of this file.  Please review the following information to
- ** ensure the GNU Lesser General Public License version 2.1 requirements
- ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- **
- ** In addition, as a special exception, Digia gives you certain additional
- ** rights.  These rights are described in the Digia Qt LGPL Exception
- ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU
- ** General Public License version 3.0 as published by the Free Software
- ** Foundation and appearing in the file LICENSE.GPL included in the
- ** packaging of this file.  Please review the following information to
- ** ensure the GNU General Public License version 3.0 requirements will be
- ** met: http://www.gnu.org/copyleft/gpl.html.
- **
- **
- ** $QT_END_LICENSE$
- **
- ****************************************************************************/
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.  For licensing terms and
+** conditions see http://qt.digia.com/licensing.  For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights.  These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
 
 #include "CTextEditWidget.h"
 
 #include <QtWidgets>
 
 CTextEditWidget::CTextEditWidget(QWidget * parent)
-: QDialog(parent)
+    : QDialog(parent)
 {
     setupUi(this);
 
@@ -83,20 +83,6 @@ CTextEditWidget::CTextEditWidget(QWidget * parent)
     comboStyle->addItem("Ordered List (Alpha upper)");
     connect(comboStyle, SIGNAL(activated(int)), this, SLOT(textStyle(int)));
 
-    connect(comboFont, SIGNAL(activated(const QString &)), this, SLOT(textFamily(const QString &)));
-
-    comboSize->setObjectName("comboSize");
-    comboSize->setEditable(true);
-
-    QFontDatabase db;
-    foreach(int size, db.standardSizes())
-    {
-        comboSize->addItem(QString::number(size));
-    }
-
-    connect(comboSize, SIGNAL(activated(const QString &)), this, SLOT(textSize(const QString &)));
-    comboSize->setCurrentIndex(comboSize->findText(QString::number(QApplication::font().pointSize())));
-
     connect(textEdit, SIGNAL(currentCharFormatChanged(const QTextCharFormat &)), this, SLOT(currentCharFormatChanged(const QTextCharFormat &)));
     connect(textEdit, SIGNAL(cursorPositionChanged()), this, SLOT(cursorPositionChanged()));
 
@@ -133,7 +119,6 @@ CTextEditWidget::CTextEditWidget(QWidget * parent)
     connect(textEdit, SIGNAL(copyAvailable(bool)), actionCopy, SLOT(setEnabled(bool)));
 
     connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(clipboardDataChanged()));
-
 }
 
 
@@ -148,7 +133,10 @@ QString CTextEditWidget::getHtml()
     if(re.exactMatch(str))
     {
         str = re.cap(1);
-        str = str.replace("body>","div>").replace("<body","<div");
+
+        QRegExp re1("<body.*>");
+        re1.setMinimal(true);
+        str = str.replace("body>","div>").replace(re1,"<div>");
     }
 
     return str;
@@ -181,31 +169,24 @@ void CTextEditWidget::textItalic()
 void CTextEditWidget::textAlign(QAction *a)
 {
     if (a == actionAlignLeft)
+    {
         textEdit->setAlignment(Qt::AlignLeft);
+    }
     else if (a == actionAlignCenter)
+    {
         textEdit->setAlignment(Qt::AlignHCenter);
+    }
     else if (a == actionAlignRight)
+    {
         textEdit->setAlignment(Qt::AlignRight);
+    }
     else if (a == actionAlignJustify)
+    {
         textEdit->setAlignment(Qt::AlignJustify);
+    }
 }
 
 
-void CTextEditWidget::textFamily(const QString &f)
-{
-    QTextCharFormat fmt;
-    fmt.setFontFamily(f);
-    mergeFormatOnWordOrSelection(fmt);
-}
-
-
-void CTextEditWidget::textSize(const QString &p)
-{
-    QTextCharFormat fmt;
-    fmt.setFontPointSize(p.toFloat());
-    mergeFormatOnWordOrSelection(fmt);
-}
-
 
 void CTextEditWidget::textStyle(int styleIndex)
 {
@@ -217,25 +198,30 @@ void CTextEditWidget::textStyle(int styleIndex)
 
         switch (styleIndex)
         {
-            default:
-            case 1:
-                style = QTextListFormat::ListDisc;
-                break;
-            case 2:
-                style = QTextListFormat::ListCircle;
-                break;
-            case 3:
-                style = QTextListFormat::ListSquare;
-                break;
-            case 4:
-                style = QTextListFormat::ListDecimal;
-                break;
-            case 5:
-                style = QTextListFormat::ListLowerAlpha;
-                break;
-            case 6:
-                style = QTextListFormat::ListUpperAlpha;
-                break;
+        default:
+        case 1:
+            style = QTextListFormat::ListDisc;
+            break;
+
+        case 2:
+            style = QTextListFormat::ListCircle;
+            break;
+
+        case 3:
+            style = QTextListFormat::ListSquare;
+            break;
+
+        case 4:
+            style = QTextListFormat::ListDecimal;
+            break;
+
+        case 5:
+            style = QTextListFormat::ListLowerAlpha;
+            break;
+
+        case 6:
+            style = QTextListFormat::ListUpperAlpha;
+            break;
         }
 
         cursor.beginEditBlock();
@@ -275,7 +261,9 @@ void CTextEditWidget::textColor()
 {
     QColor col = QColorDialog::getColor(textEdit->textColor(), this);
     if (!col.isValid())
+    {
         return;
+    }
     QTextCharFormat fmt;
     fmt.setForeground(col);
     mergeFormatOnWordOrSelection(fmt);
@@ -287,7 +275,9 @@ void CTextEditWidget::mergeFormatOnWordOrSelection(const QTextCharFormat &format
 {
     QTextCursor cursor = textEdit->textCursor();
     if (!cursor.hasSelection())
+    {
         cursor.select(QTextCursor::WordUnderCursor);
+    }
     cursor.mergeCharFormat(format);
     textEdit->mergeCurrentCharFormat(format);
 }
@@ -295,8 +285,6 @@ void CTextEditWidget::mergeFormatOnWordOrSelection(const QTextCharFormat &format
 
 void CTextEditWidget::fontChanged(const QFont &f)
 {
-    comboFont->setCurrentIndex(comboFont->findText(QFontInfo(f).family()));
-    comboSize->setCurrentIndex(comboSize->findText(QString::number(f.pointSize())));
     actionTextBold->setChecked(f.bold());
     actionTextItalic->setChecked(f.italic());
     actionTextUnderline->setChecked(f.underline());
diff --git a/src/helpers/CTextEditWidget.h b/src/helpers/CTextEditWidget.h
index dc12bf0..41d956c 100644
--- a/src/helpers/CTextEditWidget.h
+++ b/src/helpers/CTextEditWidget.h
@@ -1,85 +1,85 @@
 /****************************************************************************
- **
- ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
- ** Contact: http://www.qt-project.org/legal
- **
- ** This file is part of the demonstration applications of the Qt Toolkit.
- **
- ** $QT_BEGIN_LICENSE:LGPL$
- ** Commercial License Usage
- ** Licensees holding valid commercial Qt licenses may use this file in
- ** accordance with the commercial license agreement provided with the
- ** Software or, alternatively, in accordance with the terms contained in
- ** a written agreement between you and Digia.  For licensing terms and
- ** conditions see http://qt.digia.com/licensing.  For further information
- ** use the contact form at http://qt.digia.com/contact-us.
- **
- ** GNU Lesser General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU Lesser
- ** General Public License version 2.1 as published by the Free Software
- ** Foundation and appearing in the file LICENSE.LGPL included in the
- ** packaging of this file.  Please review the following information to
- ** ensure the GNU Lesser General Public License version 2.1 requirements
- ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
- **
- ** In addition, as a special exception, Digia gives you certain additional
- ** rights.  These rights are described in the Digia Qt LGPL Exception
- ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
- **
- ** GNU General Public License Usage
- ** Alternatively, this file may be used under the terms of the GNU
- ** General Public License version 3.0 as published by the Free Software
- ** Foundation and appearing in the file LICENSE.GPL included in the
- ** packaging of this file.  Please review the following information to
- ** ensure the GNU General Public License version 3.0 requirements will be
- ** met: http://www.gnu.org/copyleft/gpl.html.
- **
- **
- ** $QT_END_LICENSE$
- **
- ****************************************************************************/
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the demonstration applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.  For licensing terms and
+** conditions see http://qt.digia.com/licensing.  For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights.  These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
 
 #ifndef CTEXTEDITWIDGET_H
 #define CTEXTEDITWIDGET_H
 
+#include "ui_ITextEditWidget.h"
 #include <QDialog>
-#include <QTextCharFormat>
-#include <QTextBlockFormat>
 #include <QPointer>
-#include "ui_ITextEditWidget.h"
+#include <QTextBlockFormat>
+#include <QTextCharFormat>
 
 
 class CTextEditWidget : public QDialog, private Ui::ITextEditWidget
 {
     Q_OBJECT
-    public:
-        CTextEditWidget(QWidget * parent);
-        virtual ~CTextEditWidget();
-
-        QString getHtml();
-        void  setHtml(const QString& text){textEdit->clear(); textEdit->insertHtml(text);}
+public:
+    CTextEditWidget(QWidget * parent);
+    virtual ~CTextEditWidget();
 
-    private slots:
-        void textBold();
-        void textUnderline();
-        void textItalic();
-        void textFamily(const QString &f);
-        void textSize(const QString &p);
-        void textStyle(int styleIndex);
-        void textColor();
-        void textAlign(QAction *a);
+    QString getHtml();
+    void  setHtml(const QString& text)
+    {
+        textEdit->clear(); textEdit->insertHtml(text);
+    }
 
-        void currentCharFormatChanged(const QTextCharFormat &format);
-        void cursorPositionChanged();
-        void clipboardDataChanged();
+private slots:
+    void textBold();
+    void textUnderline();
+    void textItalic();
+    void textStyle(int styleIndex);
+    void textColor();
+    void textAlign(QAction *a);
 
-    private:
-        void mergeFormatOnWordOrSelection(const QTextCharFormat &format);
-        void fontChanged(const QFont &f);
-        void colorChanged(const QColor &c);
-        void alignmentChanged(Qt::Alignment a);
+    void currentCharFormatChanged(const QTextCharFormat &format);
+    void cursorPositionChanged();
+    void clipboardDataChanged();
 
-        QAction * actionTextColor;
+private:
+    void mergeFormatOnWordOrSelection(const QTextCharFormat &format);
+    void fontChanged(const QFont &f);
+    void colorChanged(const QColor &c);
+    void alignmentChanged(Qt::Alignment a);
 
+    QAction * actionTextColor;
 };
 #endif                           //CTEXTEDITWIDGET_H
diff --git a/src/helpers/CWptIconDialog.cpp b/src/helpers/CWptIconDialog.cpp
index 3c90aa2..76df6a3 100644
--- a/src/helpers/CWptIconDialog.cpp
+++ b/src/helpers/CWptIconDialog.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "helpers/CWptIconDialog.h"
 #include "gis/WptIcons.h"
+#include "helpers/CWptIconDialog.h"
 
 #include <QtWidgets>
 
@@ -96,7 +96,6 @@ void CWptIconDialog::setupList(QObject * obj)
         {
             currentItem = item;
         }
-
     }
 
     if(currentItem)
@@ -106,12 +105,10 @@ void CWptIconDialog::setupList(QObject * obj)
     }
 
     connect(listWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(slotItemClicked(QListWidgetItem*)));
-
 }
 
 CWptIconDialog::~CWptIconDialog()
 {
-
 }
 
 void CWptIconDialog::slotItemClicked(QListWidgetItem * item)
diff --git a/src/helpers/CWptIconDialog.h b/src/helpers/CWptIconDialog.h
index 00eeb77..7741313 100644
--- a/src/helpers/CWptIconDialog.h
+++ b/src/helpers/CWptIconDialog.h
@@ -19,8 +19,8 @@
 #ifndef CWPTICONDIALOG_H
 #define CWPTICONDIALOG_H
 
-#include <QDialog>
 #include "ui_IWptIconDialog.h"
+#include <QDialog>
 
 class QToolButton;
 class QAction;
@@ -29,20 +29,19 @@ class QListWidgetItem;
 class CWptIconDialog : public QDialog, private Ui::IWptIconDialog
 {
     Q_OBJECT
-    public:
-        CWptIconDialog(QToolButton * parent);
-        CWptIconDialog(QAction * parent);
-        virtual ~CWptIconDialog();
-
-    private slots:
-        void slotItemClicked(QListWidgetItem * item);
+public:
+    CWptIconDialog(QToolButton * parent);
+    CWptIconDialog(QAction * parent);
+    virtual ~CWptIconDialog();
 
-    private:
-        void setupList(QObject *obj);
+private slots:
+    void slotItemClicked(QListWidgetItem * item);
 
-        QToolButton * button;
-        QAction     * action;
+private:
+    void setupList(QObject *obj);
 
+    QToolButton * button;
+    QAction     * action;
 };
 
 #endif //CWPTICONDIALOG_H
diff --git a/src/helpers/IPhotoAlbum.ui b/src/helpers/IPhotoAlbum.ui
new file mode 100644
index 0000000..af73d86
--- /dev/null
+++ b/src/helpers/IPhotoAlbum.ui
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>IPhotoAlbum</class>
+ <widget class="QWidget" name="IPhotoAlbum">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>150</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout">
+   <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="toolLeft">
+     <property name="enabled">
+      <bool>false</bool>
+     </property>
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="icon">
+      <iconset resource="../resources.qrc">
+       <normaloff>:/icons/32x32/Left.png</normaloff>:/icons/32x32/Left.png</iconset>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string/>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QToolButton" name="toolRight">
+     <property name="enabled">
+      <bool>false</bool>
+     </property>
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Fixed" vsizetype="Expanding">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text">
+      <string>...</string>
+     </property>
+     <property name="icon">
+      <iconset resource="../resources.qrc">
+       <normaloff>:/icons/32x32/Right.png</normaloff>:/icons/32x32/Right.png</iconset>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="../resources.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/src/helpers/ISelectCopyAction.ui b/src/helpers/ISelectCopyAction.ui
index 4f65015..d57a0f7 100644
--- a/src/helpers/ISelectCopyAction.ui
+++ b/src/helpers/ISelectCopyAction.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>446</width>
-    <height>285</height>
+    <width>471</width>
+    <height>300</height>
    </rect>
   </property>
   <property name="windowTitle">
diff --git a/src/helpers/ITextEditWidget.ui b/src/helpers/ITextEditWidget.ui
index 9a9a703..2aa73f5 100644
--- a/src/helpers/ITextEditWidget.ui
+++ b/src/helpers/ITextEditWidget.ui
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>396</width>
+    <width>427</width>
     <height>341</height>
    </rect>
   </property>
@@ -234,14 +234,7 @@
     </layout>
    </item>
    <item>
-    <layout class="QHBoxLayout" name="horizontalLayout">
-     <item>
-      <widget class="QFontComboBox" name="comboFont"/>
-     </item>
-     <item>
-      <widget class="QComboBox" name="comboSize"/>
-     </item>
-    </layout>
+    <layout class="QHBoxLayout" name="horizontalLayout"/>
    </item>
    <item>
     <widget class="QTextEdit" name="textEdit"/>
diff --git a/src/helpers/Platform.h b/src/helpers/Platform.h
index 9308b95..53fecd1 100644
--- a/src/helpers/Platform.h
+++ b/src/helpers/Platform.h
@@ -102,14 +102,14 @@
 #elif WIN32
 #include <windows.h>
 
-typedef __int8  int8_t;
+typedef __int8 int8_t;
 typedef __int16 int16_t;
 typedef __int32 int32_t;
 typedef __int64 int64_t;
-typedef unsigned __int8     uint8_t;
-typedef unsigned __int16    uint16_t;
-typedef unsigned __int32    uint32_t;
-typedef unsigned __int64    uint64_t;
+typedef unsigned __int8 uint8_t;
+typedef unsigned __int16 uint16_t;
+typedef unsigned __int32 uint32_t;
+typedef unsigned __int64 uint64_t;
 
 #define isnan(x) _isnan(x)
 
@@ -142,24 +142,24 @@ __gar_endian_uint16_t(uint16_t x)
 static inline uint32_t
 __gar_endian_uint32_t(uint32_t x)
 {
-    return (((x & 0xff000000u) >> 24) |
-        ((x & 0x00ff0000u) >>  8) |
-        ((x & 0x0000ff00u) <<  8) |
-        ((x & 0x000000ffu) << 24));
+    return ((x & 0xff000000u) >> 24) |
+           ((x & 0x00ff0000u) >>  8) |
+           ((x & 0x0000ff00u) <<  8) |
+           ((x & 0x000000ffu) << 24);
 }
 
 
 static inline uint64_t
 __gar_endian_uint64_t(uint64_t x)
 {
-    return (((x & 0xff00000000000000ull) >> 56) |
-        ((x & 0x00ff000000000000ull) >> 40) |
-        ((x & 0x0000ff0000000000ull) >> 24) |
-        ((x & 0x000000ff00000000ull) >>  8) |
-        ((x & 0x00000000ff000000ull) <<  8) |
-        ((x & 0x0000000000ff0000ull) << 24) |
-        ((x & 0x000000000000ff00ull) << 40) |
-        ((x & 0x00000000000000ffull) << 56));
+    return ((x & 0xff00000000000000ull) >> 56) |
+           ((x & 0x00ff000000000000ull) >> 40) |
+           ((x & 0x0000ff0000000000ull) >> 24) |
+           ((x & 0x000000ff00000000ull) >>  8) |
+           ((x & 0x00000000ff000000ull) <<  8) |
+           ((x & 0x0000000000ff0000ull) << 24) |
+           ((x & 0x000000000000ff00ull) << 40) |
+           ((x & 0x00000000000000ffull) << 56);
 }
 
 
@@ -173,24 +173,24 @@ __gar_endian_int16_t(int16_t x)
 static inline int32_t
 __gar_endian_int32_t(int32_t x)
 {
-    return (((x & 0xff000000u) >> 24) |
-        ((x & 0x00ff0000u) >>  8) |
-        ((x & 0x0000ff00u) <<  8) |
-        ((x & 0x000000ffu) << 24));
+    return ((x & 0xff000000u) >> 24) |
+           ((x & 0x00ff0000u) >>  8) |
+           ((x & 0x0000ff00u) <<  8) |
+           ((x & 0x000000ffu) << 24);
 }
 
 
 static inline int64_t
 __gar_endian_int64_t(int64_t x)
 {
-    return (((x & 0xff00000000000000ull) >> 56) |
-        ((x & 0x00ff000000000000ull) >> 40) |
-        ((x & 0x0000ff0000000000ull) >> 24) |
-        ((x & 0x000000ff00000000ull) >>  8) |
-        ((x & 0x00000000ff000000ull) <<  8) |
-        ((x & 0x0000000000ff0000ull) << 24) |
-        ((x & 0x000000000000ff00ull) << 40) |
-        ((x & 0x00000000000000ffull) << 56));
+    return ((x & 0xff00000000000000ull) >> 56) |
+           ((x & 0x00ff000000000000ull) >> 40) |
+           ((x & 0x0000ff0000000000ull) >> 24) |
+           ((x & 0x000000ff00000000ull) >>  8) |
+           ((x & 0x00000000ff000000ull) <<  8) |
+           ((x & 0x0000000000ff0000ull) << 24) |
+           ((x & 0x000000000000ff00ull) << 40) |
+           ((x & 0x00000000000000ffull) << 56);
 }
 
 
@@ -336,8 +336,8 @@ __gar_ptr_load_uint32_t(const uint8_t *p)
 static inline uint64_t
 __gar_ptr_load_uint64_t(const uint8_t *p)
 {
-    return ((uint64_t)__gar_ptr_load_uint32_t(p) |
-        ((uint64_t)__gar_ptr_load_uint32_t(p + 4) << 32));
+    return (uint64_t)__gar_ptr_load_uint32_t(p) |
+           ((uint64_t)__gar_ptr_load_uint32_t(p + 4) << 32);
 }
 
 
@@ -387,8 +387,8 @@ __gar_ptr_load_int32_t(const uint8_t *p)
 static inline int64_t
 __gar_ptr_load_int64_t(const uint8_t *p)
 {
-    return ((int64_t)__gar_ptr_load_uint32_t(p) |
-        ((int64_t)__gar_ptr_load_int32_t(p + 4) << 32));
+    return (int64_t)__gar_ptr_load_uint32_t(p) |
+           ((int64_t)__gar_ptr_load_int32_t(p + 4) << 32);
 }
 
 
diff --git a/src/icons/32x32/AddImage.png b/src/icons/32x32/AddImage.png
new file mode 100644
index 0000000..ea1d62e
Binary files /dev/null and b/src/icons/32x32/AddImage.png differ
diff --git a/src/icons/32x32/DelImage.png b/src/icons/32x32/DelImage.png
new file mode 100644
index 0000000..4442cfe
Binary files /dev/null and b/src/icons/32x32/DelImage.png differ
diff --git a/src/icons/32x32/Image.png b/src/icons/32x32/Image.png
new file mode 100644
index 0000000..3a69b48
Binary files /dev/null and b/src/icons/32x32/Image.png differ
diff --git a/src/icons/32x32/Print.png b/src/icons/32x32/Print.png
new file mode 100644
index 0000000..a4af9c5
Binary files /dev/null and b/src/icons/32x32/Print.png differ
diff --git a/src/icons/48x48/AddImage.png b/src/icons/48x48/AddImage.png
new file mode 100644
index 0000000..68b12b4
Binary files /dev/null and b/src/icons/48x48/AddImage.png differ
diff --git a/src/icons/48x48/DelImage.png b/src/icons/48x48/DelImage.png
new file mode 100644
index 0000000..dd6504e
Binary files /dev/null and b/src/icons/48x48/DelImage.png differ
diff --git a/src/icons/48x48/Image.png b/src/icons/48x48/Image.png
new file mode 100644
index 0000000..745eb08
Binary files /dev/null and b/src/icons/48x48/Image.png differ
diff --git a/src/icons/48x48/Print.png b/src/icons/48x48/Print.png
new file mode 100644
index 0000000..662e0d5
Binary files /dev/null and b/src/icons/48x48/Print.png differ
diff --git a/src/icons/AddImage.svg b/src/icons/AddImage.svg
new file mode 100644
index 0000000..c0e5ad1
--- /dev/null
+++ b/src/icons/AddImage.svg
@@ -0,0 +1,75 @@
+<?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"
+   version="1.1"
+   width="64"
+   height="64"
+   id="svg3513">
+  <defs
+     id="defs3515" />
+  <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">
+    <path
+       d="m 5,39 55,0"
+       id="path3031"
+       style="fill:none;stroke:#000080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="m 40.518979,18.390611 5.107143,4e-6 0,5.09877 4.373878,0 0,-5.098774 5.107138,0 0,-4.390611 L 50,14 l -5e-6,-5.098774 -4.373873,0 -5e-6,5.098778 -5.107138,-4e-6 0,4.390611 z"
+       id="rect3117-7"
+       style="fill:#008000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.41184056;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    <path
+       d="M 24.153011,13.037711 A 7.5,7.5 0 1 1 23.942394,12.660006"
+       id="path3004"
+       style="fill:#ffcc00;fill-opacity:1;fill-rule:evenodd;stroke:#ffcc00;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <path
+       d="M 39.435341,26.691808 A 5,5 0 1 1 39.29493,26.440004"
+       transform="translate(2.4999995,0)"
+       id="path3006"
+       style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <path
+       d="m 35,35 0,2 -6,0 -6,13 4,0 4,-8 0,17 13,0 0,-17 4,8 4,0 -6,-13 -6,0 0,-2 z"
+       id="path3027"
+       style="fill:#000080;stroke:#000080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <rect
+       width="55"
+       height="55"
+       x="5"
+       y="4"
+       id="rect3029"
+       style="fill:none;stroke:#000080;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+    <path
+       d="m 28,17 10,0"
+       id="path3033"
+       style="fill:none;stroke:#ffd42a;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="m 25,24 5,6"
+       id="path3035"
+       style="fill:none;stroke:#ffd42a;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="m 17,28 0,6"
+       id="path3037"
+       style="fill:none;stroke:#ffd42a;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    <path
+       d="M 10,24 6,29"
+       id="path3039"
+       style="fill:none;stroke:#ffd42a;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+  </g>
+</svg>
diff --git a/src/icons/DelImage.svg b/src/icons/DelImage.svg
new file mode 100644
index 0000000..8bbb498
--- /dev/null
+++ b/src/icons/DelImage.svg
@@ -0,0 +1,114 @@
+<?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.48.5 r10040"
+   sodipodi:docname="DelImage.svg">
+  <defs
+     id="defs3515" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="7.7781746"
+     inkscape:cx="-5.6367491"
+     inkscape:cy="30.559758"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1008"
+     inkscape:window-x="-4"
+     inkscape:window-y="-1"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3002" />
+  </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">
+    <rect
+       style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect3136"
+       width="15"
+       height="5"
+       x="42"
+       y="15" />
+    <path
+       style="fill:none;stroke:#000080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3031"
+       d="m 6.057606,40.339994 55,0"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffcc00;fill-opacity:1;fill-rule:evenodd;stroke:#ffcc00;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path3004"
+       d="M 25.210617,14.377705 A 7.5,7.5 0 1 1 25,14"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path3006"
+       d="M 42.992947,28.031802 A 5,5 0 1 1 42.852536,27.779998"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#000080;stroke:#000080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3027"
+       d="m 36.057606,36.339994 0,2 -6,0 -6,13 4,0 4,-8 0,17 13,0 0,-17 4,8 4,0 -6,-13 -6,0 0,-2 z"
+       inkscape:connector-curvature="0" />
+    <rect
+       style="fill:none;stroke:#000080;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect3029"
+       y="5.339994"
+       x="6.0576062"
+       height="55"
+       width="55" />
+    <path
+       style="fill:none;stroke:#ffd42a;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3033"
+       d="m 29.057606,18.339994 10,0"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#ffd42a;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3035"
+       d="m 26.057606,25.339994 5,6"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#ffd42a;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3037"
+       d="m 18.057606,29.339994 0,6"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#ffd42a;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="path3039"
+       d="m 11.057606,25.339994 -4,5"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/src/icons/Image.svg b/src/icons/Image.svg
new file mode 100644
index 0000000..1394d01
--- /dev/null
+++ b/src/icons/Image.svg
@@ -0,0 +1,99 @@
+<?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"
+   version="1.1"
+   width="64"
+   height="64"
+   id="svg3513"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="Image.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="641"
+     inkscape:window-height="480"
+     id="namedview16"
+     showgrid="false"
+     inkscape:zoom="3.6875"
+     inkscape:cx="32"
+     inkscape:cy="32"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg3513" />
+  <defs
+     id="defs3515" />
+  <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>
+  <path
+     inkscape:connector-curvature="0"
+     style="fill:none;stroke:#000080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3031"
+     d="m 5,39 55,0" />
+  <path
+     inkscape:connector-curvature="0"
+     style="fill:#ffcc00;fill-opacity:1;fill-rule:evenodd;stroke:#ffcc00;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+     id="path3004"
+     d="M 24.153011,13.037711 A 7.5,7.5 0 1 1 23.942394,12.660006" />
+  <path
+     inkscape:connector-curvature="0"
+     style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+     id="path3006"
+     d="M 41.935341,26.691808 A 5,5 0 1 1 41.79493,26.440004" />
+  <path
+     inkscape:connector-curvature="0"
+     style="fill:#000080;stroke:#000080;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3027"
+     d="m 35,35 0,2 -6,0 -6,13 4,0 4,-8 0,17 13,0 0,-17 4,8 4,0 -6,-13 -6,0 0,-2 z" />
+  <rect
+     style="fill:none;stroke:#000080;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+     id="rect3029"
+     y="4"
+     x="5"
+     height="55"
+     width="55" />
+  <path
+     inkscape:connector-curvature="0"
+     style="fill:none;stroke:#ffd42a;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3033"
+     d="m 28,17 10,0" />
+  <path
+     inkscape:connector-curvature="0"
+     style="fill:none;stroke:#ffd42a;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3035"
+     d="m 25,24 5,6" />
+  <path
+     inkscape:connector-curvature="0"
+     style="fill:none;stroke:#ffd42a;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3037"
+     d="m 17,28 0,6" />
+  <path
+     inkscape:connector-curvature="0"
+     style="fill:none;stroke:#ffd42a;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+     id="path3039"
+     d="M 10,24 6,29" />
+</svg>
diff --git a/src/icons/Print.svg b/src/icons/Print.svg
new file mode 100644
index 0000000..7700a1f
--- /dev/null
+++ b/src/icons/Print.svg
@@ -0,0 +1,102 @@
+<?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.48.5 r10040"
+   sodipodi:docname="Print.png">
+  <defs
+     id="defs3515" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.60451"
+     inkscape:cx="24.110995"
+     inkscape:cy="21.097648"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="992"
+     inkscape:window-x="-4"
+     inkscape:window-y="-1"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2983"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </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">
+    <rect
+       style="fill:none;stroke:#000080;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect3007"
+       width="55"
+       height="20"
+       x="5"
+       y="24" />
+    <rect
+       style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:2.37170815;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect3017"
+       width="35"
+       height="9"
+       x="15"
+       y="30" />
+    <path
+       style="fill:#cccccc;stroke:#000080;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="M 15,54 50,54 45,33 20,33"
+       id="path3013"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc" />
+    <path
+       style="fill:none;stroke:#000080;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="M 20,33 15,54"
+       id="path3011"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:#afc6e9;stroke:#000080;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 5,24 5,-5 45,0 5,5"
+       id="path3787"
+       inkscape:connector-curvature="0" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect3015"
+       width="26"
+       height="18"
+       x="20"
+       y="4" />
+  </g>
+</svg>
diff --git a/src/locale/qmapshack_cs.ts b/src/locale/qmapshack_cs.ts
index 54dcbd0..35c2ef8 100644
--- a/src/locale/qmapshack_cs.ts
+++ b/src/locale/qmapshack_cs.ts
@@ -4,20 +4,24 @@
 <context>
     <name>CCanvas</name>
     <message>
-        <location filename="../canvas/CCanvas.cpp" line="59"/>
         <source>Workspace %1</source>
-        <translation>Pracovní oblast %1</translation>
+        <translation type="obsolete">Pohled %1</translation>
+    </message>
+    <message>
+        <location filename="../canvas/CCanvas.cpp" line="59"/>
+        <source>View %1</source>
+        <translation>Pohled %1</translation>
     </message>
 </context>
 <context>
     <name>CDemList</name>
     <message>
-        <location filename="../dem/CDemList.cpp" line="143"/>
+        <location filename="../dem/CDemList.cpp" line="145"/>
         <source>Deactivate</source>
         <translation>Vypnout</translation>
     </message>
     <message>
-        <location filename="../dem/CDemList.cpp" line="143"/>
+        <location filename="../dem/CDemList.cpp" line="145"/>
         <source>Activate</source>
         <translation>Zapnout</translation>
     </message>
@@ -30,7 +34,7 @@
         <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>
     </message>
     <message>
-        <location filename="../dem/CDemPathSetup.cpp" line="55"/>
+        <location filename="../dem/CDemPathSetup.cpp" line="54"/>
         <source>Select DEM file path...</source>
         <translation>Vybrat cestu k souboru DEM...</translation>
     </message>
@@ -38,9 +42,9 @@
 <context>
     <name>CDemPropSetup</name>
     <message>
-        <location filename="../dem/CDemPropSetup.cpp" line="187"/>
+        <location filename="../dem/CDemPropSetup.cpp" line="183"/>
         <source><b>Grade %1</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Stupeň %1</b></translation>
     </message>
 </context>
 <context>
@@ -79,7 +83,7 @@
     </message>
     <message>
         <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="58"/>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="101"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="102"/>
         <source>???</source>
         <translation>???</translation>
     </message>
@@ -87,12 +91,12 @@
 <context>
     <name>CDetailsOvlArea</name>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="131"/>
+        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
         <source>Edit name...</source>
         <translation>Upravit název...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="131"/>
+        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
         <source>Enter new waypoint name.</source>
         <translation>Zadat  nový název cestovního bodu.</translation>
     </message>
@@ -116,61 +120,107 @@
 <context>
     <name>CDetailsPrj</name>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="56"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="84"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="165"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="380"/>
         <source>none</source>
-        <translation type="unfinished">žádné</translation>
+        <translation>žádné</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="229"/>
+        <source>Build diary...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="229"/>
+        <source>Abort</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="234"/>
+        <source><h2>Waypoints</h2></source>
+        <translation><h2>Cestovní body</h2></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="241"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="272"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="337"/>
+        <source>Info</source>
+        <translation>Informace</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="70"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="242"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="273"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="338"/>
+        <source>Comment</source>
+        <translation>Poznámka</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="265"/>
+        <source><h2>Tracks</h2></source>
+        <translation><h2>Stopy</h2></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="330"/>
+        <source><h2>Areas</h2></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="366"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="393"/>
         <source>Edit name...</source>
-        <translation type="unfinished">Upravit název...</translation>
+        <translation>Upravit název...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="70"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="366"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="393"/>
         <source>Enter new project name.</source>
-        <translation type="unfinished"></translation>
+        <translation>Zadejte název projektu.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="79"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="375"/>
         <source>Edit keywords...</source>
-        <translation type="unfinished"></translation>
+        <translation>Upravit klíčová slova...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="79"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="375"/>
         <source>Enter keywords.</source>
-        <translation type="unfinished"></translation>
+        <translation>Zadejte klíčová slova.</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="509"/>
+        <source>Print Diary</source>
+        <translation>Tisk deníku</translation>
     </message>
 </context>
 <context>
     <name>CDetailsTrk</name>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="56"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="57"/>
         <source>Reduce visible track points</source>
-        <translation type="unfinished"></translation>
+        <translation>Omezit počet viditelných bodů stopy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="66"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="70"/>
         <source>Change elevation of track points</source>
-        <translation type="unfinished"></translation>
+        <translation>Změnit informace o výšce bodů stopy.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="79"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="83"/>
         <source>Change timestamp of track points</source>
-        <translation type="unfinished"></translation>
+        <translation>Změnit časové razítko bodů stopy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="92"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="96"/>
         <source>Cut track into pieces</source>
-        <translation type="unfinished"></translation>
+        <translation>Rozkrájet stopu na kusy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="206"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="215"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="218"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="224"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="243"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="245"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="210"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="219"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="222"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="228"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="247"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="249"/>
         <source>%1 %2</source>
         <translation>%1 %2</translation>
     </message>
@@ -210,12 +260,12 @@
         <translation type="obsolete"><p>--- žádný popis ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="130"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="151"/>
         <source>Edit name...</source>
         <translation>Upravit název...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="130"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="151"/>
         <source>Enter new waypoint name.</source>
         <translation>Zadat nový cestovní bod.</translation>
     </message>
@@ -224,7 +274,7 @@
         <translation type="obsolete">Zadat novou výšku.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="149"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="170"/>
         <source>Enter new proximity range.</source>
         <translation>Zadat nový rozsah blízkosti.</translation>
     </message>
@@ -232,7 +282,7 @@
 <context>
     <name>CElevationDialog</name>
     <message>
-        <location filename="../helpers/CElevationDialog.cpp" line="85"/>
+        <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>
     </message>
@@ -240,71 +290,71 @@
 <context>
     <name>CGisListDB</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="74"/>
+        <location filename="../gis/CGisListDB.cpp" line="73"/>
         <source>Add Database</source>
-        <translation type="unfinished"></translation>
+        <translation>Přidat databázi</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="77"/>
+        <location filename="../gis/CGisListDB.cpp" line="76"/>
         <source>Add Folder</source>
-        <translation type="unfinished"></translation>
+        <translation>Přidat složku</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="78"/>
+        <location filename="../gis/CGisListDB.cpp" line="77"/>
         <source>Delete Folder</source>
-        <translation type="unfinished"></translation>
+        <translation>Smazat složku</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="81"/>
-        <location filename="../gis/CGisListDB.cpp" line="91"/>
+        <location filename="../gis/CGisListDB.cpp" line="80"/>
+        <location filename="../gis/CGisListDB.cpp" line="90"/>
         <source>Delete Item</source>
-        <translation type="unfinished"></translation>
+        <translation>Smazat prvek</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="85"/>
+        <location filename="../gis/CGisListDB.cpp" line="84"/>
         <source>Remove Database</source>
-        <translation type="unfinished"></translation>
+        <translation>Odstranit databázi</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="88"/>
+        <location filename="../gis/CGisListDB.cpp" line="87"/>
         <source>Empty</source>
-        <translation type="unfinished"></translation>
+        <translation>Prázdný</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="254"/>
+        <location filename="../gis/CGisListDB.cpp" line="251"/>
         <source>Remove database...</source>
-        <translation type="unfinished"></translation>
+        <translation>Odstranit databázi...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="254"/>
+        <location filename="../gis/CGisListDB.cpp" line="251"/>
         <source>Do you realy want to remove '%1' from the list?</source>
-        <translation type="unfinished"></translation>
+        <translation>Opravdu chcete '%1' odstranit ze seznamu?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="295"/>
+        <location filename="../gis/CGisListDB.cpp" line="292"/>
         <source>Delete database folder...</source>
-        <translation type="unfinished"></translation>
+        <translation>Smazat složku s databází...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="295"/>
+        <location filename="../gis/CGisListDB.cpp" line="292"/>
         <source>Are you sure you want to delete "%1" from the database?</source>
-        <translation type="unfinished"></translation>
+        <translation>Opravdu chcete "%1" odstranit z databáze?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="321"/>
-        <location filename="../gis/CGisListDB.cpp" line="336"/>
+        <location filename="../gis/CGisListDB.cpp" line="318"/>
+        <location filename="../gis/CGisListDB.cpp" line="333"/>
         <source>Remove items...</source>
-        <translation type="unfinished"></translation>
+        <translation>Odstranit prvky...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="321"/>
+        <location filename="../gis/CGisListDB.cpp" line="318"/>
         <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
-        <translation type="unfinished"></translation>
+        <translation>Opravdu chcete smazat všechny prvky ze ztracených a nalezených? Tím budou trvale odstraněny.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="336"/>
+        <location filename="../gis/CGisListDB.cpp" line="333"/>
         <source>Are you sure you want to delete all selected items from Lost&Found? This will remove them permanently.</source>
-        <translation type="unfinished"></translation>
+        <translation>Opravdu chcete smazat všechny vybrané prvky ze ztracených a nalezených? Tím budou trvale odstraněny.</translation>
     </message>
 </context>
 <context>
@@ -320,102 +370,102 @@
         <translation>Uložit</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="84"/>
+        <location filename="../gis/CGisListWks.cpp" line="81"/>
         <source>Edit..</source>
-        <translation type="unfinished"></translation>
+        <translation>Upravit...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="85"/>
+        <location filename="../gis/CGisListWks.cpp" line="84"/>
         <source>Close</source>
         <translation>Zavřít</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="91"/>
+        <location filename="../gis/CGisListWks.cpp" line="90"/>
         <source>Edit...</source>
         <translation>Upravit...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="92"/>
+        <location filename="../gis/CGisListWks.cpp" line="91"/>
         <source>Copy to...</source>
-        <translation type="unfinished"></translation>
+        <translation>Kopírovat do...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="103"/>
         <source>Move Waypoint</source>
         <translation>Přesunout cestovní bod</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="105"/>
+        <location filename="../gis/CGisListWks.cpp" line="104"/>
         <source>Proj. Waypoint...</source>
         <translation>Promítnout cestovní bod...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="93"/>
+        <location filename="../gis/CGisListWks.cpp" line="92"/>
         <source>Track Profile</source>
         <translation>Sledovat profil</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="95"/>
+        <location filename="../gis/CGisListWks.cpp" line="94"/>
         <source>Select Range</source>
         <translation>Vybrat rozsah</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="96"/>
+        <location filename="../gis/CGisListWks.cpp" line="95"/>
         <source>Edit Track Points</source>
         <translation>Upravit body stopy</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="97"/>
+        <location filename="../gis/CGisListWks.cpp" line="96"/>
         <source>Reverse Track</source>
         <translation>Obrátit stopu</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="98"/>
+        <location filename="../gis/CGisListWks.cpp" line="97"/>
         <source>Combine Tracks</source>
         <translation>Spojit stopy</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="117"/>
+        <location filename="../gis/CGisListWks.cpp" line="116"/>
         <source>Edit Area Points</source>
         <translation>Upravit body oblasti</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="99"/>
+        <location filename="../gis/CGisListWks.cpp" line="98"/>
         <source>Delete</source>
         <translation>Smazat</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="567"/>
+        <location filename="../gis/CGisListWks.cpp" line="564"/>
         <source>Saving workspace. Please wait.</source>
-        <translation>Ukládá se pracovní oblast. Počkejte, prosím.</translation>
+        <translation>Ukládá se pohled. Počkejte, prosím.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="608"/>
+        <location filename="../gis/CGisListWks.cpp" line="605"/>
         <source>Loading workspace. Please wait.</source>
-        <translation>Nahrává se pracovní oblast. Počkejte, prosím.</translation>
+        <translation>Nahrává se pohled. Počkejte, prosím.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1003"/>
+        <location filename="../gis/CGisListWks.cpp" line="1002"/>
         <source>Close all projects...</source>
-        <translation type="unfinished"></translation>
+        <translation>Zavřít všechny projekty...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1003"/>
+        <location filename="../gis/CGisListWks.cpp" line="1002"/>
         <source>This will remove all projects from the workspace.</source>
-        <translation type="unfinished"></translation>
+        <translation>Tímto budou všechny projekty odstraněny z pohledu.</translation>
     </message>
 </context>
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="349"/>
+        <location filename="../gis/CGisWidget.cpp" line="344"/>
         <source>Cut Track...</source>
-        <translation type="unfinished"></translation>
+        <translation>Rozkrajet stopu...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="349"/>
+        <location filename="../gis/CGisWidget.cpp" line="344"/>
         <source>Do you want to delete the original track?</source>
-        <translation type="unfinished"></translation>
+        <translation>Opravdu chcete smazat původní stopu?</translation>
     </message>
 </context>
 <context>
@@ -425,12 +475,12 @@
         <translation type="obsolete">[Mřížka: %1]</translation>
     </message>
     <message>
-        <location filename="../grid/CGrid.cpp" line="62"/>
+        <location filename="../grid/CGrid.cpp" line="61"/>
         <source>[Grid: %1%2%5 %3%4%5] </source>
-        <translation type="unfinished">[Mřížka: %1] {1%2%5 %3%4%5]?}</translation>
+        <translation>[Mřížka: %1%2%5 %3%4%5] </translation>
     </message>
     <message>
-        <location filename="../grid/CGrid.cpp" line="66"/>
+        <location filename="../grid/CGrid.cpp" line="65"/>
         <source>[Grid: N %1m, E %2m] </source>
         <translation>[Mřížka: S %1m, V %2m] </translation>
     </message>
@@ -438,7 +488,7 @@
 <context>
     <name>CHistoryListWidget</name>
     <message>
-        <location filename="../helpers/CHistoryListWidget.cpp" line="34"/>
+        <location filename="../helpers/CHistoryListWidget.cpp" line="33"/>
         <source>Cut history</source>
         <translation>Vyjmout historii</translation>
     </message>
@@ -448,28 +498,28 @@
     <message>
         <location filename="../qlgt/CImportDatabase.cpp" line="29"/>
         <source>Import QLandkarte Database</source>
-        <translation type="unfinished"></translation>
+        <translation>Zavést databázi QLandkarte</translation>
     </message>
     <message>
-        <location filename="../qlgt/CImportDatabase.cpp" line="74"/>
+        <location filename="../qlgt/CImportDatabase.cpp" line="73"/>
         <source>Select source database...</source>
-        <translation type="unfinished"></translation>
+        <translation>Vybrat zdrojovou databázi...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CImportDatabase.cpp" line="95"/>
+        <location filename="../qlgt/CImportDatabase.cpp" line="93"/>
         <source>Select target database...</source>
-        <translation type="unfinished"></translation>
+        <translation>Vybrat cílovou databázi...</translation>
     </message>
 </context>
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="441"/>
+        <location filename="../CMainWindow.cpp" line="440"/>
         <source>Ele: %1%2</source>
         <translation>Výška: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="562"/>
+        <location filename="../CMainWindow.cpp" line="559"/>
         <source>Load GIS Data...</source>
         <translation>Nahrát data GIS...</translation>
     </message>
@@ -477,630 +527,630 @@
 <context>
     <name>CMapIMG</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="140"/>
+        <location filename="../map/CMapIMG.cpp" line="151"/>
         <source>Failed ...</source>
         <translation>Nepodařilo se...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="156"/>
+        <location filename="../map/CMapIMG.cpp" line="166"/>
         <source>Unspecified</source>
         <translation>Neurčeno</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="157"/>
+        <location filename="../map/CMapIMG.cpp" line="167"/>
         <source>French</source>
         <translation>Francouzský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="158"/>
+        <location filename="../map/CMapIMG.cpp" line="168"/>
         <source>German</source>
         <translation>Německý</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="159"/>
+        <location filename="../map/CMapIMG.cpp" line="169"/>
         <source>Dutch</source>
         <translation>Holandský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="160"/>
+        <location filename="../map/CMapIMG.cpp" line="170"/>
         <source>English</source>
         <translation>Anglický</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="161"/>
+        <location filename="../map/CMapIMG.cpp" line="171"/>
         <source>Italian</source>
         <translation>Italský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="162"/>
+        <location filename="../map/CMapIMG.cpp" line="172"/>
         <source>Finnish</source>
         <translation>Finský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="163"/>
+        <location filename="../map/CMapIMG.cpp" line="173"/>
         <source>Swedish</source>
         <translation>Švédský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="164"/>
+        <location filename="../map/CMapIMG.cpp" line="174"/>
         <source>Spanish</source>
         <translation>Španělský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="165"/>
+        <location filename="../map/CMapIMG.cpp" line="175"/>
         <source>Basque</source>
         <translation>Baskický</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="166"/>
+        <location filename="../map/CMapIMG.cpp" line="176"/>
         <source>Catalan</source>
         <translation>Katalánský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="167"/>
+        <location filename="../map/CMapIMG.cpp" line="177"/>
         <source>Galician</source>
         <translation>Galicijský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="168"/>
+        <location filename="../map/CMapIMG.cpp" line="178"/>
         <source>Welsh</source>
         <translation>Velšský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="169"/>
+        <location filename="../map/CMapIMG.cpp" line="179"/>
         <source>Gaelic</source>
         <translation>Gaelský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="170"/>
+        <location filename="../map/CMapIMG.cpp" line="180"/>
         <source>Danish</source>
         <translation>Dánský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="171"/>
+        <location filename="../map/CMapIMG.cpp" line="181"/>
         <source>Norwegian</source>
         <translation>Norský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="172"/>
+        <location filename="../map/CMapIMG.cpp" line="182"/>
         <source>Portuguese</source>
         <translation>Portugalský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="173"/>
+        <location filename="../map/CMapIMG.cpp" line="183"/>
         <source>Slovak</source>
         <translation>Slovenský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="174"/>
+        <location filename="../map/CMapIMG.cpp" line="184"/>
         <source>Czech</source>
         <translation>Český</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="175"/>
+        <location filename="../map/CMapIMG.cpp" line="185"/>
         <source>Croatian</source>
         <translation>Chorvatský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="176"/>
+        <location filename="../map/CMapIMG.cpp" line="186"/>
         <source>Hungarian</source>
         <translation>Maďarský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="177"/>
+        <location filename="../map/CMapIMG.cpp" line="187"/>
         <source>Polish</source>
         <translation>Polský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="178"/>
+        <location filename="../map/CMapIMG.cpp" line="188"/>
         <source>Turkish</source>
         <translation>Turecký</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="179"/>
+        <location filename="../map/CMapIMG.cpp" line="189"/>
         <source>Greek</source>
         <translation>Řecký</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="180"/>
+        <location filename="../map/CMapIMG.cpp" line="190"/>
         <source>Slovenian</source>
         <translation>Slovinský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="181"/>
+        <location filename="../map/CMapIMG.cpp" line="191"/>
         <source>Russian</source>
         <translation>Ruský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="182"/>
+        <location filename="../map/CMapIMG.cpp" line="192"/>
         <source>Estonian</source>
         <translation>Estonský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="183"/>
+        <location filename="../map/CMapIMG.cpp" line="193"/>
         <source>Latvian</source>
         <translation>Lotyšský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="184"/>
+        <location filename="../map/CMapIMG.cpp" line="194"/>
         <source>Romanian</source>
         <translation>Rumunský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="185"/>
+        <location filename="../map/CMapIMG.cpp" line="195"/>
         <source>Albanian</source>
         <translation>Albánský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="186"/>
+        <location filename="../map/CMapIMG.cpp" line="196"/>
         <source>Bosnian</source>
         <translation>Bosenský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="187"/>
+        <location filename="../map/CMapIMG.cpp" line="197"/>
         <source>Lithuanian</source>
         <translation>Litevský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="188"/>
+        <location filename="../map/CMapIMG.cpp" line="198"/>
         <source>Serbian</source>
         <translation>Srbský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="189"/>
+        <location filename="../map/CMapIMG.cpp" line="199"/>
         <source>Macedonian</source>
         <translation>Makedonský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="190"/>
+        <location filename="../map/CMapIMG.cpp" line="200"/>
         <source>Bulgarian</source>
         <translation>Bulharský</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="247"/>
+        <location filename="../map/CMapIMG.cpp" line="257"/>
         <source>Major highway</source>
         <translation>Dálnice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="248"/>
+        <location filename="../map/CMapIMG.cpp" line="258"/>
         <source>Principal highway</source>
         <translation>Silnice první třídy</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="249"/>
+        <location filename="../map/CMapIMG.cpp" line="259"/>
         <source>Other highway</source>
         <translation>Jiné rychlostní silnice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="250"/>
+        <location filename="../map/CMapIMG.cpp" line="260"/>
         <source>Arterial road</source>
         <translation>Rychlostní silnice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="251"/>
+        <location filename="../map/CMapIMG.cpp" line="261"/>
         <source>Collector road</source>
         <translation>Státní silnice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="252"/>
+        <location filename="../map/CMapIMG.cpp" line="262"/>
         <source>Residential street</source>
         <translation>Silnice v obytné oblasti</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="253"/>
+        <location filename="../map/CMapIMG.cpp" line="263"/>
         <source>Alley/Private road</source>
         <translation>Soukromá cesta</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="254"/>
+        <location filename="../map/CMapIMG.cpp" line="264"/>
         <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="255"/>
+        <location filename="../map/CMapIMG.cpp" line="265"/>
         <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="256"/>
+        <location filename="../map/CMapIMG.cpp" line="266"/>
         <source>Unpaved road</source>
         <translation>Neasfaltovaná cesta</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="257"/>
+        <location filename="../map/CMapIMG.cpp" line="267"/>
         <source>Major highway connector</source>
         <translation>Dalniční přivaděč</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="258"/>
+        <location filename="../map/CMapIMG.cpp" line="268"/>
         <source>Roundabout</source>
         <translation>Kruhový objezd</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="259"/>
+        <location filename="../map/CMapIMG.cpp" line="269"/>
         <source>Railroad</source>
         <translation>Železnice, koleje</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="260"/>
+        <location filename="../map/CMapIMG.cpp" line="270"/>
         <source>Shoreline</source>
         <translation>Břeh</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="261"/>
+        <location filename="../map/CMapIMG.cpp" line="271"/>
         <source>Trail</source>
         <translation>Cesta</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="262"/>
+        <location filename="../map/CMapIMG.cpp" line="272"/>
         <source>Stream</source>
         <translation>Proud</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="263"/>
+        <location filename="../map/CMapIMG.cpp" line="273"/>
         <source>Time zone</source>
         <translation>Časové pásmo</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="264"/>
-        <location filename="../map/CMapIMG.cpp" line="265"/>
+        <location filename="../map/CMapIMG.cpp" line="274"/>
+        <location filename="../map/CMapIMG.cpp" line="275"/>
         <source>Ferry</source>
         <translation>Přívoz</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="266"/>
+        <location filename="../map/CMapIMG.cpp" line="276"/>
         <source>State/province border</source>
         <translation>Státní/Zemská hranice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="267"/>
+        <location filename="../map/CMapIMG.cpp" line="277"/>
         <source>County/parish border</source>
         <translation>Krajská/Obecní hranice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="268"/>
+        <location filename="../map/CMapIMG.cpp" line="278"/>
         <source>International border</source>
         <translation>Mezinárodní hranice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="269"/>
+        <location filename="../map/CMapIMG.cpp" line="279"/>
         <source>River</source>
         <translation>Řeka</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="270"/>
+        <location filename="../map/CMapIMG.cpp" line="280"/>
         <source>Minor land contour</source>
         <translation>Malá vrstevnice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="271"/>
+        <location filename="../map/CMapIMG.cpp" line="281"/>
         <source>Intermediate land contour</source>
         <translation>Střední vrstevnice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="272"/>
+        <location filename="../map/CMapIMG.cpp" line="282"/>
         <source>Major land contour</source>
         <translation>Velká vrstevnice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="273"/>
+        <location filename="../map/CMapIMG.cpp" line="283"/>
         <source>Minor depth contour</source>
         <translation>Malá hloubková čára</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="274"/>
+        <location filename="../map/CMapIMG.cpp" line="284"/>
         <source>Intermediate depth contour</source>
         <translation>Střední hloubková čára</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="275"/>
+        <location filename="../map/CMapIMG.cpp" line="285"/>
         <source>Major depth contour</source>
         <translation>Velká hloubková čára</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="276"/>
+        <location filename="../map/CMapIMG.cpp" line="286"/>
         <source>Intermittent stream</source>
         <translation>Přerušovaný potok (Wadi)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="277"/>
-        <location filename="../map/CMapIMG.cpp" line="359"/>
+        <location filename="../map/CMapIMG.cpp" line="287"/>
+        <location filename="../map/CMapIMG.cpp" line="369"/>
         <source>Airport runway</source>
         <translation>Přistávací dráha</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="278"/>
+        <location filename="../map/CMapIMG.cpp" line="288"/>
         <source>Pipeline</source>
         <translation>Dálkové potrubí</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="279"/>
+        <location filename="../map/CMapIMG.cpp" line="289"/>
         <source>Powerline</source>
         <translation>Elektrické vedení</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="280"/>
+        <location filename="../map/CMapIMG.cpp" line="290"/>
         <source>Marine boundary</source>
         <translation>Hranice moře</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="281"/>
+        <location filename="../map/CMapIMG.cpp" line="291"/>
         <source>Hazard boundary</source>
         <translation>Nebezpečná hranice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="346"/>
+        <location filename="../map/CMapIMG.cpp" line="356"/>
         <source>Large urban area (&gt;200K)</source>
         <translation>Velkoměstská oblast (&gt;200 000)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="347"/>
+        <location filename="../map/CMapIMG.cpp" line="357"/>
         <source>Small urban area (&lt;200K)</source>
         <translation>Maloměstská oblast (&gt;200 000)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="348"/>
+        <location filename="../map/CMapIMG.cpp" line="358"/>
         <source>Rural housing area</source>
         <translation>Městská obytná oblast</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="349"/>
+        <location filename="../map/CMapIMG.cpp" line="359"/>
         <source>Military base</source>
         <translation>Vojenská základna</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="350"/>
+        <location filename="../map/CMapIMG.cpp" line="360"/>
         <source>Parking lot</source>
         <translation>Parkoviště</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="351"/>
+        <location filename="../map/CMapIMG.cpp" line="361"/>
         <source>Parking garage</source>
         <translation>Parkovací budova</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="352"/>
+        <location filename="../map/CMapIMG.cpp" line="362"/>
         <source>Airport</source>
         <translation>Letiště</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="353"/>
+        <location filename="../map/CMapIMG.cpp" line="363"/>
         <source>Shopping center</source>
         <translation>Nákupní středisko</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="354"/>
+        <location filename="../map/CMapIMG.cpp" line="364"/>
         <source>Marina</source>
         <translation>Přístav</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="355"/>
+        <location filename="../map/CMapIMG.cpp" line="365"/>
         <source>University/College</source>
         <translation>Univerzita/Vysoká škola</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="356"/>
+        <location filename="../map/CMapIMG.cpp" line="366"/>
         <source>Hospital</source>
         <translation>Nemocnice</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="357"/>
+        <location filename="../map/CMapIMG.cpp" line="367"/>
         <source>Industrial complex</source>
         <translation>Průmyslový celek</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="358"/>
+        <location filename="../map/CMapIMG.cpp" line="368"/>
         <source>Reservation</source>
         <translation>Chráněné území</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="360"/>
+        <location filename="../map/CMapIMG.cpp" line="370"/>
         <source>Man-made area</source>
         <translation>Zástavba</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="361"/>
+        <location filename="../map/CMapIMG.cpp" line="371"/>
         <source>Sports complex</source>
         <translation>Oblast pro tělesné činnosti</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="362"/>
+        <location filename="../map/CMapIMG.cpp" line="372"/>
         <source>Golf course</source>
         <translation>Golfové hřiště</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="363"/>
+        <location filename="../map/CMapIMG.cpp" line="373"/>
         <source>Cemetery</source>
         <translation>Hřbitov</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="364"/>
-        <location filename="../map/CMapIMG.cpp" line="365"/>
-        <location filename="../map/CMapIMG.cpp" line="366"/>
+        <location filename="../map/CMapIMG.cpp" line="374"/>
+        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <location filename="../map/CMapIMG.cpp" line="376"/>
         <source>National park</source>
         <translation>Národní park</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="367"/>
+        <location filename="../map/CMapIMG.cpp" line="377"/>
         <source>City park</source>
         <translation>Městské sady</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="368"/>
-        <location filename="../map/CMapIMG.cpp" line="369"/>
-        <location filename="../map/CMapIMG.cpp" line="370"/>
+        <location filename="../map/CMapIMG.cpp" line="378"/>
+        <location filename="../map/CMapIMG.cpp" line="379"/>
+        <location filename="../map/CMapIMG.cpp" line="380"/>
         <source>State park</source>
         <translation>Státní park</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="371"/>
+        <location filename="../map/CMapIMG.cpp" line="381"/>
         <source>Forest</source>
         <translation>Les</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="372"/>
+        <location filename="../map/CMapIMG.cpp" line="382"/>
         <source>Ocean</source>
         <translation>Oceán</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="373"/>
-        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <location filename="../map/CMapIMG.cpp" line="383"/>
         <location filename="../map/CMapIMG.cpp" line="385"/>
+        <location filename="../map/CMapIMG.cpp" line="395"/>
         <source>Blue (unknown)</source>
         <translation>Modrá (neznámé)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="374"/>
+        <location filename="../map/CMapIMG.cpp" line="384"/>
         <source>Sea</source>
         <translation>Moře</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="376"/>
-        <location filename="../map/CMapIMG.cpp" line="377"/>
-        <location filename="../map/CMapIMG.cpp" line="384"/>
+        <location filename="../map/CMapIMG.cpp" line="386"/>
+        <location filename="../map/CMapIMG.cpp" line="387"/>
+        <location filename="../map/CMapIMG.cpp" line="394"/>
         <source>Large lake</source>
         <translation>Velké jezero</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="378"/>
-        <location filename="../map/CMapIMG.cpp" line="379"/>
+        <location filename="../map/CMapIMG.cpp" line="388"/>
+        <location filename="../map/CMapIMG.cpp" line="389"/>
         <source>Medium lake</source>
         <translation>Střední jezero</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="380"/>
-        <location filename="../map/CMapIMG.cpp" line="381"/>
+        <location filename="../map/CMapIMG.cpp" line="390"/>
+        <location filename="../map/CMapIMG.cpp" line="391"/>
         <source>Small lake</source>
         <translation>Malé jezero</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="382"/>
-        <location filename="../map/CMapIMG.cpp" line="383"/>
+        <location filename="../map/CMapIMG.cpp" line="392"/>
+        <location filename="../map/CMapIMG.cpp" line="393"/>
         <source>Major lake</source>
         <translation>Velmi velké jezero</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="386"/>
+        <location filename="../map/CMapIMG.cpp" line="396"/>
         <source>Major River</source>
         <translation>Veletok</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="387"/>
+        <location filename="../map/CMapIMG.cpp" line="397"/>
         <source>Large River</source>
         <translation>Velká řeka</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="388"/>
+        <location filename="../map/CMapIMG.cpp" line="398"/>
         <source>Medium River</source>
         <translation>Střední řeka</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="389"/>
+        <location filename="../map/CMapIMG.cpp" line="399"/>
         <source>Small River</source>
         <translation>Malá řeka</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="392"/>
+        <location filename="../map/CMapIMG.cpp" line="402"/>
         <source>Intermittent water</source>
         <translation>Přerušovaná voda</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="393"/>
+        <location filename="../map/CMapIMG.cpp" line="403"/>
         <source>Wetland/Swamp</source>
         <translation>Močál/Bažina</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="394"/>
+        <location filename="../map/CMapIMG.cpp" line="404"/>
         <source>Glacier</source>
         <translation>Ledovec</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="395"/>
+        <location filename="../map/CMapIMG.cpp" line="405"/>
         <source>Orchard/Plantation</source>
         <translation>Sad/Plantáž</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="396"/>
+        <location filename="../map/CMapIMG.cpp" line="406"/>
         <source>Scrub</source>
         <translation>Křoví</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="397"/>
+        <location filename="../map/CMapIMG.cpp" line="407"/>
         <source>Tundra</source>
         <translation>Tundra</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="398"/>
+        <location filename="../map/CMapIMG.cpp" line="408"/>
         <source>Flat</source>
         <translation>Rovina</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="399"/>
+        <location filename="../map/CMapIMG.cpp" line="409"/>
         <source>???</source>
         <translation>???</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="437"/>
+        <location filename="../map/CMapIMG.cpp" line="445"/>
         <source>Failed to read: </source>
         <translation>Nepodařilo se přečíst: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="481"/>
+        <location filename="../map/CMapIMG.cpp" line="488"/>
         <source>Failed to open: </source>
         <translation>Nepodařilo se otevřít: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="505"/>
-        <location filename="../map/CMapIMG.cpp" line="509"/>
+        <location filename="../map/CMapIMG.cpp" line="512"/>
+        <location filename="../map/CMapIMG.cpp" line="516"/>
         <source>Bad file format: </source>
         <translation>Špatný formát souboru: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="600"/>
+        <location filename="../map/CMapIMG.cpp" line="605"/>
         <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="633"/>
+        <location filename="../map/CMapIMG.cpp" line="638"/>
         <source>Loading %1</source>
         <translation>Nahrává se %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="638"/>
+        <location filename="../map/CMapIMG.cpp" line="643"/>
         <source>User abort: </source>
         <translation>Zrušeno uživatelem: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="639"/>
+        <location filename="../map/CMapIMG.cpp" line="646"/>
         <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="727"/>
+        <location filename="../map/CMapIMG.cpp" line="738"/>
         <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="2377"/>
-        <location filename="../map/CMapIMG.cpp" line="2385"/>
-        <location filename="../map/CMapIMG.cpp" line="2389"/>
-        <location filename="../map/CMapIMG.cpp" line="2394"/>
-        <location filename="../map/CMapIMG.cpp" line="2441"/>
-        <location filename="../map/CMapIMG.cpp" line="2449"/>
-        <location filename="../map/CMapIMG.cpp" line="2453"/>
-        <location filename="../map/CMapIMG.cpp" line="2458"/>
+        <location filename="../map/CMapIMG.cpp" line="2467"/>
+        <location filename="../map/CMapIMG.cpp" line="2475"/>
+        <location filename="../map/CMapIMG.cpp" line="2479"/>
+        <location filename="../map/CMapIMG.cpp" line="2484"/>
+        <location filename="../map/CMapIMG.cpp" line="2530"/>
+        <location filename="../map/CMapIMG.cpp" line="2538"/>
+        <location filename="../map/CMapIMG.cpp" line="2542"/>
+        <location filename="../map/CMapIMG.cpp" line="2547"/>
         <source>Point of Interest</source>
         <translation>Podivuhodnost</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2583"/>
+        <location filename="../map/CMapIMG.cpp" line="2674"/>
         <source>Unknown</source>
         <translation>Neznámý</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2630"/>
-        <location filename="../map/CMapIMG.cpp" line="2639"/>
-        <location filename="../map/CMapIMG.cpp" line="2646"/>
+        <location filename="../map/CMapIMG.cpp" line="2720"/>
+        <location filename="../map/CMapIMG.cpp" line="2728"/>
+        <location filename="../map/CMapIMG.cpp" line="2735"/>
         <source>Area</source>
         <translation>Oblast</translation>
     </message>
@@ -1108,12 +1158,12 @@
 <context>
     <name>CMapList</name>
     <message>
-        <location filename="../map/CMapList.cpp" line="148"/>
+        <location filename="../map/CMapList.cpp" line="150"/>
         <source>Deactivate</source>
         <translation>Vypnout</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="148"/>
+        <location filename="../map/CMapList.cpp" line="150"/>
         <source>Activate</source>
         <translation>Zapnout</translation>
     </message>
@@ -1121,17 +1171,17 @@
 <context>
     <name>CMapMAP</name>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="46"/>
+        <location filename="../map/CMapMAP.cpp" line="45"/>
         <source>Failed ...</source>
         <translation>Nepodařilo se...</translation>
     </message>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="65"/>
+        <location filename="../map/CMapMAP.cpp" line="62"/>
         <source>Failed to open: </source>
         <translation>Nepodařilo se otevřít: </translation>
     </message>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="75"/>
+        <location filename="../map/CMapMAP.cpp" line="72"/>
         <source>Bad file format: </source>
         <translation>Špatný formát souboru: </translation>
     </message>
@@ -1144,7 +1194,7 @@
         <translation>Přidat nebo odstranit cesty obsahující mapy. V cestě může být více map, ale žádná podcesta není zpracována. Podporovanými formáty jsou: %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapPathSetup.cpp" line="55"/>
+        <location filename="../map/CMapPathSetup.cpp" line="54"/>
         <source>Select map path...</source>
         <translation>Vybrat cestu k mapě...</translation>
     </message>
@@ -1152,7 +1202,7 @@
 <context>
     <name>CMapPropSetup</name>
     <message>
-        <location filename="../map/CMapPropSetup.cpp" line="151"/>
+        <location filename="../map/CMapPropSetup.cpp" line="147"/>
         <source>Cache path...</source>
         <translation>Cesta k vyrovnávací paměti...</translation>
     </message>
@@ -1308,7 +1358,7 @@ Neznámá stavba.</translation>
         <translation type="obsolete">--- Vše ---</translation>
     </message>
     <message>
-        <location filename="../map/CMapWMTS.cpp" line="385"/>
+        <location filename="../map/CMapWMTS.cpp" line="384"/>
         <source><b>%1</b>: %2 tiles pending<br/></source>
         <translation><b>%1</b>: %2 dlaždic čeká<br/></translation>
     </message>
@@ -1361,19 +1411,31 @@ Neznámá stavba.</translation>
     </message>
 </context>
 <context>
+    <name>CPhotoAlbum</name>
+    <message>
+        <location filename="../helpers/CPhotoAlbum.cpp" line="65"/>
+        <source>Select images...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CPlotDistance</name>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="55"/>
+        <location filename="../plot/CPlotDistance.cpp" line="53"/>
         <source>distance [%1]</source>
         <translation>Vzdálenost [%1]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="59"/>
+        <location filename="../plot/CPlotDistance.cpp" line="57"/>
+        <source>time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>time [h]</source>
-        <translation>Čas [h]</translation>
+        <translation type="obsolete">Čas [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="61"/>
+        <location filename="../plot/CPlotDistance.cpp" line="59"/>
         <source>distance. [%1]</source>
         <translation>Vzdálenost [%1]</translation>
     </message>
@@ -1381,17 +1443,17 @@ Neznámá stavba.</translation>
 <context>
     <name>CPlotProfile</name>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="67"/>
+        <location filename="../plot/CPlotProfile.cpp" line="63"/>
         <source>distance [%1]</source>
         <translation>Vzdálenost [%1]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="71"/>
+        <location filename="../plot/CPlotProfile.cpp" line="67"/>
         <source>time [h]</source>
         <translation>Čas [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="73"/>
+        <location filename="../plot/CPlotProfile.cpp" line="69"/>
         <source>alt. [%1]</source>
         <translation>Výška [%1]</translation>
     </message>
@@ -1399,17 +1461,17 @@ Neznámá stavba.</translation>
 <context>
     <name>CPlotSpeed</name>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="54"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="52"/>
         <source>distance [%1]</source>
         <translation>Vzdálenost [%1]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="58"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="56"/>
         <source>time [h]</source>
         <translation>Čas [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="60"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="58"/>
         <source>speed. [%1]</source>
         <translation>Rychlost [%1]</translation>
     </message>
@@ -1427,12 +1489,12 @@ Neznámá stavba.</translation>
         <translation>Jih</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="211"/>
+        <location filename="../grid/CProjWizard.cpp" line="213"/>
         <source>Error...</source>
         <translation>Chyba...</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="211"/>
+        <location filename="../grid/CProjWizard.cpp" line="213"/>
         <source>The value
 '%1'
 is not a valid coordinate system definition:
@@ -1446,12 +1508,12 @@ není platným vymezením soustavy souřadnic
 <context>
     <name>CProjWpt</name>
     <message>
-        <location filename="../gis/wpt/CProjWpt.cpp" line="63"/>
+        <location filename="../gis/wpt/CProjWpt.cpp" line="62"/>
         <source>Edit name...</source>
         <translation>Upravit název...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CProjWpt.cpp" line="63"/>
+        <location filename="../gis/wpt/CProjWpt.cpp" line="62"/>
         <source>Enter new waypoint name.</source>
         <translation>Zadat  nový název cestovního bodu.</translation>
     </message>
@@ -1461,123 +1523,123 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="304"/>
         <source>Migrating database from version 4 to 5.</source>
-        <translation type="unfinished"></translation>
+        <translation>Přestěhovat databázi z verze 4 na verzi 5.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="357"/>
         <source>Migrating database from version 5 to 6.</source>
-        <translation type="unfinished"></translation>
+        <translation>Přestěhovat databázi z verze 5 na verzi 6.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="414"/>
         <source>Migrating database from version 6 to 7.</source>
-        <translation type="unfinished"></translation>
+        <translation>Přestěhovat databázi z verze 6 na verzi 7.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="480"/>
         <source>Migrating database from version 7 to 8.</source>
-        <translation type="unfinished"></translation>
+        <translation>Přestěhovat databázi z verze 7 na verzi 8.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="509"/>
         <source>Migrating database from version 8 to 9.</source>
-        <translation type="unfinished"></translation>
+        <translation>Přestěhovat databázi z verze 8 na verzi 9.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="532"/>
         <source>Open database: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Otevřít databázi: %1</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="541"/>
         <source>Folders:          %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Složky: %1</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="550"/>
         <source>Tracks:           %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Stopy: %1</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="558"/>
         <source>Routes:           %1 (Only the basic route will be copied)</source>
-        <translation type="unfinished"></translation>
+        <translation>Cesty: %1 (Bude koírována pouze základní cesta)</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="566"/>
         <source>Waypoints:        %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Cestovní body: %1</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="574"/>
         <source>Overlays:         %1 (only area overlays will be converted to QMapShack)</source>
-        <translation type="unfinished"></translation>
+        <translation>Překrytí:         %1 (pouze překrytí oblasti budou převedena do QMapShack)</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="581"/>
         <source>Diaries:          %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Deníky:          %1</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="588"/>
         <source>Map selections:   %1 (can't be converted to QMapShack)</source>
-        <translation type="unfinished"></translation>
+        <translation>Výběry map:       %1 (nelze převést do QMapShack)</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="594"/>
         <source>------ Start to convert database to %1------</source>
-        <translation type="unfinished"></translation>
+        <translation>------ Začít převádět databázi do %1------</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="598"/>
         <source>Failed to create target database.</source>
-        <translation type="unfinished"></translation>
+        <translation>Nepodařilo se vytvořit cílovou databázi.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="599"/>
         <source>------ Abort ------</source>
-        <translation type="unfinished"></translation>
+        <translation>------ Zrušit ------</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="627"/>
         <source>------ Done ------</source>
-        <translation type="unfinished"></translation>
+        <translation>------ Hotovo ------</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="636"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="635"/>
         <source>Restore folders...</source>
-        <translation type="unfinished"></translation>
+        <translation>Obnovit složky...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="636"/>
-        <location filename="../qlgt/CQlgtDb.cpp" line="669"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="635"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="668"/>
         <source>Abort</source>
-        <translation type="unfinished">Přerušit</translation>
+        <translation>Zrušit</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="663"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="662"/>
         <source>Imported %1 folders and %2 diaries</source>
-        <translation type="unfinished"></translation>
+        <translation>Zavedeno %1 složek a %2 deníků</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="669"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="668"/>
         <source>Copy items...</source>
-        <translation type="unfinished"></translation>
+        <translation>Kopírovat prvky...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="694"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="692"/>
         <source>Imported %1 tracks, %2 waypoints, %3 routes, %4 areas</source>
-        <translation type="unfinished"></translation>
+        <translation>Zavedeno %1 stop, %2 cestovních bodů, %3 cest, %4 oblastí</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="695"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="693"/>
         <source>Import folders...</source>
-        <translation type="unfinished"></translation>
+        <translation>Zavést složky...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="747"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="748"/>
         <source>Overlay of type '%1' cant be converted</source>
-        <translation type="unfinished"></translation>
+        <translation>Překrytí typu '%1' nelze převést</translation>
     </message>
 </context>
 <context>
@@ -1585,33 +1647,33 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../qlgt/CQmsDb.cpp" line="46"/>
         <source>Existing file...</source>
-        <translation type="unfinished"></translation>
+        <translation>Stávající soubor...</translation>
     </message>
     <message>
         <location filename="../qlgt/CQmsDb.cpp" line="46"/>
         <source>Remove existing %1?</source>
-        <translation type="unfinished"></translation>
+        <translation>Odstranit stávající %1?</translation>
     </message>
     <message>
         <location filename="../qlgt/CQmsDb.cpp" line="51"/>
         <source>Remove existing file %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Odstranit stávající soubor %1</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="158"/>
+        <location filename="../qlgt/CQmsDb.cpp" line="160"/>
         <source>%1: drop item with QLGT DB ID %2</source>
-        <translation type="unfinished"></translation>
+        <translation>%1: Zahodit prvek s ID DB QLGT %2</translation>
     </message>
 </context>
 <context>
     <name>CSearchGoogle</name>
     <message>
-        <location filename="../gis/search/CSearchGoogle.cpp" line="120"/>
+        <location filename="../gis/search/CSearchGoogle.cpp" line="119"/>
         <source>Unknown response</source>
         <translation>Neznámá odpověď</translation>
     </message>
     <message>
-        <location filename="../gis/search/CSearchGoogle.cpp" line="130"/>
+        <location filename="../gis/search/CSearchGoogle.cpp" line="129"/>
         <source>Error: </source>
         <translation>Chyba: </translation>
     </message>
@@ -1634,37 +1696,37 @@ není platným vymezením soustavy souřadnic
 <context>
     <name>CSetupDatabase</name>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="71"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="69"/>
         <source>Error...</source>
-        <translation type="unfinished">Chyba...</translation>
+        <translation>Chyba...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="71"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="69"/>
         <source>There is already a database with name '%1'</source>
-        <translation type="unfinished"></translation>
+        <translation>Již je databáze s názvem '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="85"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="83"/>
         <source>New database...</source>
-        <translation type="unfinished"></translation>
+        <translation>Nová databáze...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="110"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="108"/>
         <source>Open database...</source>
-        <translation type="unfinished"></translation>
+        <translation>Otevřít databázi...</translation>
     </message>
 </context>
 <context>
     <name>CSetupWorkspace</name>
     <message>
-        <location filename="../gis/db/CSetupWorkspace.cpp" line="52"/>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
         <source>Setup database...</source>
-        <translation type="unfinished">Nastavit databázi...</translation>
+        <translation>Nastavit databázi...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupWorkspace.cpp" line="52"/>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
         <source>Changes will become active after an application's restart.</source>
-        <translation type="unfinished">Změny budou uvedeny v činnost po opětovném spuštění programu.</translation>
+        <translation>Změny budou uvedeny v činnost po opětovném spuštění programu.</translation>
     </message>
 </context>
 <context>
@@ -1724,9 +1786,13 @@ není platným vymezením soustavy souřadnic
 <context>
     <name>ICanvasSetup</name>
     <message>
-        <location filename="../canvas/ICanvasSetup.ui" line="14"/>
         <source>Setup Map Workspace...</source>
-        <translation>Stanovit pracovní oblast mapy...</translation>
+        <translation type="obsolete">Nastavit pohled na mapu...</translation>
+    </message>
+    <message>
+        <location filename="../canvas/ICanvasSetup.ui" line="14"/>
+        <source>Setup Map View...</source>
+        <translation>Nastavit pohled na mapu...</translation>
     </message>
     <message>
         <location filename="../canvas/ICanvasSetup.ui" line="22"/>
@@ -1808,29 +1874,29 @@ není platným vymezením soustavy souřadnic
         <translation><html><head/><body><p>Klepněte pro použití nynějšího měřítka jako nejmenšího měřítka pro zobrazení mapy.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="124"/>
+        <location filename="../dem/IDemPropSetup.ui" line="115"/>
         <source>Hillshading</source>
         <translation>Stínování kopců</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="150"/>
+        <location filename="../dem/IDemPropSetup.ui" line="141"/>
         <source>Slope </source>
-        <translation type="unfinished"></translation>
+        <translation>Sklon</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="192"/>
-        <location filename="../dem/IDemPropSetup.ui" line="199"/>
-        <location filename="../dem/IDemPropSetup.ui" line="206"/>
-        <location filename="../dem/IDemPropSetup.ui" line="213"/>
-        <location filename="../dem/IDemPropSetup.ui" line="232"/>
-        <location filename="../dem/IDemPropSetup.ui" line="251"/>
-        <location filename="../dem/IDemPropSetup.ui" line="270"/>
-        <location filename="../dem/IDemPropSetup.ui" line="277"/>
-        <location filename="../dem/IDemPropSetup.ui" line="284"/>
-        <location filename="../dem/IDemPropSetup.ui" line="303"/>
-        <location filename="../dem/IDemPropSetup.ui" line="310"/>
+        <location filename="../dem/IDemPropSetup.ui" line="183"/>
+        <location filename="../dem/IDemPropSetup.ui" line="190"/>
+        <location filename="../dem/IDemPropSetup.ui" line="197"/>
+        <location filename="../dem/IDemPropSetup.ui" line="204"/>
+        <location filename="../dem/IDemPropSetup.ui" line="223"/>
+        <location filename="../dem/IDemPropSetup.ui" line="242"/>
+        <location filename="../dem/IDemPropSetup.ui" line="261"/>
+        <location filename="../dem/IDemPropSetup.ui" line="268"/>
+        <location filename="../dem/IDemPropSetup.ui" line="275"/>
+        <location filename="../dem/IDemPropSetup.ui" line="294"/>
+        <location filename="../dem/IDemPropSetup.ui" line="301"/>
         <source>TextLabel</source>
-        <translation type="unfinished">Textový štítek</translation>
+        <translation>Textový štítek</translation>
     </message>
 </context>
 <context>
@@ -1864,48 +1930,48 @@ není platným vymezením soustavy souřadnic
         <translation>Dialog</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="35"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="66"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="70"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="92"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="105"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="118"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="131"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="144"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="157"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="170"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="183"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="196"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="209"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="222"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="235"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="248"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="43"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="62"/>
         <source>about:blank</source>
         <translation>o:prázdný</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="59"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="85"/>
         <source>Position:</source>
         <translation>Poloha:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="79"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="105"/>
         <source>Difficulty</source>
         <translation>Obtížnost</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="157"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="183"/>
         <source>Terrain</source>
         <translation>Terén</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="231"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="35"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="249"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="259"/>
         <source>Hint:</source>
         <translation>Rada:</translation>
     </message>
@@ -1968,20 +2034,45 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="14"/>
         <source>Form</source>
-        <translation type="unfinished">Formulář</translation>
+        <translation>Formulář</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="44"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="51"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="75"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="50"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="57"/>
         <source>-</source>
-        <translation type="unfinished">-</translation>
+        <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="68"/>
-        <source>Keywords:</source>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="70"/>
+        <source>Sort By Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="86"/>
+        <source>Keep Order of Project</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="93"/>
+        <source>Print diary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="96"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="116"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="113"/>
+        <source>Rebuild diary.</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="43"/>
+        <source>Keywords:</source>
+        <translation>Klíčová slova:</translation>
+    </message>
 </context>
 <context>
     <name>IDetailsTrk</name>
@@ -2077,7 +2168,7 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="399"/>
         <source>Filter</source>
-        <translation type="unfinished"></translation>
+        <translation>Filtr</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="436"/>
@@ -2093,47 +2184,59 @@ není platným vymezením soustavy souřadnic
         <translation>Dialog</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="128"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="249"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="207"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="236"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="273"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="293"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="162"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="52"/>
         <source>Position:</source>
         <translation>Poloha:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="72"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="90"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="59"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="85"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="111"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="151"/>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="169"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="195"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="221"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="182"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="72"/>
         <source>Ele.</source>
         <translation>Výška</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="208"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="98"/>
         <source>Proximity:</source>
         <translation>Blízkost:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="109"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="188"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation><html><head/><body><p>Cestovní bod byl zaveden do QMapShacku a byl změněn. Už neukazuje původní data. Prohlédněte si, prosím, historii kvůli změnám. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="125"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="204"/>
         <source><html><head/><body><p>Read Only Mode</p></body></html></source>
         <translation><html><head/><body><p>Režim pouze pro čtení</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="65"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="270"/>
+        <source>Add images.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="290"/>
+        <source>Delete selected image.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="144"/>
         <source>Date/Time:</source>
         <translation>Datum/Čas</translation>
     </message>
@@ -2171,22 +2274,22 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/trk/filter/IFilterDelete.ui" line="14"/>
         <source>Form</source>
-        <translation type="unfinished">Formulář</translation>
+        <translation>Formulář</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDelete.ui" line="51"/>
         <source><b>Remove Track Points</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Odstranit cestovní body</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDelete.ui" line="63"/>
         <source>Remove all hidden track points permanently.</source>
-        <translation type="unfinished"></translation>
+        <translation>Odstranit trvale všechny skryté cestovní body.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDelete.ui" line="70"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2194,32 +2297,32 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="14"/>
         <source>Form</source>
-        <translation type="unfinished">Formulář</translation>
+        <translation>Formulář</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="45"/>
         <source><b>Hide Points (Douglas Peuker)</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Skrýt cestovní body (Douglas Peuker)</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="57"/>
         <source>Hide track points if the distance to a line between neighboring points is less than</source>
-        <translation type="unfinished"></translation>
+        <translation>Skrýt cestovní body, když je vzdálenost k čáře mezi sousedícími body méně než</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="70"/>
         <source>m</source>
-        <translation type="unfinished">m</translation>
+        <translation>m</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="93"/>
         <source>Apply filter now.</source>
-        <translation type="unfinished"></translation>
+        <translation>Použít filtr nyní.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="96"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2227,27 +2330,27 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/trk/filter/IFilterMedian.ui" line="14"/>
         <source>Form</source>
-        <translation type="unfinished">Formulář</translation>
+        <translation>Formulář</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterMedian.ui" line="51"/>
         <source><b>Smooth Profile (Median Method)</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Vyhladit profil (Metoda střední hodnoty)</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterMedian.ui" line="63"/>
         <source>Smooth deviation of the track points elevation with a Median filter of size </source>
-        <translation type="unfinished"></translation>
+        <translation>Zmenšit odchylku výšky cestovních bodů pomocí filtru střední hodnoty o velikosti </translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterMedian.ui" line="76"/>
         <source>points</source>
-        <translation type="unfinished"></translation>
+        <translation>Body</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterMedian.ui" line="105"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2255,22 +2358,22 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/trk/filter/IFilterNewDate.ui" line="14"/>
         <source>Form</source>
-        <translation type="unfinished">Formulář</translation>
+        <translation>Formulář</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterNewDate.ui" line="35"/>
         <source><b>Change Time</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Změnit čas</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterNewDate.ui" line="44"/>
         <source>Change start of track to </source>
-        <translation type="unfinished"></translation>
+        <translation>Změnit začáteční čas stopy na </translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterNewDate.ui" line="71"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2278,32 +2381,32 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="14"/>
         <source>Form</source>
-        <translation type="unfinished">Formulář</translation>
+        <translation>Formulář</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="45"/>
         <source><b>Obscure Timestamps</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Zastřít časová razítka</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="54"/>
         <source>Increase timestamp by</source>
-        <translation type="unfinished"></translation>
+        <translation>Zvětšit časové razítko o </translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="61"/>
         <source> sec.</source>
-        <translation type="unfinished"></translation>
+        <translation> s</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="68"/>
         <source>with each track point. 0 sec. will remove timestamps.</source>
-        <translation type="unfinished"></translation>
+        <translation>pro každý cestovní bod. 0 s odstraní všechna časová razítka.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="88"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2311,27 +2414,27 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="14"/>
         <source>Form</source>
-        <translation type="unfinished">Formulář</translation>
+        <translation>Formulář</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="51"/>
         <source><b>Offset Elevation</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Vyrovnat výšku</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="69"/>
         <source>Add offset of</source>
-        <translation type="unfinished"></translation>
+        <translation>Přidat posun </translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="95"/>
         <source>to track points elevation.</source>
-        <translation type="unfinished"></translation>
+        <translation>ke každé výšce cestovního bodu.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="115"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2339,21 +2442,44 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="14"/>
         <source>Form</source>
-        <translation type="unfinished">Formulář</translation>
+        <translation>Formulář</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="51"/>
         <source><b>Replace Elevation Data</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Nahradit data výšky</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="63"/>
         <source>Replace elevation of track points with the values from loaded DEM files.</source>
-        <translation type="unfinished"></translation>
+        <translation>Nahradit výšková data cestovních bodů daty z nahraných souborů s digitálními výškovými modely.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="70"/>
         <source>...</source>
+        <translation>...</translation>
+    </message>
+</context>
+<context>
+    <name>IFilterReset</name>
+    <message>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished">Formulář</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="35"/>
+        <source><b>Reset Hidden Track Points</b></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="47"/>
+        <source>Make all trackpoints visible again.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="54"/>
+        <source>...</source>
         <translation type="unfinished">...</translation>
     </message>
 </context>
@@ -2362,27 +2488,27 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/trk/filter/IFilterSpeed.ui" line="14"/>
         <source>Form</source>
-        <translation type="unfinished">Formulář</translation>
+        <translation>Formulář</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterSpeed.ui" line="35"/>
         <source><b>Change Speed</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Změnit rychlost</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterSpeed.ui" line="44"/>
         <source>Set speed to </source>
-        <translation type="unfinished"></translation>
+        <translation>Změnit rychlost na </translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterSpeed.ui" line="51"/>
         <source> km/h</source>
-        <translation type="unfinished"></translation>
+        <translation> km/h</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterSpeed.ui" line="102"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2400,12 +2526,12 @@ není platným vymezením soustavy souřadnic
         <location filename="../gis/IGisWidget.ui" line="65"/>
         <location filename="../gis/IGisWidget.ui" line="97"/>
         <source>Name</source>
-        <translation type="unfinished"></translation>
+        <translation>Název</translation>
     </message>
     <message>
         <location filename="../gis/IGisWidget.ui" line="130"/>
         <source>To add a database do a right click on the database list above.</source>
-        <translation type="unfinished"></translation>
+        <translation>Pro přidání databáze klepněte pravým tlačítkem myši na seznam s databázemi výše.</translation>
     </message>
 </context>
 <context>
@@ -2459,34 +2585,34 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../qlgt/IImportDatabase.ui" line="14"/>
         <source>Form</source>
-        <translation type="unfinished">Formulář</translation>
+        <translation>Formulář</translation>
     </message>
     <message>
         <location filename="../qlgt/IImportDatabase.ui" line="28"/>
         <source>Source Database:</source>
-        <translation type="unfinished"></translation>
+        <translation>Zdrojová databáze:</translation>
     </message>
     <message>
         <location filename="../qlgt/IImportDatabase.ui" line="35"/>
         <location filename="../qlgt/IImportDatabase.ui" line="76"/>
         <source>-</source>
-        <translation type="unfinished">-</translation>
+        <translation>-</translation>
     </message>
     <message>
         <location filename="../qlgt/IImportDatabase.ui" line="42"/>
         <location filename="../qlgt/IImportDatabase.ui" line="83"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
     <message>
         <location filename="../qlgt/IImportDatabase.ui" line="69"/>
         <source>Target Database:</source>
-        <translation type="unfinished"></translation>
+        <translation>Cílová databáze:</translation>
     </message>
     <message>
         <location filename="../qlgt/IImportDatabase.ui" line="102"/>
         <source>Start</source>
-        <translation type="unfinished"></translation>
+        <translation>Spustit</translation>
     </message>
 </context>
 <context>
@@ -2507,28 +2633,28 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="14"/>
         <source>Links...</source>
-        <translation type="unfinished"></translation>
+        <translation>Odkazy...</translation>
     </message>
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="23"/>
         <source>Type</source>
-        <translation type="unfinished"></translation>
+        <translation>Typ</translation>
     </message>
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="28"/>
         <source>Text</source>
-        <translation type="unfinished"></translation>
+        <translation>Text</translation>
     </message>
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="33"/>
         <source>Uri</source>
-        <translation type="unfinished"></translation>
+        <translation>URI</translation>
     </message>
     <message>
         <location filename="../helpers/ILinksDialog.ui" line="43"/>
         <location filename="../helpers/ILinksDialog.ui" line="63"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2556,7 +2682,7 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../IMainWindow.ui" line="94"/>
         <source>?</source>
-        <translation>Otázka</translation>
+        <translation>Nápověda</translation>
     </message>
     <message>
         <location filename="../IMainWindow.ui" line="101"/>
@@ -2566,7 +2692,7 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../IMainWindow.ui" line="111"/>
         <source>Tool</source>
-        <translation type="unfinished"></translation>
+        <translation>Nástroj</translation>
     </message>
     <message>
         <location filename="../IMainWindow.ui" line="128"/>
@@ -2584,170 +2710,180 @@ není platným vymezením soustavy souřadnic
         <translation>Data</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="211"/>
         <source>Add Map Workspace</source>
-        <translation>Přidat pracovní oblast mapy</translation>
+        <translation type="obsolete">Přidat pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="214"/>
+        <location filename="../IMainWindow.ui" line="217"/>
         <source>Ctrl+T</source>
         <translation>Ctrl+T</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="226"/>
+        <location filename="../IMainWindow.ui" line="229"/>
         <source>Show Scale</source>
         <translation>Ukázat měřítko</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="235"/>
+        <location filename="../IMainWindow.ui" line="238"/>
         <source>Setup Map Font</source>
         <translation>Nastavit písmo mapy</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="247"/>
+        <location filename="../IMainWindow.ui" line="250"/>
         <source>Show Grid</source>
         <translation>Ukázat mřížku</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="250"/>
+        <location filename="../IMainWindow.ui" line="253"/>
         <source>Ctrl+G</source>
         <translation>Ctrl+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="259"/>
+        <location filename="../IMainWindow.ui" line="262"/>
         <source>Setup Grid</source>
         <translation>Nastavit mřížku</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="262"/>
+        <location filename="../IMainWindow.ui" line="265"/>
         <source>Ctrl+Alt+G</source>
         <translation>Ctrl+Alt+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="274"/>
+        <location filename="../IMainWindow.ui" line="277"/>
         <source>Flip Mouse Wheel</source>
         <translation>Obrátit kolečko myši</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="283"/>
         <location filename="../IMainWindow.ui" line="286"/>
+        <location filename="../IMainWindow.ui" line="289"/>
         <source>Setup Map Paths</source>
         <translation>Nastavit cesty k mapám</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="298"/>
+        <location filename="../IMainWindow.ui" line="301"/>
         <source>POI Text</source>
         <translation>Text POI</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="310"/>
+        <location filename="../IMainWindow.ui" line="313"/>
         <source>Night / Day</source>
         <translation>Noc/Den</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="322"/>
+        <location filename="../IMainWindow.ui" line="325"/>
         <source>Map Tool Tip</source>
         <translation>Rada k nástroji pro mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="331"/>
+        <location filename="../IMainWindow.ui" line="334"/>
         <source>Setup DEM Paths</source>
         <translation>Nastavit cesty k DEM</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="340"/>
+        <location filename="../IMainWindow.ui" line="343"/>
         <source>About</source>
         <translation>O programu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="349"/>
+        <location filename="../IMainWindow.ui" line="352"/>
         <source>Help</source>
         <translation>Nápověda</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="358"/>
         <source>Setup Map Workspace</source>
-        <translation>Nastavit pracovní oblast mapy</translation>
+        <translation type="obsolete">Nastavit pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="367"/>
+        <location filename="../IMainWindow.ui" line="211"/>
+        <location filename="../IMainWindow.ui" line="214"/>
+        <source>Add Map View</source>
+        <translation>Přidat pohled na mapu</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="361"/>
+        <location filename="../IMainWindow.ui" line="364"/>
+        <source>Setup Map View</source>
+        <translation>Nastavit pohled na mapu</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="373"/>
         <source>Load GIS Data</source>
         <translation>Nahrát data GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="370"/>
+        <location filename="../IMainWindow.ui" line="376"/>
         <source>Load projects from file</source>
         <translation>Nahrát projekty ze souboru</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="373"/>
+        <location filename="../IMainWindow.ui" line="379"/>
         <source>Ctrl+L</source>
         <translation>Ctrl+L</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="382"/>
+        <location filename="../IMainWindow.ui" line="388"/>
         <source>Save All GIS Data</source>
         <translation>Uložit všechna data GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="385"/>
+        <location filename="../IMainWindow.ui" line="391"/>
         <source>Save all projects in the workspace</source>
-        <translation>Uložit všechny projekty v pracovní oblasti</translation>
+        <translation>Uložit všechny projekty na pracovním místě</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="388"/>
+        <location filename="../IMainWindow.ui" line="394"/>
         <source>Ctrl+S</source>
         <translation>Ctrl+S</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="397"/>
+        <location filename="../IMainWindow.ui" line="403"/>
         <source>Setup Time Zone</source>
         <translation>Nastavit časové pásmo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="406"/>
+        <location filename="../IMainWindow.ui" line="412"/>
         <source>Add empty project</source>
         <translation>Přidat prázdný projekt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="418"/>
+        <location filename="../IMainWindow.ui" line="424"/>
         <source>Search Google</source>
         <translation>Hledat pomocí Google</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="427"/>
+        <location filename="../IMainWindow.ui" line="433"/>
         <source>Close all projects</source>
         <translation>Zavřít všechny projekty</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="430"/>
+        <location filename="../IMainWindow.ui" line="436"/>
         <source>F8</source>
-        <translation type="unfinished"></translation>
+        <translation>F8</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="439"/>
+        <location filename="../IMainWindow.ui" line="445"/>
         <source>Setup Units</source>
         <translation>Nastavit jednotky</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="448"/>
+        <location filename="../IMainWindow.ui" line="454"/>
         <source>Setup Workspace</source>
-        <translation type="unfinished"></translation>
+        <translation>Nastavit pohled</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="451"/>
+        <location filename="../IMainWindow.ui" line="457"/>
         <source>Setup save on exit.</source>
-        <translation type="unfinished"></translation>
+        <translation>Nastavit uložení při ukončení.</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="460"/>
+        <location filename="../IMainWindow.ui" line="466"/>
         <source>Import Database from QLandkarte</source>
-        <translation type="unfinished"></translation>
+        <translation>Zavést databázi z QLandkarte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="463"/>
+        <location filename="../IMainWindow.ui" line="469"/>
         <source>Import QLandkarte GT database</source>
-        <translation type="unfinished"></translation>
+        <translation>Zavést databázi GT QLandkarte</translation>
     </message>
     <message>
         <source>Setup Database</source>
@@ -2868,30 +3004,44 @@ není platným vymezením soustavy souřadnic
 <context>
     <name>IMouseEditLine</name>
     <message>
-        <location filename="../mouse/IMouseEditLine.cpp" line="339"/>
+        <location filename="../mouse/IMouseEditLine.cpp" line="338"/>
         <source>Add points?</source>
         <translation>Přidat body?</translation>
     </message>
     <message>
-        <location filename="../mouse/IMouseEditLine.cpp" line="339"/>
+        <location filename="../mouse/IMouseEditLine.cpp" line="338"/>
         <source>Add points to temporary line?</source>
         <translation>Přidat body do dočasné čáry?</translation>
     </message>
     <message>
-        <location filename="../mouse/IMouseEditLine.cpp" line="876"/>
+        <location filename="../mouse/IMouseEditLine.cpp" line="881"/>
         <source>Warning!</source>
         <translation>Varování!</translation>
     </message>
     <message>
-        <location filename="../mouse/IMouseEditLine.cpp" line="876"/>
+        <location filename="../mouse/IMouseEditLine.cpp" line="881"/>
         <source>This will replace all data of the orignal by a simple line of coordinates. All other data will be lost permanently.</source>
         <translation>Tímto budou všechny původní údaje nahrazeny jednoduchou čárou souřadnic. Všechna ostatní data budou trvale ztracena.</translation>
     </message>
 </context>
 <context>
+    <name>IPhotoAlbum</name>
+    <message>
+        <location filename="../helpers/IPhotoAlbum.ui" line="20"/>
+        <source>Form</source>
+        <translation type="unfinished">Formulář</translation>
+    </message>
+    <message>
+        <location filename="../helpers/IPhotoAlbum.ui" line="50"/>
+        <location filename="../helpers/IPhotoAlbum.ui" line="77"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+</context>
+<context>
     <name>IPlot</name>
     <message>
-        <location filename="../plot/IPlot.cpp" line="465"/>
+        <location filename="../plot/IPlot.cpp" line="481"/>
         <source>No or bad data.</source>
         <translation>Žádné nebo špatné údaje.</translation>
     </message>
@@ -3052,7 +3202,7 @@ nebo
     <message>
         <location filename="../gis/ovl/IScrOptOvlArea.ui" line="51"/>
         <source>Copy area into another project.</source>
-        <translation type="unfinished"></translation>
+        <translation>Kopírovat oblast do dalšího projektu.</translation>
     </message>
     <message>
         <location filename="../gis/ovl/IScrOptOvlArea.ui" line="112"/>
@@ -3177,7 +3327,7 @@ nebo
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="42"/>
         <source>Copy route into another project.</source>
-        <translation type="unfinished"></translation>
+        <translation>Kopírovat cestu do dalšího projektu.</translation>
     </message>
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="56"/>
@@ -3205,7 +3355,7 @@ nebo
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="54"/>
         <source>Copy track into another project.</source>
-        <translation type="unfinished"></translation>
+        <translation>Kopírovat stopu do dalšího projektu.</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="68"/>
@@ -3230,7 +3380,7 @@ nebo
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="106"/>
         <source>Select a range of points.</source>
-        <translation type="unfinished">Vybrat rozsah bodů.</translation>
+        <translation>Vybrat rozsah bodů.</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="134"/>
@@ -3293,7 +3443,7 @@ nebo
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="63"/>
         <source>Copy waypoint into another project.</source>
-        <translation type="unfinished"></translation>
+        <translation>Kopírovat cestovní bod do dalšího projektu.</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="77"/>
@@ -3321,12 +3471,12 @@ nebo
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="14"/>
         <source>Copy item...</source>
-        <translation type="unfinished"></translation>
+        <translation>Kopírovat prvek...</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="23"/>
         <source>Replace existing item</source>
-        <translation type="unfinished"></translation>
+        <translation>Nahradit stávající prvek</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="30"/>
@@ -3334,37 +3484,37 @@ nebo
         <location filename="../helpers/ISelectCopyAction.ui" line="67"/>
         <location filename="../helpers/ISelectCopyAction.ui" line="77"/>
         <source>TextLabel</source>
-        <translation type="unfinished">Textový štítek</translation>
+        <translation>Textový štítek</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="60"/>
         <source>Do not copy item</source>
-        <translation type="unfinished"></translation>
+        <translation>Nekopírovat prvek</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="97"/>
         <source>Create a clone</source>
-        <translation type="unfinished"></translation>
+        <translation>Vytvořit klon</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="104"/>
         <source>Replace with:</source>
-        <translation type="unfinished"></translation>
+        <translation>Nahradit:</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="111"/>
         <source>Keep item:</source>
-        <translation type="unfinished"></translation>
+        <translation>Zachovat prvek:</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="118"/>
         <source>The clone's name will be appended with '_Clone'</source>
-        <translation type="unfinished"></translation>
+        <translation>Název klonu bude rozšířen o '_Klon'</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="132"/>
         <source>And for all other items, too.</source>
-        <translation type="unfinished"></translation>
+        <translation>A také pro všechny další prvky.</translation>
     </message>
 </context>
 <context>
@@ -3431,38 +3581,38 @@ nebo
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="14"/>
         <source>Add database...</source>
-        <translation type="unfinished"></translation>
+        <translation>Přidat databázi...</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="25"/>
         <source>File</source>
-        <translation type="unfinished">Soubor</translation>
+        <translation>Soubor</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="32"/>
         <source>-</source>
-        <translation type="unfinished">-</translation>
+        <translation>-</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="39"/>
         <source>Name</source>
-        <translation type="unfinished"></translation>
+        <translation>Název</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="46"/>
         <source>Add new database.</source>
-        <translation type="unfinished"></translation>
+        <translation>Přidat novou databázi.</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="49"/>
         <location filename="../gis/db/ISetupDatabase.ui" line="63"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="60"/>
         <source>Open existing database.</source>
-        <translation type="unfinished"></translation>
+        <translation>Otevřít stávající databázi.</translation>
     </message>
 </context>
 <context>
@@ -3470,45 +3620,49 @@ nebo
     <message>
         <location filename="../gis/db/ISetupFolder.ui" line="14"/>
         <source>Folder...</source>
-        <translation type="unfinished"></translation>
+        <translation>Složka...</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupFolder.ui" line="22"/>
         <source>Name</source>
-        <translation type="unfinished"></translation>
+        <translation>Název</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupFolder.ui" line="34"/>
         <source>Group</source>
-        <translation type="unfinished"></translation>
+        <translation>Skupina</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupFolder.ui" line="45"/>
         <source>Project</source>
-        <translation type="unfinished">Projekt</translation>
+        <translation>Projekt</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupFolder.ui" line="59"/>
         <source>Other</source>
-        <translation type="unfinished"></translation>
+        <translation>Jiné</translation>
     </message>
 </context>
 <context>
     <name>ISetupWorkspace</name>
     <message>
-        <location filename="../gis/db/ISetupWorkspace.ui" line="14"/>
         <source>Setup database...</source>
-        <translation type="unfinished">Nastavit databázi...</translation>
+        <translation type="obsolete">Nastavit databázi...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="14"/>
+        <source>Setup workspace...</source>
+        <translation>Nastavit pracovní oblast...</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupWorkspace.ui" line="35"/>
         <source>save workspace on exit, and every</source>
-        <translation type="unfinished">Uložit pracovní oblast při ukončení, a každých</translation>
+        <translation>Uložit pracovní oblast při ukončení, a každých</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupWorkspace.ui" line="45"/>
         <source>minutes</source>
-        <translation type="unfinished">minut</translation>
+        <translation>minut</translation>
     </message>
 </context>
 <context>
@@ -3540,122 +3694,122 @@ nebo
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="263"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="256"/>
         <source>Undo</source>
         <translation>Zpět</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="266"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="259"/>
         <source>Ctrl+Z</source>
         <translation>Ctrl+Z</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="275"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="268"/>
         <source>Redo</source>
         <translation>Znovu</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="278"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="271"/>
         <source>Ctrl+Shift+Z</source>
         <translation>Ctrl+Shift+Z</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="287"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="280"/>
         <source>Cut</source>
         <translation>Vyjmout</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="290"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="283"/>
         <source>Ctrl+X</source>
         <translation>Ctrl+X</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="299"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="292"/>
         <source>Copy</source>
         <translation>Kopírovat</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="302"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="295"/>
         <source>Ctrl+C</source>
         <translation>Ctrl+C</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="311"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="304"/>
         <source>Paste</source>
         <translation>Vložit</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="314"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="307"/>
         <source>Ctrl+V</source>
         <translation>Ctrl+V</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="326"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="319"/>
         <source>Align Left</source>
         <translation>Zarovnat vlevo</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="329"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="322"/>
         <source>Ctrl+L</source>
         <translation>Ctrl+L</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="341"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="334"/>
         <source>Align Right</source>
         <translation>Zarovnat vpravo</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="344"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="337"/>
         <source>Ctrl+R</source>
         <translation>Ctrl+R</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="356"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="349"/>
         <source>Align Center</source>
         <translation>Zarovnat na střed</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="359"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="352"/>
         <source>Ctrl+E</source>
         <translation>Ctrl+E</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="371"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="364"/>
         <source>Align Block</source>
         <translation>Zarovnat do bloku</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="374"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="367"/>
         <source>Ctrl+J</source>
         <translation>Ctrl+J</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="386"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="379"/>
         <source>Underline</source>
         <translation>Podtržení</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="389"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="382"/>
         <source>Ctrl+U</source>
         <translation>Ctrl+U</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="401"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="394"/>
         <source>Bold</source>
         <translation>Tučné</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="404"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="397"/>
         <source>Ctrl+B</source>
         <translation>Ctrl+B</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="416"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="409"/>
         <source>Italic</source>
         <translation>Kurzíva</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="419"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="412"/>
         <source>Ctrl+I</source>
         <translation>Ctrl+I</translation>
     </message>
@@ -3777,211 +3931,212 @@ Areas: %1</source>
 Oblasti: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="168"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="165"/>
         <source><br/>
 Filename: %1</source>
-        <translation type="unfinished"></translation>
+        <translation><br/>
+Název souboru: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="185"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="182"/>
         <source>Waypoints: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Cestovní body: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="189"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="186"/>
         <source>Tracks: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Stopy: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="193"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="190"/>
         <source>Routes: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Cesty: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="197"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="194"/>
         <source>Areas: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Oblasti: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="255"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="250"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
         <translation>Jste si jistý, že chcete smazat '%1' z projektu '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="410"/>
+        <location filename="../gis/CGisListDB.cpp" line="406"/>
         <source>Are you sure you want to delete '%1' from folder '%2'?</source>
-        <translation type="unfinished"></translation>
+        <translation>Jste si jistý, že chcete smazat '%1' ze složky '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="411"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="256"/>
+        <location filename="../gis/CGisListDB.cpp" line="407"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="251"/>
         <source>Delete...</source>
         <translation>Smazat...</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="53"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="145"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="143"/>
         <source>Failed to open...</source>
         <translation>Nepodařilo se otevřít...</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="53"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="145"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="143"/>
         <source>Failed to open %1</source>
         <translation>Nepodařilo se otevřít %1</translation>
     </message>
     <message>
         <location filename="../gis/db/CDBProject.cpp" line="125"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="155"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="95"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="154"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="93"/>
         <source>Save GIS data to...</source>
         <translation>Uložit data GIS do...</translation>
     </message>
     <message>
         <location filename="../gis/db/CDBProject.cpp" line="157"/>
         <source>Save ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Uložit...</translation>
     </message>
     <message>
         <location filename="../gis/db/CDBProject.cpp" line="157"/>
         <source>Abort save</source>
-        <translation type="unfinished"></translation>
+        <translation>Zrušit ukládání</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="231"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="229"/>
         <source>File exists ...</source>
         <translation>Soubor existuje...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="232"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="230"/>
         <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>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="298"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="308"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="296"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="306"/>
         <source>Saveing GIS data failed...</source>
         <translation>Nepodařilo se uložit data GIS...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="298"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="296"/>
         <source>Failed to create file '%1'</source>
         <translation>Nepodařilo se vytvořit soubor '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="308"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="306"/>
         <source>Failed to write file '%1'</source>
         <translation>Nepodařilo se zapsat soubor '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="286"/>
+        <location filename="../gis/IGisItem.cpp" line="292"/>
         <source>Initial version.</source>
         <translation>Počáteční verze.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="370"/>
+        <location filename="../gis/IGisItem.cpp" line="376"/>
         <source>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>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="371"/>
+        <location filename="../gis/IGisItem.cpp" line="377"/>
         <source>Read Only Mode...</source>
         <translation>Režim pouze pro čtení...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="560"/>
+        <location filename="../gis/IGisItem.cpp" line="575"/>
         <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="563"/>
+        <location filename="../gis/IGisItem.cpp" line="578"/>
         <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="570"/>
-        <location filename="../gis/IGisItem.cpp" line="600"/>
+        <location filename="../gis/IGisItem.cpp" line="589"/>
+        <location filename="../gis/IGisItem.cpp" line="634"/>
         <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="573"/>
-        <location filename="../gis/IGisItem.cpp" line="603"/>
+        <location filename="../gis/IGisItem.cpp" line="592"/>
+        <location filename="../gis/IGisItem.cpp" line="637"/>
         <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="580"/>
-        <location filename="../gis/IGisItem.cpp" line="610"/>
+        <location filename="../gis/IGisItem.cpp" line="603"/>
+        <location filename="../gis/IGisItem.cpp" line="648"/>
         <source><h4>Links:</h4></source>
-        <translation type="unfinished"></translation>
+        <translation><h4>Odkazy:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="583"/>
-        <location filename="../gis/IGisItem.cpp" line="613"/>
+        <location filename="../gis/IGisItem.cpp" line="606"/>
+        <location filename="../gis/IGisItem.cpp" line="651"/>
         <source><p>--- no links ---</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>--- žádné odkazy ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="334"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="332"/>
         <source>Length: %1 %2</source>
         <translation>Délka: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="341"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="339"/>
         <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="349"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="347"/>
         <source>Time: %1</source>
         <translation>Čas: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="352"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="362"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="350"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="360"/>
         <source>, Speed: %1 %2</source>
         <translation>, Rychlost: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="359"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="357"/>
         <source>Moving: %1</source>
         <translation>Pohyb: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="368"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="366"/>
         <source>Start: %1</source>
         <translation>Začátek: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="373"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="371"/>
         <source>End: %1</source>
         <translation>Konec: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="377"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="375"/>
         <source>Points: %1 (%2)</source>
         <translation>Body: %1 (%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="442"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="440"/>
         <source>Ele.: %1 %2</source>
         <translation>Výška: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="445"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="443"/>
         <source> slope: %1%3 (%2%)</source>
         <translation> sklon: %1%3 (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="973"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1089"/>
         <source>Hide points.</source>
         <translation>Skrýt body.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1007"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1123"/>
         <source>Show points.</source>
         <translation>Ukázat body.</translation>
     </message>
@@ -3990,37 +4145,37 @@ Filename: %1</source>
         <translation type="obsolete"> sklon: %1°(%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="450"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="448"/>
         <source> speed: %1%2</source>
         <translation> rychlost: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="462"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="460"/>
         <source>Ascend: %1%2 (%3%)</source>
         <translation>Stoupání: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="466"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="464"/>
         <source>Ascend: - (-)</source>
         <translation>Stoupání: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="476"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="474"/>
         <source> Descend: - (-) </source>
         <translation> Klesání: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="497"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="495"/>
         <source> Moving: - (-) </source>
         <translation> Pohyb: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="472"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="470"/>
         <source> Descend: %1%2 (%3%)</source>
         <translation> Klesání: %1%2 (%3%) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="267"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="265"/>
         <source>Changed trackpoints, sacrificed all previous data.</source>
         <translation>Změněny body stop. Obětována veškerá předchozí data.</translation>
     </message>
@@ -4029,203 +4184,211 @@ Filename: %1</source>
         <translation type="obsolete"> sklon: %1° (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="483"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="481"/>
         <source>Dist.: %1%2 (%3%)</source>
         <translation>Vzdálenost: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="487"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="485"/>
         <source>Dist.: - (-)</source>
         <translation>Vzdálenost: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="493"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="491"/>
         <source> Moving: %1%2 (%3%)</source>
         <translation> Pohyb: %1%2 (%3%) </translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="96"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="95"/>
         <source>thin</source>
         <translation>Tenký</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="97"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="96"/>
         <source>normal</source>
         <translation>Obvyklý</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="98"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="97"/>
         <source>wide</source>
         <translation>Široký</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="99"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="98"/>
         <source>strong</source>
         <translation>Silný</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="144"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="141"/>
         <location filename="../gis/rte/CGisItemRte.cpp" line="44"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="164"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="103"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="161"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="101"/>
         <source>_Clone</source>
-        <translation type="unfinished"></translation>
+        <translation>_Klon</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="409"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="417"/>
         <source>Area: %1%2</source>
-        <translation type="unfinished"></translation>
+        <translation>Oblast: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="461"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="475"/>
         <source>Changed area shape.</source>
         <translation>Změněn tvar oblasti.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="469"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="483"/>
         <source>Changed name.</source>
         <translation>Změněn název.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="475"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="489"/>
         <source>Changed border width.</source>
         <translation>Změněna šířka okraje.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="481"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="495"/>
         <source>Changed fill pattern.</source>
         <translation>Změněn vzor výplně.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="487"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="501"/>
         <source>Changed opacity.</source>
         <translation>Změněna neprůhlednost.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="493"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="507"/>
         <source>Changed comment.</source>
         <translation>Změněna poznámka.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="499"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="513"/>
         <source>Changed description.</source>
         <translation>Změněn popis.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="505"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1312"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="347"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="519"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="138"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1428"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="359"/>
         <source>Changed links</source>
-        <translation type="unfinished"></translation>
+        <translation>Změněné odkazy</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="517"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1324"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="531"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1440"/>
         <source>Changed color</source>
         <translation>Změněná barva</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="225"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="228"/>
         <source>Elevation: %1 %2</source>
         <translation>Výška: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="233"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="239"/>
         <source>Proximity: %1 %2</source>
         <translation>Blízkost: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1294"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="298"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1410"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="310"/>
         <source>Changed name</source>
         <translation>Změněný název</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="813"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="828"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="849"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="899"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1032"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="179"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="909"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="924"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="943"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1002"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1148"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="176"/>
         <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
         <source>Edit name...</source>
         <translation>Upravit název...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="179"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="176"/>
         <source>Enter new waypoint name.</source>
         <translation>Zadat nový název pro cestovní bod.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="305"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="317"/>
         <source>Changed position</source>
         <translation>Změněná poloha</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="311"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="323"/>
         <source>Changed elevation</source>
         <translation>Změněná výška</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="317"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="329"/>
         <source>Changed proximity</source>
         <translation>Změněná blízkost</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="329"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="341"/>
         <source>Changed icon</source>
         <translation>Změněná ikona</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1300"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="335"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="365"/>
+        <source>Changed images</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="126"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1416"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="347"/>
         <source>Changed comment</source>
         <translation>Změněná poznámka</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1306"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="341"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="132"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1422"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="353"/>
         <source>Changed description</source>
         <translation>Změněný popis</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="515"/>
+        <location filename="../gis/gpx/serialization.cpp" line="507"/>
         <source>Archived</source>
         <translation>Archivováno</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="519"/>
+        <location filename="../gis/gpx/serialization.cpp" line="511"/>
         <source>Available</source>
         <translation>Dostupné</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="523"/>
+        <location filename="../gis/gpx/serialization.cpp" line="515"/>
         <source>Not Available</source>
         <translation>Nedostupné</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="459"/>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="834"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="463"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="844"/>
         <source>Warning...</source>
         <translation>Varování...</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="459"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="463"/>
         <source>This is a typ file with unknown polygon encoding. Please report!</source>
         <translation>Toto je souborový typ s neznámým druhem mnohoúhelníku. Nahlašte to, prosím!</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="834"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="844"/>
         <source>This is a typ file with unknown polyline encoding. Please report!</source>
         <translation>Toto je souborový typ s neznámým druhem čáry. Nahlašte to, prosím!</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="813"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="828"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="849"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="899"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1032"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="909"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="924"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="943"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1002"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1148"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
         <source>Enter new track name.</source>
         <translation>Zadat název nové stopy.</translation>
@@ -4239,92 +4402,97 @@ Filename: %1</source>
         <location filename="../gis/db/CDBFolderDatabase.cpp" line="28"/>
         <location filename="../gis/db/CDBFolderLostFound.cpp" line="30"/>
         <source>All your data grouped by folders.</source>
-        <translation type="unfinished"></translation>
+        <translation>Všechna data seskupená podle složek.</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="67"/>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="66"/>
         <location filename="../gis/db/CLostFoundProject.cpp" line="39"/>
         <source>Lost & Found</source>
-        <translation type="unfinished"></translation>
+        <translation>Ztraceno a nalezeno</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="62"/>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="61"/>
         <source>Lost & Found (%1)</source>
-        <translation type="unfinished"></translation>
+        <translation>Ztraceno a nalezeno (%1)</translation>
     </message>
     <message>
-        <location filename="../qlgt/converter.cpp" line="196"/>
+        <location filename="../qlgt/converter.cpp" line="194"/>
         <source>Copy flag information from QLandkarte GT track</source>
-        <translation type="unfinished"></translation>
+        <translation>Kopírovat informační příznak ze stopy QLandkarte GT</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="158"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="212"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="259"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="285"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="162"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="216"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="263"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="289"/>
         <source>Corrupt track ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Poškozená stopa...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="158"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="162"/>
         <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
-        <translation type="unfinished"></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="212"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="216"/>
         <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
-        <translation type="unfinished"></translation>
+        <translation>Počet bodů stopy neodpovídá počtu rozšířených bodů stopy.</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="259"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="285"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="263"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="289"/>
         <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
-        <translation type="unfinished"></translation>
+        <translation>Počet bodů stopy neodpovídá počtu stínových bodů stopy.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="96"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="95"/>
         <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
+        <translation>Skrýt body pomocí algoritmu Douglas Peuker (%1%2)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="111"/>
+        <source>Reset all hidden track points to visible</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="122"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="136"/>
         <source>Permanently removed all hidden track points</source>
-        <translation type="unfinished"></translation>
+        <translation>Všechny skryté body stopy odstraněné trvale</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="173"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="186"/>
         <source>Smoothed profile with a Median filter of size %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Profil vyhlazen středovým filtrem o velikosti %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="210"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="222"/>
         <source>Replaced elevation data with data from DEM files.</source>
-        <translation type="unfinished"></translation>
+        <translation>Výšková data nahrazena daty ze souborů s digitálním výškovým modelem.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="234"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="245"/>
         <source>Offset elevation data by %1%2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Výšková data posunuta o %1%2.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="254"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="264"/>
         <source>Changed start of track to %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Začátek stopy změněn na %1.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="273"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="283"/>
         <source>Remove timestamps.</source>
-        <translation type="unfinished"></translation>
+        <translation>Odstranit časová razítka.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="296"/>
-        <source>Set artifical timestamps with delta of %1 sec.</source>
-        <translation type="unfinished"></translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="306"/>
+        <source>Set artificial timestamps with delta of %1 sec.</source>
+        <translation>Uměle utvořená časová razítka nastavena s odstupem %1 s.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="330"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="339"/>
         <source>Changed speed to %1%2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Rychlost změněna na %1%2.</translation>
     </message>
 </context>
 </TS>
diff --git a/src/locale/qmapshack_de.ts b/src/locale/qmapshack_de.ts
index 7e6377d..fa126a7 100644
--- a/src/locale/qmapshack_de.ts
+++ b/src/locale/qmapshack_de.ts
@@ -1,23 +1,27 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.1" language="de_DE">
+<TS version="2.0" language="de_DE">
 <context>
     <name>CCanvas</name>
     <message>
-        <location filename="../canvas/CCanvas.cpp" line="59"/>
         <source>Workspace %1</source>
+        <translation type="obsolete">Ansicht %1</translation>
+    </message>
+    <message>
+        <location filename="../canvas/CCanvas.cpp" line="59"/>
+        <source>View %1</source>
         <translation>Ansicht %1</translation>
     </message>
 </context>
 <context>
     <name>CDemList</name>
     <message>
-        <location filename="../dem/CDemList.cpp" line="143"/>
+        <location filename="../dem/CDemList.cpp" line="145"/>
         <source>Deactivate</source>
         <translation>Deaktivieren</translation>
     </message>
     <message>
-        <location filename="../dem/CDemList.cpp" line="143"/>
+        <location filename="../dem/CDemList.cpp" line="145"/>
         <source>Activate</source>
         <translation>Aktivieren</translation>
     </message>
@@ -30,7 +34,7 @@
         <translation>Hinzufügen oder Entfernen von Verzeichnissen mit DEM Daten. Im Verzeichnis können mehrere Dateien vorliegen. Allerdings wird kein Unterverzeichnis durchsucht. Unterstützte Formate sind: %1</translation>
     </message>
     <message>
-        <location filename="../dem/CDemPathSetup.cpp" line="55"/>
+        <location filename="../dem/CDemPathSetup.cpp" line="54"/>
         <source>Select DEM file path...</source>
         <translation>Pfad für DEM Dateien wählen...</translation>
     </message>
@@ -38,7 +42,7 @@
 <context>
     <name>CDemPropSetup</name>
     <message>
-        <location filename="../dem/CDemPropSetup.cpp" line="187"/>
+        <location filename="../dem/CDemPropSetup.cpp" line="183"/>
         <source><b>Grade %1</b></source>
         <translation><b>Stufe %1</b></translation>
     </message>
@@ -83,7 +87,7 @@
     </message>
     <message>
         <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="58"/>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="101"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="102"/>
         <source>???</source>
         <translation></translation>
     </message>
@@ -91,12 +95,12 @@
 <context>
     <name>CDetailsOvlArea</name>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="131"/>
+        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
         <source>Edit name...</source>
         <translation>Name bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="131"/>
+        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
         <source>Enter new waypoint name.</source>
         <translation>Geben Sie einen neuen Namen ein.</translation>
     </message>
@@ -120,32 +124,78 @@
 <context>
     <name>CDetailsPrj</name>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="56"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="84"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="165"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="380"/>
         <source>none</source>
-        <translation>keiner</translation>
+        <translation>keine</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="229"/>
+        <source>Build diary...</source>
+        <translation>Erstelle Tagebuch...</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="229"/>
+        <source>Abort</source>
+        <translation>Abbrechen</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="234"/>
+        <source><h2>Waypoints</h2></source>
+        <translation><h2>Wegpunkte</h2></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="241"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="272"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="337"/>
+        <source>Info</source>
+        <translation>Information</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="242"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="273"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="338"/>
+        <source>Comment</source>
+        <translation>Kommentar</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="265"/>
+        <source><h2>Tracks</h2></source>
+        <translation><h2>Tracks</h2></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="330"/>
+        <source><h2>Areas</h2></source>
+        <translation><h2>Flächen</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="70"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="366"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="393"/>
         <source>Edit name...</source>
         <translation>Name bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="70"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="366"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="393"/>
         <source>Enter new project name.</source>
         <translation>Geben Sie einen Projektnamen ein.</translation>
     </message>
     <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="509"/>
+        <source>Print Diary</source>
+        <translation>Tagebuch drucken</translation>
+    </message>
+    <message>
         <source>Enter new waypoint name.</source>
         <translation type="obsolete">Name eingeben.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="79"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="375"/>
         <source>Edit keywords...</source>
         <translation>Stichwörter bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="79"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="375"/>
         <source>Enter keywords.</source>
         <translation>Stichwörter eingeben.</translation>
     </message>
@@ -153,32 +203,32 @@
 <context>
     <name>CDetailsTrk</name>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="56"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="57"/>
         <source>Reduce visible track points</source>
         <translation>Die Anzahl der sichtbaren Trackpunkte reduzieren</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="66"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="70"/>
         <source>Change elevation of track points</source>
         <translation>Die Höheninformation der Trackpunkte ändern</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="79"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="83"/>
         <source>Change timestamp of track points</source>
         <translation>Die Zeitmarken der Trackpunkte ändern</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="92"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="96"/>
         <source>Cut track into pieces</source>
         <translation>Den Track in Stücke zerschneiden</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="206"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="215"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="218"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="224"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="243"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="245"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="210"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="219"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="222"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="228"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="247"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="249"/>
         <source>%1 %2</source>
         <translation></translation>
     </message>
@@ -226,12 +276,12 @@
         <translation type="obsolete"><p>--- keine Beschreibung ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="130"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="151"/>
         <source>Edit name...</source>
         <translation>Name bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="130"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="151"/>
         <source>Enter new waypoint name.</source>
         <translation>Geben Sie einen neuen Namen ein.</translation>
     </message>
@@ -240,7 +290,7 @@
         <translation type="obsolete">Geben Sie eine Höhe ein.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="149"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="170"/>
         <source>Enter new proximity range.</source>
         <translation>Geben Sie einen Abstandsalarm ein.</translation>
     </message>
@@ -248,7 +298,7 @@
 <context>
     <name>CElevationDialog</name>
     <message>
-        <location filename="../helpers/CElevationDialog.cpp" line="85"/>
+        <location filename="../helpers/CElevationDialog.cpp" line="83"/>
         <source>No DEM data found for that point.</source>
         <translation>Keine Höhendaten für diesen Punkt gefunden.</translation>
     </message>
@@ -264,12 +314,12 @@
         <translation type="obsolete">Datenbank</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="77"/>
+        <location filename="../gis/CGisListDB.cpp" line="76"/>
         <source>Add Folder</source>
         <translation>Ordner hinzufügen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="78"/>
+        <location filename="../gis/CGisListDB.cpp" line="77"/>
         <source>Delete Folder</source>
         <translation>Ordner löschen</translation>
     </message>
@@ -278,59 +328,59 @@
         <translation type="obsolete">Löschen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="74"/>
+        <location filename="../gis/CGisListDB.cpp" line="73"/>
         <source>Add Database</source>
         <translation>Datenbank hinzufügen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="81"/>
-        <location filename="../gis/CGisListDB.cpp" line="91"/>
+        <location filename="../gis/CGisListDB.cpp" line="80"/>
+        <location filename="../gis/CGisListDB.cpp" line="90"/>
         <source>Delete Item</source>
         <translation>Element löschen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="85"/>
+        <location filename="../gis/CGisListDB.cpp" line="84"/>
         <source>Remove Database</source>
         <translation>Datenbank entfernen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="88"/>
+        <location filename="../gis/CGisListDB.cpp" line="87"/>
         <source>Empty</source>
         <translation>Leer</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="254"/>
+        <location filename="../gis/CGisListDB.cpp" line="251"/>
         <source>Remove database...</source>
         <translation>Datenbank entfernen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="254"/>
+        <location filename="../gis/CGisListDB.cpp" line="251"/>
         <source>Do you realy want to remove '%1' from the list?</source>
         <translation>Wollen Sie '%1' wirklich aus der Liste entfernen?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="295"/>
+        <location filename="../gis/CGisListDB.cpp" line="292"/>
         <source>Delete database folder...</source>
         <translation>Datenbankordner löschen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="295"/>
+        <location filename="../gis/CGisListDB.cpp" line="292"/>
         <source>Are you sure you want to delete "%1" from the database?</source>
         <translation>Sind Sie sicher, dass Sie "%1" aus der Datenbank löschen wollen? </translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="321"/>
-        <location filename="../gis/CGisListDB.cpp" line="336"/>
+        <location filename="../gis/CGisListDB.cpp" line="318"/>
+        <location filename="../gis/CGisListDB.cpp" line="333"/>
         <source>Remove items...</source>
         <translation>Element entfernen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="321"/>
+        <location filename="../gis/CGisListDB.cpp" line="318"/>
         <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
         <translation>Sind Sie sicher, dass Sie alle Elemente in Verloren & Gefunden löschen wollen? Sie werden für immer entfernt.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="336"/>
+        <location filename="../gis/CGisListDB.cpp" line="333"/>
         <source>Are you sure you want to delete all selected items from Lost&Found? This will remove them permanently.</source>
         <translation>Sind Sie sicher, dass Sie alle ausgewählten Elemente in Verloren & Gefunden löschen wollen? Sie werden für immer entfernt.</translation>
     </message>
@@ -348,27 +398,27 @@
         <translation>Speichern unter...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="84"/>
+        <location filename="../gis/CGisListWks.cpp" line="81"/>
         <source>Edit..</source>
         <translation>Bearbeiten..</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="85"/>
+        <location filename="../gis/CGisListWks.cpp" line="84"/>
         <source>Close</source>
         <translation>Schließen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="91"/>
+        <location filename="../gis/CGisListWks.cpp" line="90"/>
         <source>Edit...</source>
         <translation>Ändern...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="92"/>
+        <location filename="../gis/CGisListWks.cpp" line="91"/>
         <source>Copy to...</source>
         <translation>Kopieren nach...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="103"/>
         <source>Move Waypoint</source>
         <translation>Wegpunkt verschieben</translation>
     </message>
@@ -377,62 +427,62 @@
         <translation type="obsolete">Wegpunkt verschieben...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="105"/>
+        <location filename="../gis/CGisListWks.cpp" line="104"/>
         <source>Proj. Waypoint...</source>
         <translation>Wegpunkt Projektion...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="93"/>
+        <location filename="../gis/CGisListWks.cpp" line="92"/>
         <source>Track Profile</source>
         <translation>Trackprofil</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="95"/>
+        <location filename="../gis/CGisListWks.cpp" line="94"/>
         <source>Select Range</source>
         <translation>Bereich wählen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="96"/>
+        <location filename="../gis/CGisListWks.cpp" line="95"/>
         <source>Edit Track Points</source>
         <translation>Wegpunkte bearbeiten</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="97"/>
+        <location filename="../gis/CGisListWks.cpp" line="96"/>
         <source>Reverse Track</source>
         <translation>Track umkehren</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="98"/>
+        <location filename="../gis/CGisListWks.cpp" line="97"/>
         <source>Combine Tracks</source>
         <translation>Tracks verbinden</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="117"/>
+        <location filename="../gis/CGisListWks.cpp" line="116"/>
         <source>Edit Area Points</source>
         <translation>Flächenpunkte bearbeiten</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="99"/>
+        <location filename="../gis/CGisListWks.cpp" line="98"/>
         <source>Delete</source>
         <translation>Löschen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="567"/>
+        <location filename="../gis/CGisListWks.cpp" line="564"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Ansicht speichern. Bitte warten.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="608"/>
+        <location filename="../gis/CGisListWks.cpp" line="605"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Ansicht laden. Bitte warten.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1003"/>
+        <location filename="../gis/CGisListWks.cpp" line="1002"/>
         <source>Close all projects...</source>
         <translation>Alle Projkete schließen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1003"/>
+        <location filename="../gis/CGisListWks.cpp" line="1002"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Dies wird alle Projekte aus der Ansicht entfernen.</translation>
     </message>
@@ -448,12 +498,12 @@
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="349"/>
+        <location filename="../gis/CGisWidget.cpp" line="344"/>
         <source>Cut Track...</source>
         <translation>Track zerschneiden...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="349"/>
+        <location filename="../gis/CGisWidget.cpp" line="344"/>
         <source>Do you want to delete the original track?</source>
         <translation>Wollen sie den originalen Track löschen?</translation>
     </message>
@@ -465,12 +515,12 @@
         <translation type="obsolete">[Gitter: %1]</translation>
     </message>
     <message>
-        <location filename="../grid/CGrid.cpp" line="62"/>
+        <location filename="../grid/CGrid.cpp" line="61"/>
         <source>[Grid: %1%2%5 %3%4%5] </source>
         <translation>[Gitter: %1%2%5 %3%4%5] </translation>
     </message>
     <message>
-        <location filename="../grid/CGrid.cpp" line="66"/>
+        <location filename="../grid/CGrid.cpp" line="65"/>
         <source>[Grid: N %1m, E %2m] </source>
         <translation>[Gitter: N %1m, E %2m]</translation>
     </message>
@@ -478,7 +528,7 @@
 <context>
     <name>CHistoryListWidget</name>
     <message>
-        <location filename="../helpers/CHistoryListWidget.cpp" line="34"/>
+        <location filename="../helpers/CHistoryListWidget.cpp" line="33"/>
         <source>Cut history</source>
         <translation>Historie kürzen</translation>
     </message>
@@ -491,12 +541,12 @@
         <translation>Importiert eine QLandkarte Datenbank</translation>
     </message>
     <message>
-        <location filename="../qlgt/CImportDatabase.cpp" line="74"/>
+        <location filename="../qlgt/CImportDatabase.cpp" line="73"/>
         <source>Select source database...</source>
         <translation>Quelldatenbank wählen...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CImportDatabase.cpp" line="95"/>
+        <location filename="../qlgt/CImportDatabase.cpp" line="93"/>
         <source>Select target database...</source>
         <translation>Zieldatenbank wählen...</translation>
     </message>
@@ -512,12 +562,12 @@
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="441"/>
+        <location filename="../CMainWindow.cpp" line="440"/>
         <source>Ele: %1%2</source>
         <translation>Höhe: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="562"/>
+        <location filename="../CMainWindow.cpp" line="559"/>
         <source>Load GIS Data...</source>
         <translation>Lade GIS Daten...</translation>
     </message>
@@ -525,631 +575,631 @@
 <context>
     <name>CMapIMG</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="140"/>
+        <location filename="../map/CMapIMG.cpp" line="151"/>
         <source>Failed ...</source>
         <translation>Fehlgeschlagen...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="156"/>
+        <location filename="../map/CMapIMG.cpp" line="166"/>
         <source>Unspecified</source>
         <translation>Nicht angegeben</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="157"/>
+        <location filename="../map/CMapIMG.cpp" line="167"/>
         <source>French</source>
         <translation>Französisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="158"/>
+        <location filename="../map/CMapIMG.cpp" line="168"/>
         <source>German</source>
         <translation>Deutsch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="159"/>
+        <location filename="../map/CMapIMG.cpp" line="169"/>
         <source>Dutch</source>
         <translation>Niederländisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="160"/>
+        <location filename="../map/CMapIMG.cpp" line="170"/>
         <source>English</source>
         <translation>Englisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="161"/>
+        <location filename="../map/CMapIMG.cpp" line="171"/>
         <source>Italian</source>
         <translation>Italienisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="162"/>
+        <location filename="../map/CMapIMG.cpp" line="172"/>
         <source>Finnish</source>
         <translation>Finnisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="163"/>
+        <location filename="../map/CMapIMG.cpp" line="173"/>
         <source>Swedish</source>
         <translation>Schwedisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="164"/>
+        <location filename="../map/CMapIMG.cpp" line="174"/>
         <source>Spanish</source>
         <translation>Spanisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="165"/>
+        <location filename="../map/CMapIMG.cpp" line="175"/>
         <source>Basque</source>
         <translation>Baskisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="166"/>
+        <location filename="../map/CMapIMG.cpp" line="176"/>
         <source>Catalan</source>
         <translation>Catalanisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="167"/>
+        <location filename="../map/CMapIMG.cpp" line="177"/>
         <source>Galician</source>
         <translation>Galizisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="168"/>
+        <location filename="../map/CMapIMG.cpp" line="178"/>
         <source>Welsh</source>
         <translation>Walisisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="169"/>
+        <location filename="../map/CMapIMG.cpp" line="179"/>
         <source>Gaelic</source>
         <translation>Gälisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="170"/>
+        <location filename="../map/CMapIMG.cpp" line="180"/>
         <source>Danish</source>
         <translation>Dänisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="171"/>
+        <location filename="../map/CMapIMG.cpp" line="181"/>
         <source>Norwegian</source>
         <translation>Norwegisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="172"/>
+        <location filename="../map/CMapIMG.cpp" line="182"/>
         <source>Portuguese</source>
         <translation>Portugiesisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="173"/>
+        <location filename="../map/CMapIMG.cpp" line="183"/>
         <source>Slovak</source>
         <translation>Slovakisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="174"/>
+        <location filename="../map/CMapIMG.cpp" line="184"/>
         <source>Czech</source>
         <translation>Tschechisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="175"/>
+        <location filename="../map/CMapIMG.cpp" line="185"/>
         <source>Croatian</source>
         <translation>Kroatisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="176"/>
+        <location filename="../map/CMapIMG.cpp" line="186"/>
         <source>Hungarian</source>
         <translation>Ungarisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="177"/>
+        <location filename="../map/CMapIMG.cpp" line="187"/>
         <source>Polish</source>
         <translation>Polnisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="178"/>
+        <location filename="../map/CMapIMG.cpp" line="188"/>
         <source>Turkish</source>
         <translation>Türkisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="179"/>
+        <location filename="../map/CMapIMG.cpp" line="189"/>
         <source>Greek</source>
         <translation>Griechisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="180"/>
+        <location filename="../map/CMapIMG.cpp" line="190"/>
         <source>Slovenian</source>
         <translation>Slowenisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="181"/>
+        <location filename="../map/CMapIMG.cpp" line="191"/>
         <source>Russian</source>
         <translation>Russisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="182"/>
+        <location filename="../map/CMapIMG.cpp" line="192"/>
         <source>Estonian</source>
         <translation>Estnisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="183"/>
+        <location filename="../map/CMapIMG.cpp" line="193"/>
         <source>Latvian</source>
         <translation>Lettisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="184"/>
+        <location filename="../map/CMapIMG.cpp" line="194"/>
         <source>Romanian</source>
         <translation>Rumänisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="185"/>
+        <location filename="../map/CMapIMG.cpp" line="195"/>
         <source>Albanian</source>
         <translatorcomment>Albanisch</translatorcomment>
         <translation>Albanisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="186"/>
+        <location filename="../map/CMapIMG.cpp" line="196"/>
         <source>Bosnian</source>
         <translation>Bosnisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="187"/>
+        <location filename="../map/CMapIMG.cpp" line="197"/>
         <source>Lithuanian</source>
         <translation>Litauisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="188"/>
+        <location filename="../map/CMapIMG.cpp" line="198"/>
         <source>Serbian</source>
         <translation>Serbisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="189"/>
+        <location filename="../map/CMapIMG.cpp" line="199"/>
         <source>Macedonian</source>
         <translation>Makedonisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="190"/>
+        <location filename="../map/CMapIMG.cpp" line="200"/>
         <source>Bulgarian</source>
         <translation>Bulgarisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="247"/>
+        <location filename="../map/CMapIMG.cpp" line="257"/>
         <source>Major highway</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="248"/>
+        <location filename="../map/CMapIMG.cpp" line="258"/>
         <source>Principal highway</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="249"/>
+        <location filename="../map/CMapIMG.cpp" line="259"/>
         <source>Other highway</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="250"/>
+        <location filename="../map/CMapIMG.cpp" line="260"/>
         <source>Arterial road</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="251"/>
+        <location filename="../map/CMapIMG.cpp" line="261"/>
         <source>Collector road</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="252"/>
+        <location filename="../map/CMapIMG.cpp" line="262"/>
         <source>Residential street</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="253"/>
+        <location filename="../map/CMapIMG.cpp" line="263"/>
         <source>Alley/Private road</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="254"/>
+        <location filename="../map/CMapIMG.cpp" line="264"/>
         <source>Highway ramp, low speed</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="255"/>
+        <location filename="../map/CMapIMG.cpp" line="265"/>
         <source>Highway ramp, high speed</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="256"/>
+        <location filename="../map/CMapIMG.cpp" line="266"/>
         <source>Unpaved road</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="257"/>
+        <location filename="../map/CMapIMG.cpp" line="267"/>
         <source>Major highway connector</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="258"/>
+        <location filename="../map/CMapIMG.cpp" line="268"/>
         <source>Roundabout</source>
         <translation>Kreisverkehr</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="259"/>
+        <location filename="../map/CMapIMG.cpp" line="269"/>
         <source>Railroad</source>
         <translation>Eisenbahn</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="260"/>
+        <location filename="../map/CMapIMG.cpp" line="270"/>
         <source>Shoreline</source>
         <translation>Küstenlinie</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="261"/>
+        <location filename="../map/CMapIMG.cpp" line="271"/>
         <source>Trail</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="262"/>
+        <location filename="../map/CMapIMG.cpp" line="272"/>
         <source>Stream</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="263"/>
+        <location filename="../map/CMapIMG.cpp" line="273"/>
         <source>Time zone</source>
         <translation>Zeitzone</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="264"/>
-        <location filename="../map/CMapIMG.cpp" line="265"/>
+        <location filename="../map/CMapIMG.cpp" line="274"/>
+        <location filename="../map/CMapIMG.cpp" line="275"/>
         <source>Ferry</source>
         <translation>Fähre</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="266"/>
+        <location filename="../map/CMapIMG.cpp" line="276"/>
         <source>State/province border</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="267"/>
+        <location filename="../map/CMapIMG.cpp" line="277"/>
         <source>County/parish border</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="268"/>
+        <location filename="../map/CMapIMG.cpp" line="278"/>
         <source>International border</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="269"/>
+        <location filename="../map/CMapIMG.cpp" line="279"/>
         <source>River</source>
         <translation>Fluss</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="270"/>
+        <location filename="../map/CMapIMG.cpp" line="280"/>
         <source>Minor land contour</source>
         <translation>Höhenlinie klein</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="271"/>
+        <location filename="../map/CMapIMG.cpp" line="281"/>
         <source>Intermediate land contour</source>
         <translation>Höhenlinie mittel</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="272"/>
+        <location filename="../map/CMapIMG.cpp" line="282"/>
         <source>Major land contour</source>
         <translation>Höhenlinie groß</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="273"/>
+        <location filename="../map/CMapIMG.cpp" line="283"/>
         <source>Minor depth contour</source>
         <translation>Tiefenlinie klein</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="274"/>
+        <location filename="../map/CMapIMG.cpp" line="284"/>
         <source>Intermediate depth contour</source>
         <translation>Tiefenlinie mittel</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="275"/>
+        <location filename="../map/CMapIMG.cpp" line="285"/>
         <source>Major depth contour</source>
         <translation>Tiefenlinie groß</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="276"/>
+        <location filename="../map/CMapIMG.cpp" line="286"/>
         <source>Intermittent stream</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="277"/>
-        <location filename="../map/CMapIMG.cpp" line="359"/>
+        <location filename="../map/CMapIMG.cpp" line="287"/>
+        <location filename="../map/CMapIMG.cpp" line="369"/>
         <source>Airport runway</source>
         <translation>Landebahn</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="278"/>
+        <location filename="../map/CMapIMG.cpp" line="288"/>
         <source>Pipeline</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="279"/>
+        <location filename="../map/CMapIMG.cpp" line="289"/>
         <source>Powerline</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="280"/>
+        <location filename="../map/CMapIMG.cpp" line="290"/>
         <source>Marine boundary</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="281"/>
+        <location filename="../map/CMapIMG.cpp" line="291"/>
         <source>Hazard boundary</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="346"/>
+        <location filename="../map/CMapIMG.cpp" line="356"/>
         <source>Large urban area (&gt;200K)</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="347"/>
+        <location filename="../map/CMapIMG.cpp" line="357"/>
         <source>Small urban area (&lt;200K)</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="348"/>
+        <location filename="../map/CMapIMG.cpp" line="358"/>
         <source>Rural housing area</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="349"/>
+        <location filename="../map/CMapIMG.cpp" line="359"/>
         <source>Military base</source>
         <translation>Militärbasis</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="350"/>
+        <location filename="../map/CMapIMG.cpp" line="360"/>
         <source>Parking lot</source>
         <translation>Parkplatz</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="351"/>
+        <location filename="../map/CMapIMG.cpp" line="361"/>
         <source>Parking garage</source>
         <translation>Parkhaus</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="352"/>
+        <location filename="../map/CMapIMG.cpp" line="362"/>
         <source>Airport</source>
         <translation>Flugplatz</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="353"/>
+        <location filename="../map/CMapIMG.cpp" line="363"/>
         <source>Shopping center</source>
         <translation>Einkaufszentrum</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="354"/>
+        <location filename="../map/CMapIMG.cpp" line="364"/>
         <source>Marina</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="355"/>
+        <location filename="../map/CMapIMG.cpp" line="365"/>
         <source>University/College</source>
         <translation>Universität/Hochschule</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="356"/>
+        <location filename="../map/CMapIMG.cpp" line="366"/>
         <source>Hospital</source>
         <translation>Krankenhaus</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="357"/>
+        <location filename="../map/CMapIMG.cpp" line="367"/>
         <source>Industrial complex</source>
         <translation>Industrie</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="358"/>
+        <location filename="../map/CMapIMG.cpp" line="368"/>
         <source>Reservation</source>
         <translation>Schutzgebiet</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="360"/>
+        <location filename="../map/CMapIMG.cpp" line="370"/>
         <source>Man-made area</source>
         <translation>Fabrikgelände</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="361"/>
+        <location filename="../map/CMapIMG.cpp" line="371"/>
         <source>Sports complex</source>
         <translation>Sportanlage</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="362"/>
+        <location filename="../map/CMapIMG.cpp" line="372"/>
         <source>Golf course</source>
         <translation>Golfplatz</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="363"/>
+        <location filename="../map/CMapIMG.cpp" line="373"/>
         <source>Cemetery</source>
         <translation>Friedhof</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="364"/>
-        <location filename="../map/CMapIMG.cpp" line="365"/>
-        <location filename="../map/CMapIMG.cpp" line="366"/>
+        <location filename="../map/CMapIMG.cpp" line="374"/>
+        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <location filename="../map/CMapIMG.cpp" line="376"/>
         <source>National park</source>
         <translation>Nationalpark</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="367"/>
+        <location filename="../map/CMapIMG.cpp" line="377"/>
         <source>City park</source>
         <translation>Stadtpark</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="368"/>
-        <location filename="../map/CMapIMG.cpp" line="369"/>
-        <location filename="../map/CMapIMG.cpp" line="370"/>
+        <location filename="../map/CMapIMG.cpp" line="378"/>
+        <location filename="../map/CMapIMG.cpp" line="379"/>
+        <location filename="../map/CMapIMG.cpp" line="380"/>
         <source>State park</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="371"/>
+        <location filename="../map/CMapIMG.cpp" line="381"/>
         <source>Forest</source>
         <translation>Wald</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="372"/>
+        <location filename="../map/CMapIMG.cpp" line="382"/>
         <source>Ocean</source>
         <translation>Ozean</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="373"/>
-        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <location filename="../map/CMapIMG.cpp" line="383"/>
         <location filename="../map/CMapIMG.cpp" line="385"/>
+        <location filename="../map/CMapIMG.cpp" line="395"/>
         <source>Blue (unknown)</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="374"/>
+        <location filename="../map/CMapIMG.cpp" line="384"/>
         <source>Sea</source>
         <translation>Meer</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="376"/>
-        <location filename="../map/CMapIMG.cpp" line="377"/>
-        <location filename="../map/CMapIMG.cpp" line="384"/>
+        <location filename="../map/CMapIMG.cpp" line="386"/>
+        <location filename="../map/CMapIMG.cpp" line="387"/>
+        <location filename="../map/CMapIMG.cpp" line="394"/>
         <source>Large lake</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="378"/>
-        <location filename="../map/CMapIMG.cpp" line="379"/>
+        <location filename="../map/CMapIMG.cpp" line="388"/>
+        <location filename="../map/CMapIMG.cpp" line="389"/>
         <source>Medium lake</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="380"/>
-        <location filename="../map/CMapIMG.cpp" line="381"/>
+        <location filename="../map/CMapIMG.cpp" line="390"/>
+        <location filename="../map/CMapIMG.cpp" line="391"/>
         <source>Small lake</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="382"/>
-        <location filename="../map/CMapIMG.cpp" line="383"/>
+        <location filename="../map/CMapIMG.cpp" line="392"/>
+        <location filename="../map/CMapIMG.cpp" line="393"/>
         <source>Major lake</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="386"/>
+        <location filename="../map/CMapIMG.cpp" line="396"/>
         <source>Major River</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="387"/>
+        <location filename="../map/CMapIMG.cpp" line="397"/>
         <source>Large River</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="388"/>
+        <location filename="../map/CMapIMG.cpp" line="398"/>
         <source>Medium River</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="389"/>
+        <location filename="../map/CMapIMG.cpp" line="399"/>
         <source>Small River</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="392"/>
+        <location filename="../map/CMapIMG.cpp" line="402"/>
         <source>Intermittent water</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="393"/>
+        <location filename="../map/CMapIMG.cpp" line="403"/>
         <source>Wetland/Swamp</source>
         <translation>Feuchtgebiet/Sumpf</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="394"/>
+        <location filename="../map/CMapIMG.cpp" line="404"/>
         <source>Glacier</source>
         <translation>Gletscher</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="395"/>
+        <location filename="../map/CMapIMG.cpp" line="405"/>
         <source>Orchard/Plantation</source>
         <translation>Obstgarten/Plantage</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="396"/>
+        <location filename="../map/CMapIMG.cpp" line="406"/>
         <source>Scrub</source>
         <translation>Buschwerk</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="397"/>
+        <location filename="../map/CMapIMG.cpp" line="407"/>
         <source>Tundra</source>
         <translation>Tundra</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="398"/>
+        <location filename="../map/CMapIMG.cpp" line="408"/>
         <source>Flat</source>
         <translation>Ebene</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="399"/>
+        <location filename="../map/CMapIMG.cpp" line="409"/>
         <source>???</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="437"/>
+        <location filename="../map/CMapIMG.cpp" line="445"/>
         <source>Failed to read: </source>
         <translation>Lesen fehlgeschlagen:</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="481"/>
+        <location filename="../map/CMapIMG.cpp" line="488"/>
         <source>Failed to open: </source>
         <translation>Öffnen fehlgeschlagen:</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="505"/>
-        <location filename="../map/CMapIMG.cpp" line="509"/>
+        <location filename="../map/CMapIMG.cpp" line="512"/>
+        <location filename="../map/CMapIMG.cpp" line="516"/>
         <source>Bad file format: </source>
         <translation>Falsches Format:</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="600"/>
+        <location filename="../map/CMapIMG.cpp" line="605"/>
         <source>Failed to read file structure: </source>
         <translation>Lesen der Dateistruktur fehlgeschlagen:</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="633"/>
+        <location filename="../map/CMapIMG.cpp" line="638"/>
         <source>Loading %1</source>
         <translation>Lädt %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="638"/>
+        <location filename="../map/CMapIMG.cpp" line="643"/>
         <source>User abort: </source>
         <translation>Benutzerabbruch:</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="639"/>
+        <location filename="../map/CMapIMG.cpp" line="646"/>
         <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="727"/>
+        <location filename="../map/CMapIMG.cpp" line="738"/>
         <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, benützt wird.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2377"/>
-        <location filename="../map/CMapIMG.cpp" line="2385"/>
-        <location filename="../map/CMapIMG.cpp" line="2389"/>
-        <location filename="../map/CMapIMG.cpp" line="2394"/>
-        <location filename="../map/CMapIMG.cpp" line="2441"/>
-        <location filename="../map/CMapIMG.cpp" line="2449"/>
-        <location filename="../map/CMapIMG.cpp" line="2453"/>
-        <location filename="../map/CMapIMG.cpp" line="2458"/>
+        <location filename="../map/CMapIMG.cpp" line="2467"/>
+        <location filename="../map/CMapIMG.cpp" line="2475"/>
+        <location filename="../map/CMapIMG.cpp" line="2479"/>
+        <location filename="../map/CMapIMG.cpp" line="2484"/>
+        <location filename="../map/CMapIMG.cpp" line="2530"/>
+        <location filename="../map/CMapIMG.cpp" line="2538"/>
+        <location filename="../map/CMapIMG.cpp" line="2542"/>
+        <location filename="../map/CMapIMG.cpp" line="2547"/>
         <source>Point of Interest</source>
         <translation>Ort von Interesse</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2583"/>
+        <location filename="../map/CMapIMG.cpp" line="2674"/>
         <source>Unknown</source>
         <translation>Unbekannt</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2630"/>
-        <location filename="../map/CMapIMG.cpp" line="2639"/>
-        <location filename="../map/CMapIMG.cpp" line="2646"/>
+        <location filename="../map/CMapIMG.cpp" line="2720"/>
+        <location filename="../map/CMapIMG.cpp" line="2728"/>
+        <location filename="../map/CMapIMG.cpp" line="2735"/>
         <source>Area</source>
         <translation>Gebiet</translation>
     </message>
@@ -1157,12 +1207,12 @@
 <context>
     <name>CMapList</name>
     <message>
-        <location filename="../map/CMapList.cpp" line="148"/>
+        <location filename="../map/CMapList.cpp" line="150"/>
         <source>Deactivate</source>
         <translation>Deaktivieren</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="148"/>
+        <location filename="../map/CMapList.cpp" line="150"/>
         <source>Activate</source>
         <translation>Aktivieren</translation>
     </message>
@@ -1170,17 +1220,17 @@
 <context>
     <name>CMapMAP</name>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="46"/>
+        <location filename="../map/CMapMAP.cpp" line="45"/>
         <source>Failed ...</source>
         <translation>Fehlgeschlagen...</translation>
     </message>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="65"/>
+        <location filename="../map/CMapMAP.cpp" line="62"/>
         <source>Failed to open: </source>
         <translation>Öffnen fehlgeschlagen: </translation>
     </message>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="75"/>
+        <location filename="../map/CMapMAP.cpp" line="72"/>
         <source>Bad file format: </source>
         <translation>Falsches Dateiformat: </translation>
     </message>
@@ -1193,7 +1243,7 @@
         <translation>Hinzufügen oder entfernen von Karten. In einem Verzeichnis können mehrere Karten liegen. Unterverzeichnisse werden jedoch nicht durchsucht. Unterstützte Formate sind: %1 </translation>
     </message>
     <message>
-        <location filename="../map/CMapPathSetup.cpp" line="55"/>
+        <location filename="../map/CMapPathSetup.cpp" line="54"/>
         <source>Select map path...</source>
         <translation>Kartenpfad wählen...</translation>
     </message>
@@ -1201,7 +1251,7 @@
 <context>
     <name>CMapPropSetup</name>
     <message>
-        <location filename="../map/CMapPropSetup.cpp" line="151"/>
+        <location filename="../map/CMapPropSetup.cpp" line="147"/>
         <source>Cache path...</source>
         <translation>Cache Pfad...</translation>
     </message>
@@ -1355,7 +1405,7 @@ Unbekannte Struktur.</translation>
         <translation type="obsolete">--- Alle ---</translation>
     </message>
     <message>
-        <location filename="../map/CMapWMTS.cpp" line="385"/>
+        <location filename="../map/CMapWMTS.cpp" line="384"/>
         <source><b>%1</b>: %2 tiles pending<br/></source>
         <translation><b>%1</b>: %2 unerledigte Kacheln</translation>
     </message>
@@ -1440,19 +1490,31 @@ Unbekannte Struktur.</translation>
     </message>
 </context>
 <context>
+    <name>CPhotoAlbum</name>
+    <message>
+        <location filename="../helpers/CPhotoAlbum.cpp" line="65"/>
+        <source>Select images...</source>
+        <translation>Photos auswählen...</translation>
+    </message>
+</context>
+<context>
     <name>CPlotDistance</name>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="55"/>
+        <location filename="../plot/CPlotDistance.cpp" line="53"/>
         <source>distance [%1]</source>
         <translation>Entfernung [%1]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="59"/>
+        <location filename="../plot/CPlotDistance.cpp" line="57"/>
+        <source>time</source>
+        <translation>Uhrzeit</translation>
+    </message>
+    <message>
         <source>time [h]</source>
-        <translation>Zeit [h]</translation>
+        <translation type="obsolete">Zeit [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="61"/>
+        <location filename="../plot/CPlotDistance.cpp" line="59"/>
         <source>distance. [%1]</source>
         <translation>Entfernung [%1]</translation>
     </message>
@@ -1460,17 +1522,17 @@ Unbekannte Struktur.</translation>
 <context>
     <name>CPlotProfile</name>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="67"/>
+        <location filename="../plot/CPlotProfile.cpp" line="63"/>
         <source>distance [%1]</source>
         <translation>Entfernung [%1]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="71"/>
+        <location filename="../plot/CPlotProfile.cpp" line="67"/>
         <source>time [h]</source>
         <translation>Zeit [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="73"/>
+        <location filename="../plot/CPlotProfile.cpp" line="69"/>
         <source>alt. [%1]</source>
         <translation>Höhe [%1]</translation>
     </message>
@@ -1478,17 +1540,17 @@ Unbekannte Struktur.</translation>
 <context>
     <name>CPlotSpeed</name>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="54"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="52"/>
         <source>distance [%1]</source>
         <translation>Entfernung [%1]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="58"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="56"/>
         <source>time [h]</source>
         <translation>Zeit [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="60"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="58"/>
         <source>speed. [%1]</source>
         <translation>Geschwindigkeit [%1]</translation>
     </message>
@@ -1506,12 +1568,12 @@ Unbekannte Struktur.</translation>
         <translation>Süden</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="211"/>
+        <location filename="../grid/CProjWizard.cpp" line="213"/>
         <source>Error...</source>
         <translation>Fehler...</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="211"/>
+        <location filename="../grid/CProjWizard.cpp" line="213"/>
         <source>The value
 '%1'
 is not a valid coordinate system definition:
@@ -1525,12 +1587,12 @@ ist keine gültige Koordinatensystemdefinition:
 <context>
     <name>CProjWpt</name>
     <message>
-        <location filename="../gis/wpt/CProjWpt.cpp" line="63"/>
+        <location filename="../gis/wpt/CProjWpt.cpp" line="62"/>
         <source>Edit name...</source>
         <translation>Name bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CProjWpt.cpp" line="63"/>
+        <location filename="../gis/wpt/CProjWpt.cpp" line="62"/>
         <source>Enter new waypoint name.</source>
         <translation>Geben Sie einen neuen Namen ein.</translation>
     </message>
@@ -1627,38 +1689,38 @@ ist keine gültige Koordinatensystemdefinition:
         <translation>------ Fertig ------</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="636"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="635"/>
         <source>Restore folders...</source>
         <translation>Ordner wiederherstellen...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="636"/>
-        <location filename="../qlgt/CQlgtDb.cpp" line="669"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="635"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="668"/>
         <source>Abort</source>
         <translation>Abbrechen</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="663"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="662"/>
         <source>Imported %1 folders and %2 diaries</source>
         <translation>Importiert wurden %1 Ordner und %2 Tagebücher</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="669"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="668"/>
         <source>Copy items...</source>
         <translation>Elemente kopieren...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="694"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="692"/>
         <source>Imported %1 tracks, %2 waypoints, %3 routes, %4 areas</source>
         <translation>Importiert wurden %1 Tracks, %2 Wegpunkte, %3 Routen, %4 Flächen</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="695"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="693"/>
         <source>Import folders...</source>
         <translation>Importiere Ordner...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="747"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="748"/>
         <source>Overlay of type '%1' cant be converted</source>
         <translation>Das Overlay vomTyp '%1' kann nicht konvertiert werden</translation>
     </message>
@@ -1681,7 +1743,7 @@ ist keine gültige Koordinatensystemdefinition:
         <translation>Entferne vorhandene Datei %1</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="158"/>
+        <location filename="../qlgt/CQmsDb.cpp" line="160"/>
         <source>%1: drop item with QLGT DB ID %2</source>
         <translation>%1: verwerfe das Element mit der QLGT DB ID %2</translation>
     </message>
@@ -1689,12 +1751,12 @@ ist keine gültige Koordinatensystemdefinition:
 <context>
     <name>CSearchGoogle</name>
     <message>
-        <location filename="../gis/search/CSearchGoogle.cpp" line="120"/>
+        <location filename="../gis/search/CSearchGoogle.cpp" line="119"/>
         <source>Unknown response</source>
         <translation>Unbekannte Antwort</translation>
     </message>
     <message>
-        <location filename="../gis/search/CSearchGoogle.cpp" line="130"/>
+        <location filename="../gis/search/CSearchGoogle.cpp" line="129"/>
         <source>Error: </source>
         <translation>Fehler:</translation>
     </message>
@@ -1717,22 +1779,22 @@ ist keine gültige Koordinatensystemdefinition:
 <context>
     <name>CSetupDatabase</name>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="71"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="69"/>
         <source>Error...</source>
         <translation>Fehler...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="71"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="69"/>
         <source>There is already a database with name '%1'</source>
         <translation>Es gibt schon eine Datenbank mit dem Namen '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="85"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="83"/>
         <source>New database...</source>
         <translation>Neue Datenbank...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="110"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="108"/>
         <source>Open database...</source>
         <translation>Datenbank öffnen...</translation>
     </message>
@@ -1740,12 +1802,12 @@ ist keine gültige Koordinatensystemdefinition:
 <context>
     <name>CSetupWorkspace</name>
     <message>
-        <location filename="../gis/db/CSetupWorkspace.cpp" line="52"/>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
         <source>Setup database...</source>
         <translation>Datenbank einrichten...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupWorkspace.cpp" line="52"/>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
         <source>Changes will become active after an application's restart.</source>
         <translation>Änderungen werden erst nach Neustart der Anwendung aktiv.</translation>
     </message>
@@ -1807,8 +1869,12 @@ ist keine gültige Koordinatensystemdefinition:
 <context>
     <name>ICanvasSetup</name>
     <message>
-        <location filename="../canvas/ICanvasSetup.ui" line="14"/>
         <source>Setup Map Workspace...</source>
+        <translation type="obsolete">Kartenansicht einstellen...</translation>
+    </message>
+    <message>
+        <location filename="../canvas/ICanvasSetup.ui" line="14"/>
+        <source>Setup Map View...</source>
         <translation>Kartenansicht einstellen...</translation>
     </message>
     <message>
@@ -1891,27 +1957,27 @@ ist keine gültige Koordinatensystemdefinition:
         <translation><html><head/><body><p>Klicken um die aktuelle Skalierung als maximale Skalierung zu benutzen.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="124"/>
+        <location filename="../dem/IDemPropSetup.ui" line="115"/>
         <source>Hillshading</source>
         <translation>Schummerung</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="150"/>
+        <location filename="../dem/IDemPropSetup.ui" line="141"/>
         <source>Slope </source>
         <translation>Hangneigung</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="192"/>
-        <location filename="../dem/IDemPropSetup.ui" line="199"/>
-        <location filename="../dem/IDemPropSetup.ui" line="206"/>
-        <location filename="../dem/IDemPropSetup.ui" line="213"/>
-        <location filename="../dem/IDemPropSetup.ui" line="232"/>
-        <location filename="../dem/IDemPropSetup.ui" line="251"/>
-        <location filename="../dem/IDemPropSetup.ui" line="270"/>
-        <location filename="../dem/IDemPropSetup.ui" line="277"/>
-        <location filename="../dem/IDemPropSetup.ui" line="284"/>
-        <location filename="../dem/IDemPropSetup.ui" line="303"/>
-        <location filename="../dem/IDemPropSetup.ui" line="310"/>
+        <location filename="../dem/IDemPropSetup.ui" line="183"/>
+        <location filename="../dem/IDemPropSetup.ui" line="190"/>
+        <location filename="../dem/IDemPropSetup.ui" line="197"/>
+        <location filename="../dem/IDemPropSetup.ui" line="204"/>
+        <location filename="../dem/IDemPropSetup.ui" line="223"/>
+        <location filename="../dem/IDemPropSetup.ui" line="242"/>
+        <location filename="../dem/IDemPropSetup.ui" line="261"/>
+        <location filename="../dem/IDemPropSetup.ui" line="268"/>
+        <location filename="../dem/IDemPropSetup.ui" line="275"/>
+        <location filename="../dem/IDemPropSetup.ui" line="294"/>
+        <location filename="../dem/IDemPropSetup.ui" line="301"/>
         <source>TextLabel</source>
         <translation>Bezeichnung</translation>
     </message>
@@ -1947,48 +2013,48 @@ ist keine gültige Koordinatensystemdefinition:
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="35"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="66"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="70"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="92"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="105"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="118"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="131"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="144"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="157"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="170"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="183"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="196"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="209"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="222"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="235"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="248"/>
         <source>-</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="43"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="62"/>
         <source>about:blank</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="59"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="85"/>
         <source>Position:</source>
         <translation>Position:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="79"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="105"/>
         <source>Difficulty</source>
         <translation>Schwierigkeit</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="157"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="183"/>
         <source>Terrain</source>
         <translation>Gelände</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="231"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="35"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="249"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="259"/>
         <source>Hint:</source>
         <translation>Hinweis:</translation>
     </message>
@@ -2054,14 +2120,39 @@ ist keine gültige Koordinatensystemdefinition:
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="44"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="51"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="75"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="50"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="57"/>
         <source>-</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="68"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="70"/>
+        <source>Sort By Time</source>
+        <translation>Nach der Zeit sortieren</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="86"/>
+        <source>Keep Order of Project</source>
+        <translation>Die Reihenfolge beibehalten</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="93"/>
+        <source>Print diary</source>
+        <translation>Tagebuch drucken</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="96"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="116"/>
+        <source>...</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="113"/>
+        <source>Rebuild diary.</source>
+        <translation>Tagebuch erneut erstellen.</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="43"/>
         <source>Keywords:</source>
         <translation>Stichwörter:</translation>
     </message>
@@ -2183,13 +2274,15 @@ ist keine gültige Koordinatensystemdefinition:
         <translation type="obsolete"><html><head/><body><p>Kommentar bearbeiten.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="128"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="249"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="207"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="236"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="273"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="293"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="109"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="188"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation><html><head/><body><p>Der Wegpunkt wurde in QMapShack importiert und geändert. Die ursprünglichen Daten weren nicht mehr angezeigt. Näheres siehe Änderungshistorie.</p></body></html></translation>
     </message>
@@ -2198,36 +2291,46 @@ ist keine gültige Koordinatensystemdefinition:
         <translation type="obsolete"><html><head/><body><p>Beschreibung bearbeiten.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="162"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="52"/>
         <source>Position:</source>
         <translation>Position:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="72"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="90"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="59"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="85"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="111"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="151"/>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="169"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="195"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="221"/>
         <source>-</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="182"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="72"/>
         <source>Ele.</source>
         <translation>Höhe</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="208"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="98"/>
         <source>Proximity:</source>
         <translation>Abstand:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="125"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="204"/>
         <source><html><head/><body><p>Read Only Mode</p></body></html></source>
         <translation><html><head/><body><p>Schreibschutz</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="65"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="270"/>
+        <source>Add images.</source>
+        <translation>Photos hinzufügen.</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="290"/>
+        <source>Delete selected image.</source>
+        <translation>Ausgewähltes Foto entfernen.</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="144"/>
         <source>Date/Time:</source>
         <translation>Datum/Zeit:</translation>
     </message>
@@ -2452,6 +2555,29 @@ ist keine gültige Koordinatensystemdefinition:
     </message>
 </context>
 <context>
+    <name>IFilterReset</name>
+    <message>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="35"/>
+        <source><b>Reset Hidden Track Points</b></source>
+        <translation><b>Versteckte Trackpunkte zurücksetzen</b></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="47"/>
+        <source>Make all trackpoints visible again.</source>
+        <translation>Alle Trackpunkte wieder anzeigen.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="54"/>
+        <source>...</source>
+        <translation></translation>
+    </message>
+</context>
+<context>
     <name>IFilterSpeed</name>
     <message>
         <location filename="../gis/trk/filter/IFilterSpeed.ui" line="14"/>
@@ -2678,163 +2804,173 @@ ist keine gültige Koordinatensystemdefinition:
         <translation>Daten</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="211"/>
         <source>Add Map Workspace</source>
-        <translation>Ansicht hinzufügen</translation>
+        <translation type="obsolete">Ansicht hinzufügen</translation>
     </message>
     <message>
+        <location filename="../IMainWindow.ui" line="211"/>
         <location filename="../IMainWindow.ui" line="214"/>
+        <source>Add Map View</source>
+        <translation>Kartenansicht hinzufügen</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="217"/>
         <source>Ctrl+T</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="226"/>
+        <location filename="../IMainWindow.ui" line="229"/>
         <source>Show Scale</source>
         <translation>Maßstab</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="235"/>
+        <location filename="../IMainWindow.ui" line="238"/>
         <source>Setup Map Font</source>
         <translation>Kartenfont einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="247"/>
+        <location filename="../IMainWindow.ui" line="250"/>
         <source>Show Grid</source>
         <translation>Gitter</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="250"/>
+        <location filename="../IMainWindow.ui" line="253"/>
         <source>Ctrl+G</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="259"/>
+        <location filename="../IMainWindow.ui" line="262"/>
         <source>Setup Grid</source>
         <translation>Gitter einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="262"/>
+        <location filename="../IMainWindow.ui" line="265"/>
         <source>Ctrl+Alt+G</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="274"/>
+        <location filename="../IMainWindow.ui" line="277"/>
         <source>Flip Mouse Wheel</source>
         <translation>Mausrad umdrehen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="283"/>
         <location filename="../IMainWindow.ui" line="286"/>
+        <location filename="../IMainWindow.ui" line="289"/>
         <source>Setup Map Paths</source>
         <translation>Kartenverzeichnisse angeben</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="298"/>
+        <location filename="../IMainWindow.ui" line="301"/>
         <source>POI Text</source>
         <translation>POI Text</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="310"/>
+        <location filename="../IMainWindow.ui" line="313"/>
         <source>Night / Day</source>
         <translation>Nacht / Tag</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="322"/>
+        <location filename="../IMainWindow.ui" line="325"/>
         <source>Map Tool Tip</source>
         <translation>Kartentooltip</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="331"/>
+        <location filename="../IMainWindow.ui" line="334"/>
         <source>Setup DEM Paths</source>
         <translation>DEM Verzeichnisse angeben</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="340"/>
+        <location filename="../IMainWindow.ui" line="343"/>
         <source>About</source>
         <translation>Über</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="349"/>
+        <location filename="../IMainWindow.ui" line="352"/>
         <source>Help</source>
         <translation>Hilfe</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="358"/>
-        <source>Setup Map Workspace</source>
+        <location filename="../IMainWindow.ui" line="361"/>
+        <location filename="../IMainWindow.ui" line="364"/>
+        <source>Setup Map View</source>
         <translation>Kartenansicht einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="367"/>
+        <source>Setup Map Workspace</source>
+        <translation type="obsolete">Arbeitsplatz einstellen</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="373"/>
         <source>Load GIS Data</source>
         <translation>GIS Daten laden</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="370"/>
+        <location filename="../IMainWindow.ui" line="376"/>
         <source>Load projects from file</source>
         <translation>Lade Datei als Projekt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="373"/>
+        <location filename="../IMainWindow.ui" line="379"/>
         <source>Ctrl+L</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="382"/>
+        <location filename="../IMainWindow.ui" line="388"/>
         <source>Save All GIS Data</source>
         <translation>Alle GIS Daten speichern</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="385"/>
+        <location filename="../IMainWindow.ui" line="391"/>
         <source>Save all projects in the workspace</source>
         <translation>Alle Projekte im Arbeitsplatz speichern</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="388"/>
+        <location filename="../IMainWindow.ui" line="394"/>
         <source>Ctrl+S</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="397"/>
+        <location filename="../IMainWindow.ui" line="403"/>
         <source>Setup Time Zone</source>
         <translation>Zeitzone einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="406"/>
+        <location filename="../IMainWindow.ui" line="412"/>
         <source>Add empty project</source>
         <translation>Leeres Projekt hinzufügen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="418"/>
+        <location filename="../IMainWindow.ui" line="424"/>
         <source>Search Google</source>
         <translation>Mit Google suchen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="427"/>
+        <location filename="../IMainWindow.ui" line="433"/>
         <source>Close all projects</source>
         <translation>Alle Projekte schließen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="430"/>
+        <location filename="../IMainWindow.ui" line="436"/>
         <source>F8</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="439"/>
+        <location filename="../IMainWindow.ui" line="445"/>
         <source>Setup Units</source>
         <translation>Einheiten einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="448"/>
+        <location filename="../IMainWindow.ui" line="454"/>
         <source>Setup Workspace</source>
-        <translation>Ansicht einstellen</translation>
+        <translation>Arbeitsplatz einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="451"/>
+        <location filename="../IMainWindow.ui" line="457"/>
         <source>Setup save on exit.</source>
         <translation>Speichert Einstellungen beim Beenden.</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="460"/>
+        <location filename="../IMainWindow.ui" line="466"/>
         <source>Import Database from QLandkarte</source>
         <translation>Datenbankimport aus QLandkarte</translation>
     </message>
@@ -2847,7 +2983,7 @@ ist keine gültige Koordinatensystemdefinition:
         <translation type="obsolete">Datenbank importieren</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="463"/>
+        <location filename="../IMainWindow.ui" line="469"/>
         <source>Import QLandkarte GT database</source>
         <translation>QLandkarte Gt Datenbank importieren</translation>
     </message>
@@ -2966,30 +3102,44 @@ ist keine gültige Koordinatensystemdefinition:
 <context>
     <name>IMouseEditLine</name>
     <message>
-        <location filename="../mouse/IMouseEditLine.cpp" line="339"/>
+        <location filename="../mouse/IMouseEditLine.cpp" line="338"/>
         <source>Add points?</source>
         <translation>Punkte hinzufügen?</translation>
     </message>
     <message>
-        <location filename="../mouse/IMouseEditLine.cpp" line="339"/>
+        <location filename="../mouse/IMouseEditLine.cpp" line="338"/>
         <source>Add points to temporary line?</source>
         <translation>Punkte zur temporären Linie hinzufügen?</translation>
     </message>
     <message>
-        <location filename="../mouse/IMouseEditLine.cpp" line="876"/>
+        <location filename="../mouse/IMouseEditLine.cpp" line="881"/>
         <source>Warning!</source>
         <translation>Warnung!</translation>
     </message>
     <message>
-        <location filename="../mouse/IMouseEditLine.cpp" line="876"/>
+        <location filename="../mouse/IMouseEditLine.cpp" line="881"/>
         <source>This will replace all data of the orignal by a simple line of coordinates. All other data will be lost permanently.</source>
         <translation>Alle ursprünglichen Daten werden durch eine einfache Koordinatenlinie ersetzt. Alle anderen Daten sind dauerhaft verloren.</translation>
     </message>
 </context>
 <context>
+    <name>IPhotoAlbum</name>
+    <message>
+        <location filename="../helpers/IPhotoAlbum.ui" line="20"/>
+        <source>Form</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../helpers/IPhotoAlbum.ui" line="50"/>
+        <location filename="../helpers/IPhotoAlbum.ui" line="77"/>
+        <source>...</source>
+        <translation></translation>
+    </message>
+</context>
+<context>
     <name>IPlot</name>
     <message>
-        <location filename="../plot/IPlot.cpp" line="465"/>
+        <location filename="../plot/IPlot.cpp" line="481"/>
         <source>No or bad data.</source>
         <translation>Keine oder schlechte Daten.</translation>
     </message>
@@ -3615,14 +3765,18 @@ sein</translation>
 <context>
     <name>ISetupWorkspace</name>
     <message>
-        <location filename="../gis/db/ISetupWorkspace.ui" line="14"/>
         <source>Setup database...</source>
-        <translation>Datenbank einrichten...</translation>
+        <translation type="obsolete">Datenbank einrichten...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="14"/>
+        <source>Setup workspace...</source>
+        <translation>Arbeitsplatz einstellen...</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupWorkspace.ui" line="35"/>
         <source>save workspace on exit, and every</source>
-        <translation>Ansicht beim Beenden speichern, und alle</translation>
+        <translation>Arbeitsplatz beim Beenden speichern, und alle</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupWorkspace.ui" line="45"/>
@@ -3655,122 +3809,122 @@ sein</translation>
         <translation></translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="263"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="256"/>
         <source>Undo</source>
         <translation>Rückgängig</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="266"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="259"/>
         <source>Ctrl+Z</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="275"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="268"/>
         <source>Redo</source>
         <translation>Wiederherstellen</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="278"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="271"/>
         <source>Ctrl+Shift+Z</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="287"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="280"/>
         <source>Cut</source>
         <translation>Ausschneiden</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="290"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="283"/>
         <source>Ctrl+X</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="299"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="292"/>
         <source>Copy</source>
         <translation>Kopieren</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="302"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="295"/>
         <source>Ctrl+C</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="311"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="304"/>
         <source>Paste</source>
         <translation>Einfügen</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="314"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="307"/>
         <source>Ctrl+V</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="326"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="319"/>
         <source>Align Left</source>
         <translation>Linksbündig</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="329"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="322"/>
         <source>Ctrl+L</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="341"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="334"/>
         <source>Align Right</source>
         <translation>Rechtsbündig</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="344"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="337"/>
         <source>Ctrl+R</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="356"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="349"/>
         <source>Align Center</source>
         <translation>Zentriert</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="359"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="352"/>
         <source>Ctrl+E</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="371"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="364"/>
         <source>Align Block</source>
         <translation>Blocksatz</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="374"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="367"/>
         <source>Ctrl+J</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="386"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="379"/>
         <source>Underline</source>
         <translation>Unterstreichen</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="389"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="382"/>
         <source>Ctrl+U</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="401"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="394"/>
         <source>Bold</source>
         <translation>Fett</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="404"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="397"/>
         <source>Ctrl+B</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="416"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="409"/>
         <source>Italic</source>
         <translation>Kursiv</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="419"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="412"/>
         <source>Ctrl+I</source>
         <translation></translation>
     </message>
@@ -3887,66 +4041,66 @@ Areas: %1</source>
         <translation type="obsolete">Fläche: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="168"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="165"/>
         <source><br/>
 Filename: %1</source>
         <translation><br/>
 Dateiname: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="185"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="182"/>
         <source>Waypoints: %1</source>
         <translation>Wegpunkte: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="189"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="186"/>
         <source>Tracks: %1</source>
         <translation>Tracks: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="193"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="190"/>
         <source>Routes: %1</source>
         <translation>Routen: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="197"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="194"/>
         <source>Areas: %1</source>
         <translation>Flächen: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="255"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="250"/>
         <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/CGisListDB.cpp" line="410"/>
+        <location filename="../gis/CGisListDB.cpp" line="406"/>
         <source>Are you sure you want to delete '%1' from folder '%2'?</source>
         <translation>Sind Sie sicher, dass Sie '%1' aus dem Ordner '%2' löschen wollen? </translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="411"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="256"/>
+        <location filename="../gis/CGisListDB.cpp" line="407"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="251"/>
         <source>Delete...</source>
         <translation>Löschen...</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="53"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="145"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="143"/>
         <source>Failed to open...</source>
         <translation>Öffnen fehlgeschlagen...</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="53"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="145"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="143"/>
         <source>Failed to open %1</source>
         <translation>Öffnen fehlgeschlagen: %1</translation>
     </message>
     <message>
         <location filename="../gis/db/CDBProject.cpp" line="125"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="155"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="95"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="154"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="93"/>
         <source>Save GIS data to...</source>
         <translation>GIS Daten speichern in...</translation>
     </message>
@@ -3961,84 +4115,84 @@ Dateiname: %1</translation>
         <translation>Speichern abbrechen</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="231"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="229"/>
         <source>File exists ...</source>
         <translation>Datei existiert...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="232"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="230"/>
         <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>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>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="298"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="296"/>
         <source>Failed to create file '%1'</source>
         <translation>Datei %1' konnte nicht erstellt werden</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="298"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="308"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="296"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="306"/>
         <source>Saveing GIS data failed...</source>
         <translation>Speichern der GIS Daten fehlgeschlagen...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="308"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="306"/>
         <source>Failed to write file '%1'</source>
         <translation>Datei %1' konnte nicht gespeichert werden</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="267"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="265"/>
         <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="334"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="332"/>
         <source>Length: %1 %2</source>
         <translation>Länge: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="341"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="339"/>
         <source>, %1%2 %3, %4%5 %6</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="349"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="347"/>
         <source>Time: %1</source>
         <translation>Zeit: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="352"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="362"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="350"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="360"/>
         <source>, Speed: %1 %2</source>
         <translation>, Geschw.: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="359"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="357"/>
         <source>Moving: %1</source>
         <translation>Bewegung: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="368"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="366"/>
         <source>Start: %1</source>
         <translation>Beginn: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="373"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="371"/>
         <source>End: %1</source>
         <translation>Ende: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="377"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="375"/>
         <source>Points: %1 (%2)</source>
         <translation>Punkte: %1 (%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="442"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="440"/>
         <source>Ele.: %1 %2</source>
         <translation>Höhe: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="445"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="443"/>
         <source> slope: %1%3 (%2%)</source>
         <translation> Neigung: %1%3 (%2%)</translation>
     </message>
@@ -4047,12 +4201,12 @@ Dateiname: %1</translation>
         <translation type="obsolete"> Neigung: %1° (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="973"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1089"/>
         <source>Hide points.</source>
         <translation>Punkte ausblenden.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1007"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1123"/>
         <source>Show points.</source>
         <translation>Punkte anzeigen.</translation>
     </message>
@@ -4061,282 +4215,290 @@ Dateiname: %1</translation>
         <translation type="obsolete">Neigung: %1°(%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="450"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="448"/>
         <source> speed: %1%2</source>
         <translation>Geschwindigkeit: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="462"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="460"/>
         <source>Ascend: %1%2 (%3%)</source>
         <translation>Anstieg: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="466"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="464"/>
         <source>Ascend: - (-)</source>
         <translation>Anstieg: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="472"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="470"/>
         <source> Descend: %1%2 (%3%)</source>
         <translation> Abstieg: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="476"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="474"/>
         <source> Descend: - (-) </source>
         <translation> Abstieg: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="483"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="481"/>
         <source>Dist.: %1%2 (%3%)</source>
         <translation>Entf.: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="487"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="485"/>
         <source>Dist.: - (-)</source>
         <translation>Entf.: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="493"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="491"/>
         <source> Moving: %1%2 (%3%)</source>
         <translation>Bewegung: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="497"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="495"/>
         <source> Moving: - (-) </source>
         <translation> Bewegung: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="96"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="95"/>
         <source>thin</source>
         <translation>dünn</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="97"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="96"/>
         <source>normal</source>
         <translation>normal</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="98"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="97"/>
         <source>wide</source>
         <translation>weit</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="99"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="98"/>
         <source>strong</source>
         <translation>stark</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="144"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="141"/>
         <location filename="../gis/rte/CGisItemRte.cpp" line="44"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="164"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="103"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="161"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="101"/>
         <source>_Clone</source>
         <translation>_Klon</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="409"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="417"/>
         <source>Area: %1%2</source>
         <translation>Fläche: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="461"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="475"/>
         <source>Changed area shape.</source>
         <translation>Flächenform geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="469"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="483"/>
         <source>Changed name.</source>
         <translation>Name geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="475"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="489"/>
         <source>Changed border width.</source>
         <translation>Umrandungsbreite geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="481"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="495"/>
         <source>Changed fill pattern.</source>
         <translation>Füllung geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="487"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="501"/>
         <source>Changed opacity.</source>
         <translation>Durchsichtigkeit geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="493"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="507"/>
         <source>Changed comment.</source>
         <translation>Kommentar geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="499"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="513"/>
         <source>Changed description.</source>
         <translation>Beschreibung geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="505"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1312"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="347"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="519"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="138"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1428"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="359"/>
         <source>Changed links</source>
         <translation>Geänderte Verknüpfungen</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="517"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1324"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="531"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1440"/>
         <source>Changed color</source>
         <translation>Farbe geändert</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="813"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="828"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="849"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="899"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1032"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="179"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="909"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="924"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="943"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1002"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1148"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="176"/>
         <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
         <source>Edit name...</source>
         <translation>Name bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="179"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="176"/>
         <source>Enter new waypoint name.</source>
         <translation>Name eingeben.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="225"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="228"/>
         <source>Elevation: %1 %2</source>
         <translation>Höhe: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="233"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="239"/>
         <source>Proximity: %1 %2</source>
         <translation>Abstand: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1294"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="298"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1410"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="310"/>
         <source>Changed name</source>
         <translation>Name geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="305"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="317"/>
         <source>Changed position</source>
         <translation>Position geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="311"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="323"/>
         <source>Changed elevation</source>
         <translation>Höhe geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="317"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="329"/>
         <source>Changed proximity</source>
         <translation>Abstandsalarm geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="329"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="341"/>
         <source>Changed icon</source>
         <translation>Symbol geändert</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1300"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="335"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="365"/>
+        <source>Changed images</source>
+        <translation>Photos geändert</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="126"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1416"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="347"/>
         <source>Changed comment</source>
         <translation>Kommentar geändert</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1306"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="341"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="132"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1422"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="353"/>
         <source>Changed description</source>
         <translation>Beschreibung geändert</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="515"/>
+        <location filename="../gis/gpx/serialization.cpp" line="507"/>
         <source>Archived</source>
         <translation>Archiviert</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="519"/>
+        <location filename="../gis/gpx/serialization.cpp" line="511"/>
         <source>Available</source>
         <translation>Verfügbar</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="523"/>
+        <location filename="../gis/gpx/serialization.cpp" line="515"/>
         <source>Not Available</source>
         <translation>Nicht verfügbar</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="459"/>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="834"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="463"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="844"/>
         <source>Warning...</source>
         <translation>Warnung...</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="459"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="463"/>
         <source>This is a typ file with unknown polygon encoding. Please report!</source>
         <translation>Dieser Dateityp hat eine unbekannte Polygon Kodierung. Bitte mitteilen!</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="834"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="844"/>
         <source>This is a typ file with unknown polyline encoding. Please report!</source>
         <translation>Dieser Dateityp hat eine unbekannte Polyline Kodierung. Bitte mitteilen!</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="286"/>
+        <location filename="../gis/IGisItem.cpp" line="292"/>
         <source>Initial version.</source>
         <translation>Erstversion.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="370"/>
+        <location filename="../gis/IGisItem.cpp" line="376"/>
         <source>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>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="371"/>
+        <location filename="../gis/IGisItem.cpp" line="377"/>
         <source>Read Only Mode...</source>
         <translation>Schreibgeschützt...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="560"/>
+        <location filename="../gis/IGisItem.cpp" line="575"/>
         <source><h4>Comment:</h4></source>
         <translation><h4>Kommentar:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="563"/>
+        <location filename="../gis/IGisItem.cpp" line="578"/>
         <source><p>--- no comment ---</p></source>
         <translation><p>--- kein Kommentar ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="570"/>
-        <location filename="../gis/IGisItem.cpp" line="600"/>
+        <location filename="../gis/IGisItem.cpp" line="589"/>
+        <location filename="../gis/IGisItem.cpp" line="634"/>
         <source><h4>Description:</h4></source>
         <translation><h4>Beschreibung:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="573"/>
-        <location filename="../gis/IGisItem.cpp" line="603"/>
+        <location filename="../gis/IGisItem.cpp" line="592"/>
+        <location filename="../gis/IGisItem.cpp" line="637"/>
         <source><p>--- no description ---</p></source>
         <translation><p>--- keine Beschreibung ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="580"/>
-        <location filename="../gis/IGisItem.cpp" line="610"/>
+        <location filename="../gis/IGisItem.cpp" line="603"/>
+        <location filename="../gis/IGisItem.cpp" line="648"/>
         <source><h4>Links:</h4></source>
         <translation><h4>Verknüpfungen:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="583"/>
-        <location filename="../gis/IGisItem.cpp" line="613"/>
+        <location filename="../gis/IGisItem.cpp" line="606"/>
+        <location filename="../gis/IGisItem.cpp" line="651"/>
         <source><p>--- no links ---</p></source>
         <translation><p>--- keine Verknüpfungen ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="813"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="828"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="849"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="899"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1032"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="909"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="924"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="943"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1002"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1148"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
         <source>Enter new track name.</source>
         <translation>Name eingeben.</translation>
@@ -4357,87 +4519,92 @@ Dateiname: %1</translation>
         <translation type="obsolete">Datenbank</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="67"/>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="66"/>
         <location filename="../gis/db/CLostFoundProject.cpp" line="39"/>
         <source>Lost & Found</source>
         <translation>Verloren & Gefunden</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="62"/>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="61"/>
         <source>Lost & Found (%1)</source>
         <translation>Verloren & Gefunden (%1)</translation>
     </message>
     <message>
-        <location filename="../qlgt/converter.cpp" line="196"/>
+        <location filename="../qlgt/converter.cpp" line="194"/>
         <source>Copy flag information from QLandkarte GT track</source>
         <translation>Kopiert das Informationsflag aus dem QLandkarte GT Track</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="158"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="212"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="259"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="285"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="162"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="216"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="263"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="289"/>
         <source>Corrupt track ...</source>
         <translation>Beschädigter Track ...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="158"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="162"/>
         <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
         <translation>Anzahl der Trackpunkte entspricht nicht der Anzahl der Trackpunkte der Trainingsdaten.</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="212"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="216"/>
         <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
         <translation>Anzahl der Trackpunkte entspricht nicht der Anzahl der erweiterten Trackpunkte.</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="259"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="285"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="263"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="289"/>
         <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
         <translation>Anzahl der Trackpunkte entspricht nicht der Anzahl der ausgeblendeten Trackpunkte.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="96"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="95"/>
         <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
         <translation>Punkte mit Hilfe des Douglas Peuker Algorithmus versteckt (%1%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="122"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="111"/>
+        <source>Reset all hidden track points to visible</source>
+        <translation>Alle Trackpunkte auf sichtbar zurücksetzen</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="136"/>
         <source>Permanently removed all hidden track points</source>
         <translation>Alle versteckten Trackpunkte für immer gelöscht</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="173"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="186"/>
         <source>Smoothed profile with a Median filter of size %1</source>
         <translation>Das Profil mit einem Medianfilter der Länge %1 geglättet</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="210"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="222"/>
         <source>Replaced elevation data with data from DEM files.</source>
         <translation>Höhendaten durch Daten aus den DEM Dateien ersetzt</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="234"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="245"/>
         <source>Offset elevation data by %1%2.</source>
         <translation>Höhendaten um %1%2 verschoben.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="254"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="264"/>
         <source>Changed start of track to %1.</source>
         <translation>Trackanfang auf %1 verschoben.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="273"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="283"/>
         <source>Remove timestamps.</source>
         <translation>Zeitmarken entfernt.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="296"/>
-        <source>Set artifical timestamps with delta of %1 sec.</source>
+        <location filename="../gis/trk/filter/filter.cpp" line="306"/>
+        <source>Set artificial timestamps with delta of %1 sec.</source>
         <translation>Künstliche Zeitmarken mit einem Abstand von %1 Sek. gesetzt.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="330"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="339"/>
         <source>Changed speed to %1%2.</source>
         <translation>Die Geschwindigkeit auf %1%2 gesetzt.</translation>
     </message>
diff --git a/src/locale/qmapshack_es.ts b/src/locale/qmapshack_es.ts
index f64b41a..1b36fbb 100644
--- a/src/locale/qmapshack_es.ts
+++ b/src/locale/qmapshack_es.ts
@@ -4,20 +4,24 @@
 <context>
     <name>CCanvas</name>
     <message>
-        <location filename="../canvas/CCanvas.cpp" line="59"/>
         <source>Workspace %1</source>
-        <translation>Espacio de Trabajo %1</translation>
+        <translation type="obsolete">Espacio de Trabajo %1</translation>
+    </message>
+    <message>
+        <location filename="../canvas/CCanvas.cpp" line="59"/>
+        <source>View %1</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>CDemList</name>
     <message>
-        <location filename="../dem/CDemList.cpp" line="143"/>
+        <location filename="../dem/CDemList.cpp" line="145"/>
         <source>Deactivate</source>
         <translation>Desactivar</translation>
     </message>
     <message>
-        <location filename="../dem/CDemList.cpp" line="143"/>
+        <location filename="../dem/CDemList.cpp" line="145"/>
         <source>Activate</source>
         <translation>Activar</translation>
     </message>
@@ -30,7 +34,7 @@
         <translation>Añadir o quitar rutas que contienen datos DEM. Puede haber múltiples archivos en una ruta, pero no se buscará en los subdirectorios. Los formatos soportados son: %1</translation>
     </message>
     <message>
-        <location filename="../dem/CDemPathSetup.cpp" line="55"/>
+        <location filename="../dem/CDemPathSetup.cpp" line="54"/>
         <source>Select DEM file path...</source>
         <translation>Seleccione la ruta al archivo DEM...</translation>
     </message>
@@ -38,7 +42,7 @@
 <context>
     <name>CDemPropSetup</name>
     <message>
-        <location filename="../dem/CDemPropSetup.cpp" line="187"/>
+        <location filename="../dem/CDemPropSetup.cpp" line="183"/>
         <source><b>Grade %1</b></source>
         <translation type="unfinished"></translation>
     </message>
@@ -79,7 +83,7 @@
     </message>
     <message>
         <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="58"/>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="101"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="102"/>
         <source>???</source>
         <translation></translation>
     </message>
@@ -87,12 +91,12 @@
 <context>
     <name>CDetailsOvlArea</name>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="131"/>
+        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
         <source>Edit name...</source>
         <translation>Editar nombre...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="131"/>
+        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
         <source>Enter new waypoint name.</source>
         <translation>Editar el nombre del nuevo waypoint.</translation>
     </message>
@@ -116,61 +120,107 @@
 <context>
     <name>CDetailsPrj</name>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="56"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="84"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="165"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="380"/>
         <source>none</source>
         <translation type="unfinished">ninguno</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="70"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="229"/>
+        <source>Build diary...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="229"/>
+        <source>Abort</source>
+        <translation type="unfinished">Abortar</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="234"/>
+        <source><h2>Waypoints</h2></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="241"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="272"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="337"/>
+        <source>Info</source>
+        <translation type="unfinished">Información</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="242"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="273"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="338"/>
+        <source>Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="265"/>
+        <source><h2>Tracks</h2></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="330"/>
+        <source><h2>Areas</h2></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="366"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="393"/>
         <source>Edit name...</source>
         <translation type="unfinished">Editar nombre...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="70"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="366"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="393"/>
         <source>Enter new project name.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="79"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="375"/>
         <source>Edit keywords...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="79"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="375"/>
         <source>Enter keywords.</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="509"/>
+        <source>Print Diary</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CDetailsTrk</name>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="56"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="57"/>
         <source>Reduce visible track points</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="66"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="70"/>
         <source>Change elevation of track points</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="79"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="83"/>
         <source>Change timestamp of track points</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="92"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="96"/>
         <source>Cut track into pieces</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="206"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="215"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="218"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="224"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="243"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="245"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="210"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="219"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="222"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="228"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="247"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="249"/>
         <source>%1 %2</source>
         <translation></translation>
     </message>
@@ -210,17 +260,17 @@
         <translation type="obsolete"><p>---sin descripción---</p></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="130"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="151"/>
         <source>Edit name...</source>
         <translation>Editar nombre...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="130"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="151"/>
         <source>Enter new waypoint name.</source>
         <translation>Introducir el nombre del nuevo waypoint.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="149"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="170"/>
         <source>Enter new proximity range.</source>
         <translation>Introduzca el nuevo valor de proximidad.</translation>
     </message>
@@ -228,7 +278,7 @@
 <context>
     <name>CElevationDialog</name>
     <message>
-        <location filename="../helpers/CElevationDialog.cpp" line="85"/>
+        <location filename="../helpers/CElevationDialog.cpp" line="83"/>
         <source>No DEM data found for that point.</source>
         <translation>No se encontraron datos DEM para ese punto.</translation>
     </message>
@@ -236,69 +286,69 @@
 <context>
     <name>CGisListDB</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="74"/>
+        <location filename="../gis/CGisListDB.cpp" line="73"/>
         <source>Add Database</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="77"/>
+        <location filename="../gis/CGisListDB.cpp" line="76"/>
         <source>Add Folder</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="78"/>
+        <location filename="../gis/CGisListDB.cpp" line="77"/>
         <source>Delete Folder</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="81"/>
-        <location filename="../gis/CGisListDB.cpp" line="91"/>
+        <location filename="../gis/CGisListDB.cpp" line="80"/>
+        <location filename="../gis/CGisListDB.cpp" line="90"/>
         <source>Delete Item</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="85"/>
+        <location filename="../gis/CGisListDB.cpp" line="84"/>
         <source>Remove Database</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="88"/>
+        <location filename="../gis/CGisListDB.cpp" line="87"/>
         <source>Empty</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="254"/>
+        <location filename="../gis/CGisListDB.cpp" line="251"/>
         <source>Remove database...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="254"/>
+        <location filename="../gis/CGisListDB.cpp" line="251"/>
         <source>Do you realy want to remove '%1' from the list?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="295"/>
+        <location filename="../gis/CGisListDB.cpp" line="292"/>
         <source>Delete database folder...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="295"/>
+        <location filename="../gis/CGisListDB.cpp" line="292"/>
         <source>Are you sure you want to delete "%1" from the database?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="321"/>
-        <location filename="../gis/CGisListDB.cpp" line="336"/>
+        <location filename="../gis/CGisListDB.cpp" line="318"/>
+        <location filename="../gis/CGisListDB.cpp" line="333"/>
         <source>Remove items...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="321"/>
+        <location filename="../gis/CGisListDB.cpp" line="318"/>
         <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="336"/>
+        <location filename="../gis/CGisListDB.cpp" line="333"/>
         <source>Are you sure you want to delete all selected items from Lost&Found? This will remove them permanently.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -316,87 +366,87 @@
         <translation>Guardar Como...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="84"/>
+        <location filename="../gis/CGisListWks.cpp" line="81"/>
         <source>Edit..</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="85"/>
+        <location filename="../gis/CGisListWks.cpp" line="84"/>
         <source>Close</source>
         <translation>Cerrar</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="91"/>
+        <location filename="../gis/CGisListWks.cpp" line="90"/>
         <source>Edit...</source>
         <translation>Editar...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="92"/>
+        <location filename="../gis/CGisListWks.cpp" line="91"/>
         <source>Copy to...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="103"/>
         <source>Move Waypoint</source>
         <translation>Mover Waypoint</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="105"/>
+        <location filename="../gis/CGisListWks.cpp" line="104"/>
         <source>Proj. Waypoint...</source>
         <translation>Proyectar Waypoint...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="93"/>
+        <location filename="../gis/CGisListWks.cpp" line="92"/>
         <source>Track Profile</source>
         <translation>Perfil del Track</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="95"/>
+        <location filename="../gis/CGisListWks.cpp" line="94"/>
         <source>Select Range</source>
         <translation>Seleccionar Rango</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="96"/>
+        <location filename="../gis/CGisListWks.cpp" line="95"/>
         <source>Edit Track Points</source>
         <translation>Editar Puntos del Track</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="97"/>
+        <location filename="../gis/CGisListWks.cpp" line="96"/>
         <source>Reverse Track</source>
         <translation>Invertir Track</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="98"/>
+        <location filename="../gis/CGisListWks.cpp" line="97"/>
         <source>Combine Tracks</source>
         <translation>Combinar Tracks</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="117"/>
+        <location filename="../gis/CGisListWks.cpp" line="116"/>
         <source>Edit Area Points</source>
         <translation>Editar Puntos del Área</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="99"/>
+        <location filename="../gis/CGisListWks.cpp" line="98"/>
         <source>Delete</source>
         <translation>Borrar</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="567"/>
+        <location filename="../gis/CGisListWks.cpp" line="564"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Guardando espacio de trabajo. Por favor espere.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="608"/>
+        <location filename="../gis/CGisListWks.cpp" line="605"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Cargando espacio de trabajo. Por favor espere.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1003"/>
+        <location filename="../gis/CGisListWks.cpp" line="1002"/>
         <source>Close all projects...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1003"/>
+        <location filename="../gis/CGisListWks.cpp" line="1002"/>
         <source>This will remove all projects from the workspace.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -404,12 +454,12 @@
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="349"/>
+        <location filename="../gis/CGisWidget.cpp" line="344"/>
         <source>Cut Track...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="349"/>
+        <location filename="../gis/CGisWidget.cpp" line="344"/>
         <source>Do you want to delete the original track?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -421,12 +471,12 @@
         <translation type="obsolete">[Malla: %1] </translation>
     </message>
     <message>
-        <location filename="../grid/CGrid.cpp" line="62"/>
+        <location filename="../grid/CGrid.cpp" line="61"/>
         <source>[Grid: %1%2%5 %3%4%5] </source>
         <translation type="unfinished">[Malla: %1]  {1%2%5 %3%4%5]?}</translation>
     </message>
     <message>
-        <location filename="../grid/CGrid.cpp" line="66"/>
+        <location filename="../grid/CGrid.cpp" line="65"/>
         <source>[Grid: N %1m, E %2m] </source>
         <translation>[Malla: N %1m, E %2m] </translation>
     </message>
@@ -434,7 +484,7 @@
 <context>
     <name>CHistoryListWidget</name>
     <message>
-        <location filename="../helpers/CHistoryListWidget.cpp" line="34"/>
+        <location filename="../helpers/CHistoryListWidget.cpp" line="33"/>
         <source>Cut history</source>
         <translation>Cortar historial</translation>
     </message>
@@ -447,12 +497,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CImportDatabase.cpp" line="74"/>
+        <location filename="../qlgt/CImportDatabase.cpp" line="73"/>
         <source>Select source database...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CImportDatabase.cpp" line="95"/>
+        <location filename="../qlgt/CImportDatabase.cpp" line="93"/>
         <source>Select target database...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -460,12 +510,12 @@
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="441"/>
+        <location filename="../CMainWindow.cpp" line="440"/>
         <source>Ele: %1%2</source>
         <translation>Alt: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="562"/>
+        <location filename="../CMainWindow.cpp" line="559"/>
         <source>Load GIS Data...</source>
         <translation>Cargar Datos GIS...</translation>
     </message>
@@ -473,630 +523,630 @@
 <context>
     <name>CMapIMG</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="140"/>
+        <location filename="../map/CMapIMG.cpp" line="151"/>
         <source>Failed ...</source>
         <translation>Falló ...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="156"/>
+        <location filename="../map/CMapIMG.cpp" line="166"/>
         <source>Unspecified</source>
         <translation>No especificado</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="157"/>
+        <location filename="../map/CMapIMG.cpp" line="167"/>
         <source>French</source>
         <translation>Francés</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="158"/>
+        <location filename="../map/CMapIMG.cpp" line="168"/>
         <source>German</source>
         <translation>Alemán</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="159"/>
+        <location filename="../map/CMapIMG.cpp" line="169"/>
         <source>Dutch</source>
         <translation>Holandés</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="160"/>
+        <location filename="../map/CMapIMG.cpp" line="170"/>
         <source>English</source>
         <translation>Inglés</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="161"/>
+        <location filename="../map/CMapIMG.cpp" line="171"/>
         <source>Italian</source>
         <translation>Italiano</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="162"/>
+        <location filename="../map/CMapIMG.cpp" line="172"/>
         <source>Finnish</source>
         <translation>Finés</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="163"/>
+        <location filename="../map/CMapIMG.cpp" line="173"/>
         <source>Swedish</source>
         <translation>Sueco</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="164"/>
+        <location filename="../map/CMapIMG.cpp" line="174"/>
         <source>Spanish</source>
         <translation>Español</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="165"/>
+        <location filename="../map/CMapIMG.cpp" line="175"/>
         <source>Basque</source>
         <translation>Euskera</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="166"/>
+        <location filename="../map/CMapIMG.cpp" line="176"/>
         <source>Catalan</source>
         <translation>Catalán</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="167"/>
+        <location filename="../map/CMapIMG.cpp" line="177"/>
         <source>Galician</source>
         <translation>Gallego</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="168"/>
+        <location filename="../map/CMapIMG.cpp" line="178"/>
         <source>Welsh</source>
         <translation>Galés</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="169"/>
+        <location filename="../map/CMapIMG.cpp" line="179"/>
         <source>Gaelic</source>
         <translation>Gaélico</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="170"/>
+        <location filename="../map/CMapIMG.cpp" line="180"/>
         <source>Danish</source>
         <translation>Danés</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="171"/>
+        <location filename="../map/CMapIMG.cpp" line="181"/>
         <source>Norwegian</source>
         <translation>Noruego</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="172"/>
+        <location filename="../map/CMapIMG.cpp" line="182"/>
         <source>Portuguese</source>
         <translation>Portugués</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="173"/>
+        <location filename="../map/CMapIMG.cpp" line="183"/>
         <source>Slovak</source>
         <translation>Eslovaco</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="174"/>
+        <location filename="../map/CMapIMG.cpp" line="184"/>
         <source>Czech</source>
         <translation>Checo</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="175"/>
+        <location filename="../map/CMapIMG.cpp" line="185"/>
         <source>Croatian</source>
         <translation>Croata</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="176"/>
+        <location filename="../map/CMapIMG.cpp" line="186"/>
         <source>Hungarian</source>
         <translation>Húngaro</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="177"/>
+        <location filename="../map/CMapIMG.cpp" line="187"/>
         <source>Polish</source>
         <translation>Polaco</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="178"/>
+        <location filename="../map/CMapIMG.cpp" line="188"/>
         <source>Turkish</source>
         <translation>Turco</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="179"/>
+        <location filename="../map/CMapIMG.cpp" line="189"/>
         <source>Greek</source>
         <translation>Griego</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="180"/>
+        <location filename="../map/CMapIMG.cpp" line="190"/>
         <source>Slovenian</source>
         <translation>Esloveno</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="181"/>
+        <location filename="../map/CMapIMG.cpp" line="191"/>
         <source>Russian</source>
         <translation>Ruso</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="182"/>
+        <location filename="../map/CMapIMG.cpp" line="192"/>
         <source>Estonian</source>
         <translation>Estonio</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="183"/>
+        <location filename="../map/CMapIMG.cpp" line="193"/>
         <source>Latvian</source>
         <translation>Letón</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="184"/>
+        <location filename="../map/CMapIMG.cpp" line="194"/>
         <source>Romanian</source>
         <translation>Rumano</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="185"/>
+        <location filename="../map/CMapIMG.cpp" line="195"/>
         <source>Albanian</source>
         <translation>Albanés</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="186"/>
+        <location filename="../map/CMapIMG.cpp" line="196"/>
         <source>Bosnian</source>
         <translation>Bosnio</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="187"/>
+        <location filename="../map/CMapIMG.cpp" line="197"/>
         <source>Lithuanian</source>
         <translation>Lituano</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="188"/>
+        <location filename="../map/CMapIMG.cpp" line="198"/>
         <source>Serbian</source>
         <translation>Serbio</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="189"/>
+        <location filename="../map/CMapIMG.cpp" line="199"/>
         <source>Macedonian</source>
         <translation>Macedonio</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="190"/>
+        <location filename="../map/CMapIMG.cpp" line="200"/>
         <source>Bulgarian</source>
         <translation>Búlgaro</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="247"/>
+        <location filename="../map/CMapIMG.cpp" line="257"/>
         <source>Major highway</source>
         <translation>Autovía Primaria</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="248"/>
+        <location filename="../map/CMapIMG.cpp" line="258"/>
         <source>Principal highway</source>
         <translation>Autovía secundaria</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="249"/>
+        <location filename="../map/CMapIMG.cpp" line="259"/>
         <source>Other highway</source>
         <translation>Otras autovías</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="250"/>
+        <location filename="../map/CMapIMG.cpp" line="260"/>
         <source>Arterial road</source>
         <translation>Carretera principal</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="251"/>
+        <location filename="../map/CMapIMG.cpp" line="261"/>
         <source>Collector road</source>
         <translation>Carretera secundaria</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="252"/>
+        <location filename="../map/CMapIMG.cpp" line="262"/>
         <source>Residential street</source>
         <translation>Calle residencial</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="253"/>
+        <location filename="../map/CMapIMG.cpp" line="263"/>
         <source>Alley/Private road</source>
         <translation>Callejón/Carretera privada</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="254"/>
+        <location filename="../map/CMapIMG.cpp" line="264"/>
         <source>Highway ramp, low speed</source>
         <translation>Acceso a autopista, baja velocidad</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="255"/>
+        <location filename="../map/CMapIMG.cpp" line="265"/>
         <source>Highway ramp, high speed</source>
         <translation>Acceso a autopista, alta velocidad</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="256"/>
+        <location filename="../map/CMapIMG.cpp" line="266"/>
         <source>Unpaved road</source>
         <translation>Carretera sin asfaltar</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="257"/>
+        <location filename="../map/CMapIMG.cpp" line="267"/>
         <source>Major highway connector</source>
         <translation>Conexión con autovía principal</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="258"/>
+        <location filename="../map/CMapIMG.cpp" line="268"/>
         <source>Roundabout</source>
         <translation>Rotonda</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="259"/>
+        <location filename="../map/CMapIMG.cpp" line="269"/>
         <source>Railroad</source>
         <translation>Ferrocarril</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="260"/>
+        <location filename="../map/CMapIMG.cpp" line="270"/>
         <source>Shoreline</source>
         <translation>Línea de costa</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="261"/>
+        <location filename="../map/CMapIMG.cpp" line="271"/>
         <source>Trail</source>
         <translation>Sendero</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="262"/>
+        <location filename="../map/CMapIMG.cpp" line="272"/>
         <source>Stream</source>
         <translation>Arroyo</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="263"/>
+        <location filename="../map/CMapIMG.cpp" line="273"/>
         <source>Time zone</source>
         <translation>Zona horaria</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="264"/>
-        <location filename="../map/CMapIMG.cpp" line="265"/>
+        <location filename="../map/CMapIMG.cpp" line="274"/>
+        <location filename="../map/CMapIMG.cpp" line="275"/>
         <source>Ferry</source>
         <translation>Ferry</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="266"/>
+        <location filename="../map/CMapIMG.cpp" line="276"/>
         <source>State/province border</source>
         <translation>Frontera de estado/provincia</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="267"/>
+        <location filename="../map/CMapIMG.cpp" line="277"/>
         <source>County/parish border</source>
         <translation>Frontera de condado/término municipal</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="268"/>
+        <location filename="../map/CMapIMG.cpp" line="278"/>
         <source>International border</source>
         <translation>Frontera internacional</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="269"/>
+        <location filename="../map/CMapIMG.cpp" line="279"/>
         <source>River</source>
         <translation>Río</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="270"/>
+        <location filename="../map/CMapIMG.cpp" line="280"/>
         <source>Minor land contour</source>
         <translation>Curva altimétrica menor</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="271"/>
+        <location filename="../map/CMapIMG.cpp" line="281"/>
         <source>Intermediate land contour</source>
         <translation>Curva altimétrica intermedia</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="272"/>
+        <location filename="../map/CMapIMG.cpp" line="282"/>
         <source>Major land contour</source>
         <translation>Curva altimétrica principal</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="273"/>
+        <location filename="../map/CMapIMG.cpp" line="283"/>
         <source>Minor depth contour</source>
         <translation>Curva batimétrica menor</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="274"/>
+        <location filename="../map/CMapIMG.cpp" line="284"/>
         <source>Intermediate depth contour</source>
         <translation>Curva batimétrica intermedia</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="275"/>
+        <location filename="../map/CMapIMG.cpp" line="285"/>
         <source>Major depth contour</source>
         <translation>Curva batimétrica principal</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="276"/>
+        <location filename="../map/CMapIMG.cpp" line="286"/>
         <source>Intermittent stream</source>
         <translation>Curso intermitente</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="277"/>
-        <location filename="../map/CMapIMG.cpp" line="359"/>
+        <location filename="../map/CMapIMG.cpp" line="287"/>
+        <location filename="../map/CMapIMG.cpp" line="369"/>
         <source>Airport runway</source>
         <translation>Pista de aterrizaje</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="278"/>
+        <location filename="../map/CMapIMG.cpp" line="288"/>
         <source>Pipeline</source>
         <translation>Tubería</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="279"/>
+        <location filename="../map/CMapIMG.cpp" line="289"/>
         <source>Powerline</source>
         <translation>Línea eléctrica</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="280"/>
+        <location filename="../map/CMapIMG.cpp" line="290"/>
         <source>Marine boundary</source>
         <translation>Límite marítimo</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="281"/>
+        <location filename="../map/CMapIMG.cpp" line="291"/>
         <source>Hazard boundary</source>
         <translation>Límite de peligro</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="346"/>
+        <location filename="../map/CMapIMG.cpp" line="356"/>
         <source>Large urban area (&gt;200K)</source>
         <translation>Área urbana grande (&gt;200K)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="347"/>
+        <location filename="../map/CMapIMG.cpp" line="357"/>
         <source>Small urban area (&lt;200K)</source>
         <translation>Área urbana pequeña (&lt;200K)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="348"/>
+        <location filename="../map/CMapIMG.cpp" line="358"/>
         <source>Rural housing area</source>
         <translation>Área de alojamienos rurales</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="349"/>
+        <location filename="../map/CMapIMG.cpp" line="359"/>
         <source>Military base</source>
         <translation>Base militar</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="350"/>
+        <location filename="../map/CMapIMG.cpp" line="360"/>
         <source>Parking lot</source>
         <translation>Aparcamiento</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="351"/>
+        <location filename="../map/CMapIMG.cpp" line="361"/>
         <source>Parking garage</source>
         <translation>Garaje</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="352"/>
+        <location filename="../map/CMapIMG.cpp" line="362"/>
         <source>Airport</source>
         <translation>Aeropuerto</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="353"/>
+        <location filename="../map/CMapIMG.cpp" line="363"/>
         <source>Shopping center</source>
         <translation>Centro comercial</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="354"/>
+        <location filename="../map/CMapIMG.cpp" line="364"/>
         <source>Marina</source>
         <translation>Puerto deportivo</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="355"/>
+        <location filename="../map/CMapIMG.cpp" line="365"/>
         <source>University/College</source>
         <translation>Universidad/Facultad</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="356"/>
+        <location filename="../map/CMapIMG.cpp" line="366"/>
         <source>Hospital</source>
         <translation>Hospital</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="357"/>
+        <location filename="../map/CMapIMG.cpp" line="367"/>
         <source>Industrial complex</source>
         <translation>Complejo industrial</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="358"/>
+        <location filename="../map/CMapIMG.cpp" line="368"/>
         <source>Reservation</source>
         <translation>Reserva natural</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="360"/>
+        <location filename="../map/CMapIMG.cpp" line="370"/>
         <source>Man-made area</source>
         <translation>Área creada por el hombre</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="361"/>
+        <location filename="../map/CMapIMG.cpp" line="371"/>
         <source>Sports complex</source>
         <translation>Complejo deportivo</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="362"/>
+        <location filename="../map/CMapIMG.cpp" line="372"/>
         <source>Golf course</source>
         <translation>Recorrido de golf</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="363"/>
+        <location filename="../map/CMapIMG.cpp" line="373"/>
         <source>Cemetery</source>
         <translation>Cementerio</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="364"/>
-        <location filename="../map/CMapIMG.cpp" line="365"/>
-        <location filename="../map/CMapIMG.cpp" line="366"/>
+        <location filename="../map/CMapIMG.cpp" line="374"/>
+        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <location filename="../map/CMapIMG.cpp" line="376"/>
         <source>National park</source>
         <translation>Parque nacional</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="367"/>
+        <location filename="../map/CMapIMG.cpp" line="377"/>
         <source>City park</source>
         <translation>Parque urbano</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="368"/>
-        <location filename="../map/CMapIMG.cpp" line="369"/>
-        <location filename="../map/CMapIMG.cpp" line="370"/>
+        <location filename="../map/CMapIMG.cpp" line="378"/>
+        <location filename="../map/CMapIMG.cpp" line="379"/>
+        <location filename="../map/CMapIMG.cpp" line="380"/>
         <source>State park</source>
         <translation>Parque regional</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="371"/>
+        <location filename="../map/CMapIMG.cpp" line="381"/>
         <source>Forest</source>
         <translation>Bosque</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="372"/>
+        <location filename="../map/CMapIMG.cpp" line="382"/>
         <source>Ocean</source>
         <translation>Océano</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="373"/>
-        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <location filename="../map/CMapIMG.cpp" line="383"/>
         <location filename="../map/CMapIMG.cpp" line="385"/>
+        <location filename="../map/CMapIMG.cpp" line="395"/>
         <source>Blue (unknown)</source>
         <translation>Azul (desconocido)</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="374"/>
+        <location filename="../map/CMapIMG.cpp" line="384"/>
         <source>Sea</source>
         <translation>Mar</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="376"/>
-        <location filename="../map/CMapIMG.cpp" line="377"/>
-        <location filename="../map/CMapIMG.cpp" line="384"/>
+        <location filename="../map/CMapIMG.cpp" line="386"/>
+        <location filename="../map/CMapIMG.cpp" line="387"/>
+        <location filename="../map/CMapIMG.cpp" line="394"/>
         <source>Large lake</source>
         <translation>Lago grande</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="378"/>
-        <location filename="../map/CMapIMG.cpp" line="379"/>
+        <location filename="../map/CMapIMG.cpp" line="388"/>
+        <location filename="../map/CMapIMG.cpp" line="389"/>
         <source>Medium lake</source>
         <translation>Lago mediano</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="380"/>
-        <location filename="../map/CMapIMG.cpp" line="381"/>
+        <location filename="../map/CMapIMG.cpp" line="390"/>
+        <location filename="../map/CMapIMG.cpp" line="391"/>
         <source>Small lake</source>
         <translation>Lago pequeño</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="382"/>
-        <location filename="../map/CMapIMG.cpp" line="383"/>
+        <location filename="../map/CMapIMG.cpp" line="392"/>
+        <location filename="../map/CMapIMG.cpp" line="393"/>
         <source>Major lake</source>
         <translation>Lago principal</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="386"/>
+        <location filename="../map/CMapIMG.cpp" line="396"/>
         <source>Major River</source>
         <translation>Río Principal</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="387"/>
+        <location filename="../map/CMapIMG.cpp" line="397"/>
         <source>Large River</source>
         <translation>Río Grande</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="388"/>
+        <location filename="../map/CMapIMG.cpp" line="398"/>
         <source>Medium River</source>
         <translation>Río Mediano</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="389"/>
+        <location filename="../map/CMapIMG.cpp" line="399"/>
         <source>Small River</source>
         <translation>Río Pequeño</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="392"/>
+        <location filename="../map/CMapIMG.cpp" line="402"/>
         <source>Intermittent water</source>
         <translation>Agua intermitente</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="393"/>
+        <location filename="../map/CMapIMG.cpp" line="403"/>
         <source>Wetland/Swamp</source>
         <translation>Marisma/Ciénaga</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="394"/>
+        <location filename="../map/CMapIMG.cpp" line="404"/>
         <source>Glacier</source>
         <translation>Glaciar</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="395"/>
+        <location filename="../map/CMapIMG.cpp" line="405"/>
         <source>Orchard/Plantation</source>
         <translation>Invernadero/Plantación</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="396"/>
+        <location filename="../map/CMapIMG.cpp" line="406"/>
         <source>Scrub</source>
         <translation>Monte bajo</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="397"/>
+        <location filename="../map/CMapIMG.cpp" line="407"/>
         <source>Tundra</source>
         <translation>Tundra</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="398"/>
+        <location filename="../map/CMapIMG.cpp" line="408"/>
         <source>Flat</source>
         <translation>Llanura</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="399"/>
+        <location filename="../map/CMapIMG.cpp" line="409"/>
         <source>???</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="437"/>
+        <location filename="../map/CMapIMG.cpp" line="445"/>
         <source>Failed to read: </source>
         <translation>Fallo al leer: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="481"/>
+        <location filename="../map/CMapIMG.cpp" line="488"/>
         <source>Failed to open: </source>
         <translation>Fallo al abrir: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="505"/>
-        <location filename="../map/CMapIMG.cpp" line="509"/>
+        <location filename="../map/CMapIMG.cpp" line="512"/>
+        <location filename="../map/CMapIMG.cpp" line="516"/>
         <source>Bad file format: </source>
         <translation>Formato de archivo incorrecto: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="600"/>
+        <location filename="../map/CMapIMG.cpp" line="605"/>
         <source>Failed to read file structure: </source>
         <translation>Fallo al leer la estructura del archivo: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="633"/>
+        <location filename="../map/CMapIMG.cpp" line="638"/>
         <source>Loading %1</source>
         <translation>Cargando %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="638"/>
+        <location filename="../map/CMapIMG.cpp" line="643"/>
         <source>User abort: </source>
         <translation>Abortado por el usuario: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="639"/>
+        <location filename="../map/CMapIMG.cpp" line="646"/>
         <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="727"/>
+        <location filename="../map/CMapIMG.cpp" line="738"/>
         <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="2377"/>
-        <location filename="../map/CMapIMG.cpp" line="2385"/>
-        <location filename="../map/CMapIMG.cpp" line="2389"/>
-        <location filename="../map/CMapIMG.cpp" line="2394"/>
-        <location filename="../map/CMapIMG.cpp" line="2441"/>
-        <location filename="../map/CMapIMG.cpp" line="2449"/>
-        <location filename="../map/CMapIMG.cpp" line="2453"/>
-        <location filename="../map/CMapIMG.cpp" line="2458"/>
+        <location filename="../map/CMapIMG.cpp" line="2467"/>
+        <location filename="../map/CMapIMG.cpp" line="2475"/>
+        <location filename="../map/CMapIMG.cpp" line="2479"/>
+        <location filename="../map/CMapIMG.cpp" line="2484"/>
+        <location filename="../map/CMapIMG.cpp" line="2530"/>
+        <location filename="../map/CMapIMG.cpp" line="2538"/>
+        <location filename="../map/CMapIMG.cpp" line="2542"/>
+        <location filename="../map/CMapIMG.cpp" line="2547"/>
         <source>Point of Interest</source>
         <translation>Punto de Interés</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2583"/>
+        <location filename="../map/CMapIMG.cpp" line="2674"/>
         <source>Unknown</source>
         <translation>Desconocido</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2630"/>
-        <location filename="../map/CMapIMG.cpp" line="2639"/>
-        <location filename="../map/CMapIMG.cpp" line="2646"/>
+        <location filename="../map/CMapIMG.cpp" line="2720"/>
+        <location filename="../map/CMapIMG.cpp" line="2728"/>
+        <location filename="../map/CMapIMG.cpp" line="2735"/>
         <source>Area</source>
         <translation>Área</translation>
     </message>
@@ -1104,12 +1154,12 @@
 <context>
     <name>CMapList</name>
     <message>
-        <location filename="../map/CMapList.cpp" line="148"/>
+        <location filename="../map/CMapList.cpp" line="150"/>
         <source>Deactivate</source>
         <translation>Desactivar</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="148"/>
+        <location filename="../map/CMapList.cpp" line="150"/>
         <source>Activate</source>
         <translation>Activar</translation>
     </message>
@@ -1117,17 +1167,17 @@
 <context>
     <name>CMapMAP</name>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="46"/>
+        <location filename="../map/CMapMAP.cpp" line="45"/>
         <source>Failed ...</source>
         <translation>Falló...</translation>
     </message>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="65"/>
+        <location filename="../map/CMapMAP.cpp" line="62"/>
         <source>Failed to open: </source>
         <translation>Fallo al abrir: </translation>
     </message>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="75"/>
+        <location filename="../map/CMapMAP.cpp" line="72"/>
         <source>Bad file format: </source>
         <translation>Formato de archivo incorrecto: </translation>
     </message>
@@ -1140,7 +1190,7 @@
         <translation>Añada o elimine rutas que contengan mapas. Puede haber múltiples mapas en una ruta, pero no se buscará en subdirectorios. Los formatos soportados son: %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapPathSetup.cpp" line="55"/>
+        <location filename="../map/CMapPathSetup.cpp" line="54"/>
         <source>Select map path...</source>
         <translation>Selecciona la ruta del mapa...</translation>
     </message>
@@ -1148,7 +1198,7 @@
 <context>
     <name>CMapPropSetup</name>
     <message>
-        <location filename="../map/CMapPropSetup.cpp" line="151"/>
+        <location filename="../map/CMapPropSetup.cpp" line="147"/>
         <source>Cache path...</source>
         <translation>Ruta de la caché...</translation>
     </message>
@@ -1299,7 +1349,7 @@ Estructura desconocida.</translation>
         <translation>No se encontró información de georreferenciación.</translation>
     </message>
     <message>
-        <location filename="../map/CMapWMTS.cpp" line="385"/>
+        <location filename="../map/CMapWMTS.cpp" line="384"/>
         <source><b>%1</b>: %2 tiles pending<br/></source>
         <translation><b>%1</b>: %2 teselas pendientes<br/></translation>
     </message>
@@ -1352,19 +1402,31 @@ Estructura desconocida.</translation>
     </message>
 </context>
 <context>
+    <name>CPhotoAlbum</name>
+    <message>
+        <location filename="../helpers/CPhotoAlbum.cpp" line="65"/>
+        <source>Select images...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CPlotDistance</name>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="55"/>
+        <location filename="../plot/CPlotDistance.cpp" line="53"/>
         <source>distance [%1]</source>
         <translation>distancia [%1]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="59"/>
+        <location filename="../plot/CPlotDistance.cpp" line="57"/>
+        <source>time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>time [h]</source>
-        <translation>tiempo [h]</translation>
+        <translation type="obsolete">tiempo [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="61"/>
+        <location filename="../plot/CPlotDistance.cpp" line="59"/>
         <source>distance. [%1]</source>
         <translation>distancia. [%1]</translation>
     </message>
@@ -1372,17 +1434,17 @@ Estructura desconocida.</translation>
 <context>
     <name>CPlotProfile</name>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="67"/>
+        <location filename="../plot/CPlotProfile.cpp" line="63"/>
         <source>distance [%1]</source>
         <translation>distancia [%1]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="71"/>
+        <location filename="../plot/CPlotProfile.cpp" line="67"/>
         <source>time [h]</source>
         <translation>tiempo [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="73"/>
+        <location filename="../plot/CPlotProfile.cpp" line="69"/>
         <source>alt. [%1]</source>
         <translation>alt. [%1]</translation>
     </message>
@@ -1390,17 +1452,17 @@ Estructura desconocida.</translation>
 <context>
     <name>CPlotSpeed</name>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="54"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="52"/>
         <source>distance [%1]</source>
         <translation>distancia [%1]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="58"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="56"/>
         <source>time [h]</source>
         <translation>tiempo [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="60"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="58"/>
         <source>speed. [%1]</source>
         <translation>velocidad. [%1]</translation>
     </message>
@@ -1418,12 +1480,12 @@ Estructura desconocida.</translation>
         <translation>sur</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="211"/>
+        <location filename="../grid/CProjWizard.cpp" line="213"/>
         <source>Error...</source>
         <translation>Error...</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="211"/>
+        <location filename="../grid/CProjWizard.cpp" line="213"/>
         <source>The value
 '%1'
 is not a valid coordinate system definition:
@@ -1437,12 +1499,12 @@ no es una definición de sistema de coordenadas válido:
 <context>
     <name>CProjWpt</name>
     <message>
-        <location filename="../gis/wpt/CProjWpt.cpp" line="63"/>
+        <location filename="../gis/wpt/CProjWpt.cpp" line="62"/>
         <source>Edit name...</source>
         <translation>Editar nombre...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CProjWpt.cpp" line="63"/>
+        <location filename="../gis/wpt/CProjWpt.cpp" line="62"/>
         <source>Enter new waypoint name.</source>
         <translation>Introduzca el nuevo nombre del waypoint.</translation>
     </message>
@@ -1535,38 +1597,38 @@ no es una definición de sistema de coordenadas válido:
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="636"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="635"/>
         <source>Restore folders...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="636"/>
-        <location filename="../qlgt/CQlgtDb.cpp" line="669"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="635"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="668"/>
         <source>Abort</source>
         <translation type="unfinished">Abortar</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="663"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="662"/>
         <source>Imported %1 folders and %2 diaries</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="669"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="668"/>
         <source>Copy items...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="694"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="692"/>
         <source>Imported %1 tracks, %2 waypoints, %3 routes, %4 areas</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="695"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="693"/>
         <source>Import folders...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="747"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="748"/>
         <source>Overlay of type '%1' cant be converted</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1589,7 +1651,7 @@ no es una definición de sistema de coordenadas válido:
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="158"/>
+        <location filename="../qlgt/CQmsDb.cpp" line="160"/>
         <source>%1: drop item with QLGT DB ID %2</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1597,12 +1659,12 @@ no es una definición de sistema de coordenadas válido:
 <context>
     <name>CSearchGoogle</name>
     <message>
-        <location filename="../gis/search/CSearchGoogle.cpp" line="120"/>
+        <location filename="../gis/search/CSearchGoogle.cpp" line="119"/>
         <source>Unknown response</source>
         <translation>Respuesta desconocida</translation>
     </message>
     <message>
-        <location filename="../gis/search/CSearchGoogle.cpp" line="130"/>
+        <location filename="../gis/search/CSearchGoogle.cpp" line="129"/>
         <source>Error: </source>
         <translation>Error: </translation>
     </message>
@@ -1625,22 +1687,22 @@ no es una definición de sistema de coordenadas válido:
 <context>
     <name>CSetupDatabase</name>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="71"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="69"/>
         <source>Error...</source>
         <translation type="unfinished">Error...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="71"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="69"/>
         <source>There is already a database with name '%1'</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="85"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="83"/>
         <source>New database...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="110"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="108"/>
         <source>Open database...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1648,12 +1710,12 @@ no es una definición de sistema de coordenadas válido:
 <context>
     <name>CSetupWorkspace</name>
     <message>
-        <location filename="../gis/db/CSetupWorkspace.cpp" line="52"/>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
         <source>Setup database...</source>
         <translation type="unfinished">Configurar la base de datos...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupWorkspace.cpp" line="52"/>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
         <source>Changes will become active after an application's restart.</source>
         <translation type="unfinished">Los cambios surtirán efecto tras reiniciar la aplicación.</translation>
     </message>
@@ -1715,9 +1777,13 @@ no es una definición de sistema de coordenadas válido:
 <context>
     <name>ICanvasSetup</name>
     <message>
-        <location filename="../canvas/ICanvasSetup.ui" line="14"/>
         <source>Setup Map Workspace...</source>
-        <translation>Configurar Espacio de Trabajo del Mapa...</translation>
+        <translation type="obsolete">Configurar Espacio de Trabajo del Mapa...</translation>
+    </message>
+    <message>
+        <location filename="../canvas/ICanvasSetup.ui" line="14"/>
+        <source>Setup Map View...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../canvas/ICanvasSetup.ui" line="22"/>
@@ -1799,27 +1865,27 @@ no es una definición de sistema de coordenadas válido:
         <translation><html><head/><body><p>Pulse para usar la escala actual como la escala máxima a la que mostrar el mapa</p></body></html></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="124"/>
+        <location filename="../dem/IDemPropSetup.ui" line="115"/>
         <source>Hillshading</source>
         <translation>Sombreado</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="150"/>
+        <location filename="../dem/IDemPropSetup.ui" line="141"/>
         <source>Slope </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="192"/>
-        <location filename="../dem/IDemPropSetup.ui" line="199"/>
-        <location filename="../dem/IDemPropSetup.ui" line="206"/>
-        <location filename="../dem/IDemPropSetup.ui" line="213"/>
-        <location filename="../dem/IDemPropSetup.ui" line="232"/>
-        <location filename="../dem/IDemPropSetup.ui" line="251"/>
-        <location filename="../dem/IDemPropSetup.ui" line="270"/>
-        <location filename="../dem/IDemPropSetup.ui" line="277"/>
-        <location filename="../dem/IDemPropSetup.ui" line="284"/>
-        <location filename="../dem/IDemPropSetup.ui" line="303"/>
-        <location filename="../dem/IDemPropSetup.ui" line="310"/>
+        <location filename="../dem/IDemPropSetup.ui" line="183"/>
+        <location filename="../dem/IDemPropSetup.ui" line="190"/>
+        <location filename="../dem/IDemPropSetup.ui" line="197"/>
+        <location filename="../dem/IDemPropSetup.ui" line="204"/>
+        <location filename="../dem/IDemPropSetup.ui" line="223"/>
+        <location filename="../dem/IDemPropSetup.ui" line="242"/>
+        <location filename="../dem/IDemPropSetup.ui" line="261"/>
+        <location filename="../dem/IDemPropSetup.ui" line="268"/>
+        <location filename="../dem/IDemPropSetup.ui" line="275"/>
+        <location filename="../dem/IDemPropSetup.ui" line="294"/>
+        <location filename="../dem/IDemPropSetup.ui" line="301"/>
         <source>TextLabel</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1855,48 +1921,48 @@ no es una definición de sistema de coordenadas válido:
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="35"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="66"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="70"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="92"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="105"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="118"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="131"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="144"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="157"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="170"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="183"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="196"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="209"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="222"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="235"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="248"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="43"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="62"/>
         <source>about:blank</source>
         <translation>about:blank</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="59"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="85"/>
         <source>Position:</source>
         <translation>Posición:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="79"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="105"/>
         <source>Difficulty</source>
         <translation>Dificultad</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="157"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="183"/>
         <source>Terrain</source>
         <translation>Terreno</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="231"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="35"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="249"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="259"/>
         <source>Hint:</source>
         <translation>Consejo:</translation>
     </message>
@@ -1962,14 +2028,39 @@ no es una definición de sistema de coordenadas válido:
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="44"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="51"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="75"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="50"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="57"/>
         <source>-</source>
         <translation type="unfinished">-</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="68"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="70"/>
+        <source>Sort By Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="86"/>
+        <source>Keep Order of Project</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="93"/>
+        <source>Print diary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="96"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="116"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="113"/>
+        <source>Rebuild diary.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="43"/>
         <source>Keywords:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2084,47 +2175,59 @@ no es una definición de sistema de coordenadas válido:
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="128"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="249"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="207"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="236"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="273"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="293"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="162"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="52"/>
         <source>Position:</source>
         <translation>Posición:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="72"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="90"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="59"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="85"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="111"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="151"/>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="169"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="195"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="221"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="182"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="72"/>
         <source>Ele.</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="208"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="98"/>
         <source>Proximity:</source>
         <translation>Proximidad:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="109"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="188"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation><html><head/><body><p>El waypoint se importó en QMapShack y ha sido modificado, por lo que ya no muestra los datos originales. Por favor consulte  los cambios en el histórico. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="125"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="204"/>
         <source><html><head/><body><p>Read Only Mode</p></body></html></source>
         <translation><html><head/><body><p>Modo Sólo Lectura</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="65"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="270"/>
+        <source>Add images.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="290"/>
+        <source>Delete selected image.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="144"/>
         <source>Date/Time:</source>
         <translation>Fecha/Hora:</translation>
     </message>
@@ -2349,6 +2452,29 @@ no es una definición de sistema de coordenadas válido:
     </message>
 </context>
 <context>
+    <name>IFilterReset</name>
+    <message>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="35"/>
+        <source><b>Reset Hidden Track Points</b></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="47"/>
+        <source>Make all trackpoints visible again.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="54"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+</context>
+<context>
     <name>IFilterSpeed</name>
     <message>
         <location filename="../gis/trk/filter/IFilterSpeed.ui" line="14"/>
@@ -2571,168 +2697,178 @@ no es una definición de sistema de coordenadas válido:
         <translation>Datos</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="211"/>
         <source>Add Map Workspace</source>
-        <translation>Añadir Espacio de Trabajo de Mapa</translation>
+        <translation type="obsolete">Añadir Espacio de Trabajo de Mapa</translation>
     </message>
     <message>
+        <location filename="../IMainWindow.ui" line="211"/>
         <location filename="../IMainWindow.ui" line="214"/>
+        <source>Add Map View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="217"/>
         <source>Ctrl+T</source>
         <translation>Ctrl+T</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="226"/>
+        <location filename="../IMainWindow.ui" line="229"/>
         <source>Show Scale</source>
         <translation>Mostrar Escala</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="235"/>
+        <location filename="../IMainWindow.ui" line="238"/>
         <source>Setup Map Font</source>
         <translation>Configurar Fuente del Mapa</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="247"/>
+        <location filename="../IMainWindow.ui" line="250"/>
         <source>Show Grid</source>
         <translation>Mostrar Malla</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="250"/>
+        <location filename="../IMainWindow.ui" line="253"/>
         <source>Ctrl+G</source>
         <translation>Ctrl+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="259"/>
+        <location filename="../IMainWindow.ui" line="262"/>
         <source>Setup Grid</source>
         <translation>Configurar Malla</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="262"/>
+        <location filename="../IMainWindow.ui" line="265"/>
         <source>Ctrl+Alt+G</source>
         <translation>Ctrl+Alt+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="274"/>
+        <location filename="../IMainWindow.ui" line="277"/>
         <source>Flip Mouse Wheel</source>
         <translation>Invertir la Rueda del Ratón</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="283"/>
         <location filename="../IMainWindow.ui" line="286"/>
+        <location filename="../IMainWindow.ui" line="289"/>
         <source>Setup Map Paths</source>
         <translation>Configurar Rutas de Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="298"/>
+        <location filename="../IMainWindow.ui" line="301"/>
         <source>POI Text</source>
         <translation>Texto del POI</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="310"/>
+        <location filename="../IMainWindow.ui" line="313"/>
         <source>Night / Day</source>
         <translation>Noche / Día</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="322"/>
+        <location filename="../IMainWindow.ui" line="325"/>
         <source>Map Tool Tip</source>
         <translation>Mostrar Tooltips en los Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="331"/>
+        <location filename="../IMainWindow.ui" line="334"/>
         <source>Setup DEM Paths</source>
         <translation>Configurar Rutas a los DEM</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="340"/>
+        <location filename="../IMainWindow.ui" line="343"/>
         <source>About</source>
         <translation>Acerca de</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="349"/>
+        <location filename="../IMainWindow.ui" line="352"/>
         <source>Help</source>
         <translation>Ayuda</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="358"/>
+        <location filename="../IMainWindow.ui" line="361"/>
+        <location filename="../IMainWindow.ui" line="364"/>
+        <source>Setup Map View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Setup Map Workspace</source>
-        <translation>Configurar Espacio de Trabajo de Mapas</translation>
+        <translation type="obsolete">Configurar Espacio de Trabajo de Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="367"/>
+        <location filename="../IMainWindow.ui" line="373"/>
         <source>Load GIS Data</source>
         <translation>Cargar Datos GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="370"/>
+        <location filename="../IMainWindow.ui" line="376"/>
         <source>Load projects from file</source>
         <translation>Cargar proyectos desde archivo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="373"/>
+        <location filename="../IMainWindow.ui" line="379"/>
         <source>Ctrl+L</source>
         <translation>Ctrl+L</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="382"/>
+        <location filename="../IMainWindow.ui" line="388"/>
         <source>Save All GIS Data</source>
         <translation>Guardar Todos los Datos GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="385"/>
+        <location filename="../IMainWindow.ui" line="391"/>
         <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="388"/>
+        <location filename="../IMainWindow.ui" line="394"/>
         <source>Ctrl+S</source>
         <translation>Ctrl+S</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="397"/>
+        <location filename="../IMainWindow.ui" line="403"/>
         <source>Setup Time Zone</source>
         <translation>Configurar Zona Horaria</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="406"/>
+        <location filename="../IMainWindow.ui" line="412"/>
         <source>Add empty project</source>
         <translation>Añadir proyecto vacío</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="418"/>
+        <location filename="../IMainWindow.ui" line="424"/>
         <source>Search Google</source>
         <translation>Buscar en Google</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="427"/>
+        <location filename="../IMainWindow.ui" line="433"/>
         <source>Close all projects</source>
         <translation>Cerrar todos los proyectos</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="430"/>
+        <location filename="../IMainWindow.ui" line="436"/>
         <source>F8</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="439"/>
+        <location filename="../IMainWindow.ui" line="445"/>
         <source>Setup Units</source>
         <translation>Configurar Unidades</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="448"/>
+        <location filename="../IMainWindow.ui" line="454"/>
         <source>Setup Workspace</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="451"/>
+        <location filename="../IMainWindow.ui" line="457"/>
         <source>Setup save on exit.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="460"/>
+        <location filename="../IMainWindow.ui" line="466"/>
         <source>Import Database from QLandkarte</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="463"/>
+        <location filename="../IMainWindow.ui" line="469"/>
         <source>Import QLandkarte GT database</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2851,30 +2987,44 @@ no es una definición de sistema de coordenadas válido:
 <context>
     <name>IMouseEditLine</name>
     <message>
-        <location filename="../mouse/IMouseEditLine.cpp" line="339"/>
+        <location filename="../mouse/IMouseEditLine.cpp" line="338"/>
         <source>Add points?</source>
         <translation>¿Añadir puntos?</translation>
     </message>
     <message>
-        <location filename="../mouse/IMouseEditLine.cpp" line="339"/>
+        <location filename="../mouse/IMouseEditLine.cpp" line="338"/>
         <source>Add points to temporary line?</source>
         <translation>¿Añadir puntos a la línea temporal?</translation>
     </message>
     <message>
-        <location filename="../mouse/IMouseEditLine.cpp" line="876"/>
+        <location filename="../mouse/IMouseEditLine.cpp" line="881"/>
         <source>Warning!</source>
         <translation>¡Cuidado!</translation>
     </message>
     <message>
-        <location filename="../mouse/IMouseEditLine.cpp" line="876"/>
+        <location filename="../mouse/IMouseEditLine.cpp" line="881"/>
         <source>This will replace all data of the orignal by a simple line of coordinates. All other data will be lost permanently.</source>
         <translation>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>
 </context>
 <context>
+    <name>IPhotoAlbum</name>
+    <message>
+        <location filename="../helpers/IPhotoAlbum.ui" line="20"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../helpers/IPhotoAlbum.ui" line="50"/>
+        <location filename="../helpers/IPhotoAlbum.ui" line="77"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+</context>
+<context>
     <name>IPlot</name>
     <message>
-        <location filename="../plot/IPlot.cpp" line="465"/>
+        <location filename="../plot/IPlot.cpp" line="481"/>
         <source>No or bad data.</source>
         <translation>Datos incorrectos o inexistentes.</translation>
     </message>
@@ -3467,9 +3617,13 @@ o
 <context>
     <name>ISetupWorkspace</name>
     <message>
-        <location filename="../gis/db/ISetupWorkspace.ui" line="14"/>
         <source>Setup database...</source>
-        <translation type="unfinished">Configurar la base de datos...</translation>
+        <translation type="obsolete">Configurar la base de datos...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="14"/>
+        <source>Setup workspace...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupWorkspace.ui" line="35"/>
@@ -3507,122 +3661,122 @@ o
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="263"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="256"/>
         <source>Undo</source>
         <translation>Deshacer</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="266"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="259"/>
         <source>Ctrl+Z</source>
         <translation>Ctrl+Z</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="275"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="268"/>
         <source>Redo</source>
         <translation>Rehacer</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="278"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="271"/>
         <source>Ctrl+Shift+Z</source>
         <translation>Ctrl+Shift+Z</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="287"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="280"/>
         <source>Cut</source>
         <translation>Cortar</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="290"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="283"/>
         <source>Ctrl+X</source>
         <translation>Ctrl+X</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="299"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="292"/>
         <source>Copy</source>
         <translation>Copiar</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="302"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="295"/>
         <source>Ctrl+C</source>
         <translation>Ctrl+C</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="311"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="304"/>
         <source>Paste</source>
         <translation>Pegar</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="314"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="307"/>
         <source>Ctrl+V</source>
         <translation>Ctrl+V</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="326"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="319"/>
         <source>Align Left</source>
         <translation>Alinear a la Izquierda</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="329"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="322"/>
         <source>Ctrl+L</source>
         <translation>Ctrl+L</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="341"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="334"/>
         <source>Align Right</source>
         <translation>Alinear a la Derecha</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="344"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="337"/>
         <source>Ctrl+R</source>
         <translation>Ctrl+R</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="356"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="349"/>
         <source>Align Center</source>
         <translation>Alinear al Centro</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="359"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="352"/>
         <source>Ctrl+E</source>
         <translation>Ctrl+E</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="371"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="364"/>
         <source>Align Block</source>
         <translation>Alinear Bloque</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="374"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="367"/>
         <source>Ctrl+J</source>
         <translation>Ctrl+J</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="386"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="379"/>
         <source>Underline</source>
         <translation>Subrayar</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="389"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="382"/>
         <source>Ctrl+U</source>
         <translation>Ctrl+U</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="401"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="394"/>
         <source>Bold</source>
         <translation>Negrita</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="404"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="397"/>
         <source>Ctrl+B</source>
         <translation>Ctrl+B</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="416"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="409"/>
         <source>Italic</source>
         <translation>Cursiva</translation>
     </message>
     <message>
-        <location filename="../helpers/ITextEditWidget.ui" line="419"/>
+        <location filename="../helpers/ITextEditWidget.ui" line="412"/>
         <source>Ctrl+I</source>
         <translation>Ctrl+I</translation>
     </message>
@@ -3744,65 +3898,65 @@ Areas: %1</source>
 Áreas: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="168"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="165"/>
         <source><br/>
 Filename: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="185"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="182"/>
         <source>Waypoints: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="189"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="186"/>
         <source>Tracks: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="193"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="190"/>
         <source>Routes: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="197"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="194"/>
         <source>Areas: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="255"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="250"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
         <translation>¿Está seguro de que quiere borrar '%1' del proyecto '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="410"/>
+        <location filename="../gis/CGisListDB.cpp" line="406"/>
         <source>Are you sure you want to delete '%1' from folder '%2'?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="411"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="256"/>
+        <location filename="../gis/CGisListDB.cpp" line="407"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="251"/>
         <source>Delete...</source>
         <translation>Borrar...</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="53"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="145"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="143"/>
         <source>Failed to open...</source>
         <translation>Fallo al abrir...</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="53"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="145"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="143"/>
         <source>Failed to open %1</source>
         <translation>Fallo al abrir %1</translation>
     </message>
     <message>
         <location filename="../gis/db/CDBProject.cpp" line="125"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="155"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="95"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="154"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="93"/>
         <source>Save GIS data to...</source>
         <translation>Guardar los datos GIS en...</translation>
     </message>
@@ -3817,374 +3971,382 @@ Filename: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="231"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="229"/>
         <source>File exists ...</source>
         <translation>El archivo ya existe ...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="232"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="230"/>
         <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>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>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="298"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="296"/>
         <source>Failed to create file '%1'</source>
         <translation>Fallo al crear el archivo '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="298"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="308"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="296"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="306"/>
         <source>Saveing GIS data failed...</source>
         <translation>Fallo al guardar los datos GIS...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="308"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="306"/>
         <source>Failed to write file '%1'</source>
         <translation>Fallo al escribir en el archivo '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="334"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="332"/>
         <source>Length: %1 %2</source>
         <translation>Longitud: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="341"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="339"/>
         <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="349"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="347"/>
         <source>Time: %1</source>
         <translation>Tiempo: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="352"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="362"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="350"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="360"/>
         <source>, Speed: %1 %2</source>
         <translation>, Velocidad: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="359"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="357"/>
         <source>Moving: %1</source>
         <translation>En movimiento: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="368"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="366"/>
         <source>Start: %1</source>
         <translation>Comienzo: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="373"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="371"/>
         <source>End: %1</source>
         <translation>Final: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="377"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="375"/>
         <source>Points: %1 (%2)</source>
         <translation>Puntos: %1 (%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="442"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="440"/>
         <source>Ele.: %1 %2</source>
         <translation>Altitud: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="445"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="443"/>
         <source> slope: %1%3 (%2%)</source>
         <translation> pendiente: %1%3 (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="450"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="448"/>
         <source> speed: %1%2</source>
         <translation> velocidad: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="462"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="460"/>
         <source>Ascend: %1%2 (%3%)</source>
         <translation>Ascenso: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="466"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="464"/>
         <source>Ascend: - (-)</source>
         <translation>Ascenso: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="476"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="474"/>
         <source> Descend: - (-) </source>
         <translation> Descenso: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="497"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="495"/>
         <source> Moving: - (-) </source>
         <translation> En movimiento: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="973"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1089"/>
         <source>Hide points.</source>
         <translation>Ocultar puntos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1007"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1123"/>
         <source>Show points.</source>
         <translation>Mostrar puntos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="472"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="470"/>
         <source> Descend: %1%2 (%3%)</source>
         <translation> Descenso: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="267"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="265"/>
         <source>Changed trackpoints, sacrificed all previous data.</source>
         <translation>Se cambiaron los puntos del track, y descartados todos los datos previos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="483"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="481"/>
         <source>Dist.: %1%2 (%3%)</source>
         <translation>Distancia: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="487"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="485"/>
         <source>Dist.: - (-)</source>
         <translation>Dist.: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="493"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="491"/>
         <source> Moving: %1%2 (%3%)</source>
         <translation> En movimiento: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="96"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="95"/>
         <source>thin</source>
         <translation>fino</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="97"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="96"/>
         <source>normal</source>
         <translation>normal</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="98"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="97"/>
         <source>wide</source>
         <translation>ancho</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="99"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="98"/>
         <source>strong</source>
         <translation>intenso</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="144"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="141"/>
         <location filename="../gis/rte/CGisItemRte.cpp" line="44"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="164"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="103"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="161"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="101"/>
         <source>_Clone</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="409"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="417"/>
         <source>Area: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="461"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="475"/>
         <source>Changed area shape.</source>
         <translation>Se cambió la forma del área.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="469"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="483"/>
         <source>Changed name.</source>
         <translation>Se cambió el nombre.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="475"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="489"/>
         <source>Changed border width.</source>
         <translation>Se cambió la anchura del borde.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="481"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="495"/>
         <source>Changed fill pattern.</source>
         <translation>Se cambió el patró de relleno.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="487"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="501"/>
         <source>Changed opacity.</source>
         <translation>Se cambió la opacidad.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="493"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="507"/>
         <source>Changed comment.</source>
         <translation>Se cambió el comentario.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="499"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="513"/>
         <source>Changed description.</source>
         <translation>Se cambió la descripción.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="505"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1312"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="347"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="519"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="138"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1428"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="359"/>
         <source>Changed links</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="517"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1324"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="531"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1440"/>
         <source>Changed color</source>
         <translation>Se cambió el color</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="225"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="228"/>
         <source>Elevation: %1 %2</source>
         <translation>Altitud: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="233"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="239"/>
         <source>Proximity: %1 %2</source>
         <translation>Proximidad: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1294"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="298"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1410"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="310"/>
         <source>Changed name</source>
         <translation>Se cambió el nombre</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="813"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="828"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="849"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="899"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1032"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="179"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="909"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="924"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="943"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1002"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1148"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="176"/>
         <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
         <source>Edit name...</source>
         <translation>Editar nombre...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="179"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="176"/>
         <source>Enter new waypoint name.</source>
         <translation>Introduzca el nuevo nombre del waypoint.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="305"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="317"/>
         <source>Changed position</source>
         <translation>Se cambió la posición</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="311"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="323"/>
         <source>Changed elevation</source>
         <translation>Se cambió la altitud</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="317"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="329"/>
         <source>Changed proximity</source>
         <translation>Se cambió la proximidad</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="329"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="341"/>
         <source>Changed icon</source>
         <translation>Se cambió el icono</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1300"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="335"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="365"/>
+        <source>Changed images</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="126"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1416"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="347"/>
         <source>Changed comment</source>
         <translation>Se cambió el comentario</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1306"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="341"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="132"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1422"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="353"/>
         <source>Changed description</source>
         <translation>Se cambió la descripción</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="515"/>
+        <location filename="../gis/gpx/serialization.cpp" line="507"/>
         <source>Archived</source>
         <translation>Archivado</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="519"/>
+        <location filename="../gis/gpx/serialization.cpp" line="511"/>
         <source>Available</source>
         <translation>Disponible</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="523"/>
+        <location filename="../gis/gpx/serialization.cpp" line="515"/>
         <source>Not Available</source>
         <translation>No Disponible</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="459"/>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="834"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="463"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="844"/>
         <source>Warning...</source>
         <translation>Aviso...</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="459"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="463"/>
         <source>This is a typ file with unknown polygon encoding. Please report!</source>
         <translation>Este es un fichero TYP con una codificación de polígonos desconocida. ¡Por favor repórtelo!</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="834"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="844"/>
         <source>This is a typ file with unknown polyline encoding. Please report!</source>
         <translation>Este es un fichero TYP con una codificación de polilíneas desconocida. ¡Por favor repórtelo!</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="286"/>
+        <location filename="../gis/IGisItem.cpp" line="292"/>
         <source>Initial version.</source>
         <translation>Versión inicial</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="370"/>
+        <location filename="../gis/IGisItem.cpp" line="376"/>
         <source>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>Este elemento probablemente sea de sólo lectura por no haber sido creado por QMapShack. Habitualmente no deseará cambiar los datos importados. De lo contrario, es correcto pulsar 'OK'.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="371"/>
+        <location filename="../gis/IGisItem.cpp" line="377"/>
         <source>Read Only Mode...</source>
         <translation>Modo Sólo Lectura...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="560"/>
+        <location filename="../gis/IGisItem.cpp" line="575"/>
         <source><h4>Comment:</h4></source>
         <translation type="unfinished"><h4>Comentario:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="563"/>
+        <location filename="../gis/IGisItem.cpp" line="578"/>
         <source><p>--- no comment ---</p></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="570"/>
-        <location filename="../gis/IGisItem.cpp" line="600"/>
+        <location filename="../gis/IGisItem.cpp" line="589"/>
+        <location filename="../gis/IGisItem.cpp" line="634"/>
         <source><h4>Description:</h4></source>
         <translation type="unfinished"><h4>Descripción:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="573"/>
-        <location filename="../gis/IGisItem.cpp" line="603"/>
+        <location filename="../gis/IGisItem.cpp" line="592"/>
+        <location filename="../gis/IGisItem.cpp" line="637"/>
         <source><p>--- no description ---</p></source>
         <translation type="unfinished"><p>---sin descripción---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="580"/>
-        <location filename="../gis/IGisItem.cpp" line="610"/>
+        <location filename="../gis/IGisItem.cpp" line="603"/>
+        <location filename="../gis/IGisItem.cpp" line="648"/>
         <source><h4>Links:</h4></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="583"/>
-        <location filename="../gis/IGisItem.cpp" line="613"/>
+        <location filename="../gis/IGisItem.cpp" line="606"/>
+        <location filename="../gis/IGisItem.cpp" line="651"/>
         <source><p>--- no links ---</p></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="813"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="828"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="849"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="899"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1032"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="909"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="924"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="943"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1002"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1148"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
         <source>Enter new track name.</source>
         <translation>Introduzca el nombre del nuevo track.</translation>
@@ -4201,87 +4363,92 @@ Filename: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="67"/>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="66"/>
         <location filename="../gis/db/CLostFoundProject.cpp" line="39"/>
         <source>Lost & Found</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="62"/>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="61"/>
         <source>Lost & Found (%1)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/converter.cpp" line="196"/>
+        <location filename="../qlgt/converter.cpp" line="194"/>
         <source>Copy flag information from QLandkarte GT track</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="158"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="212"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="259"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="285"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="162"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="216"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="263"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="289"/>
         <source>Corrupt track ...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="158"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="162"/>
         <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="212"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="216"/>
         <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="259"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="285"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="263"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="289"/>
         <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="96"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="95"/>
         <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="122"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="111"/>
+        <source>Reset all hidden track points to visible</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="136"/>
         <source>Permanently removed all hidden track points</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="173"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="186"/>
         <source>Smoothed profile with a Median filter of size %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="210"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="222"/>
         <source>Replaced elevation data with data from DEM files.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="234"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="245"/>
         <source>Offset elevation data by %1%2.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="254"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="264"/>
         <source>Changed start of track to %1.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="273"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="283"/>
         <source>Remove timestamps.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="296"/>
-        <source>Set artifical timestamps with delta of %1 sec.</source>
+        <location filename="../gis/trk/filter/filter.cpp" line="306"/>
+        <source>Set artificial timestamps with delta of %1 sec.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="330"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="339"/>
         <source>Changed speed to %1%2.</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/src/main.cpp b/src/main.cpp
index b5e4711..e7b8dc5 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -20,22 +20,22 @@
 #include "helpers/CAppOpts.h"
 #include "version.h"
 
+#include <CGetOpt.h>
 #include <QtCore>
 #include <QtWidgets>
-#include <CGetOpt.h>
-#include <iostream>
 #include <gdal.h>
+#include <iostream>
 
 CAppOpts *qlOpts;
 
 static void usage(std::ostream &s)
 {
     s << "usage: qmapshack [-d | --debug]\n"
-         "                 [-h | --help]\n"
-         "                 [-n | --no-splash]\n"
-         "                 [-c | --config=file]\n"
-         "                 [files...]\n"
-         "\n";
+        "                 [-h | --help]\n"
+        "                 [-n | --no-splash]\n"
+        "                 [-c | --config=file]\n"
+        "                 [files...]\n"
+        "\n";
 }
 
 
@@ -66,7 +66,6 @@ static void processOptions()
     }
 
     qlOpts = new CAppOpts(doDebugOut, noSplash, config, args);
-
 }
 
 
@@ -74,26 +73,25 @@ static void myMessageOutput(QtMsgType type, const QMessageLogContext &context, c
 {
     switch (type)
     {
-        case QtDebugMsg:
-            if (qlOpts->debug)
-            {
-
-                std::cout << msg.toUtf8().constData() << std::endl;
-            }
-            break;
+    case QtDebugMsg:
+        if (qlOpts->debug)
+        {
+            std::cout << msg.toUtf8().constData() << std::endl;
+        }
+        break;
 
-        case QtWarningMsg:
-            std::cerr << "Warning: " << msg.toUtf8().constData() << std::endl;
-            break;
+    case QtWarningMsg:
+        std::cerr << "Warning: " << msg.toUtf8().constData() << std::endl;
+        break;
 
-        case QtCriticalMsg:
-            std::cerr << "Critical: " <<  msg.toUtf8().constData() << std::endl;
-            break;
+    case QtCriticalMsg:
+        std::cerr << "Critical: " <<  msg.toUtf8().constData() << std::endl;
+        break;
 
-        case QtFatalMsg:
-            std::cerr << "Fatal: " << msg.toUtf8().constData() << std::endl;
-            abort();
-            break;
+    case QtFatalMsg:
+        std::cerr << "Fatal: " << msg.toUtf8().constData() << std::endl;
+        abort();
+        break;
     }
 }
 
@@ -101,7 +99,6 @@ static void myMessageOutput(QtMsgType type, const QMessageLogContext &context, c
 
 int main(int argc, char ** argv)
 {
-
     QApplication a(argc, argv);
     processOptions();
 
@@ -110,16 +107,16 @@ int main(int argc, char ** argv)
 #endif
 
 #ifdef WIN32
-	// setup environment variables for GDAL/Proj4
-	QString apppath = QCoreApplication::applicationDirPath();
-	apppath = apppath.replace("/", "\\");
+    // setup environment variables for GDAL/Proj4
+    QString apppath = QCoreApplication::applicationDirPath();
+    apppath = apppath.replace("/", "\\");
 
-	//QString env_path = qgetenv("PATH");
-	//env_path += QString(";%1;%1\\proj\\apps;%1\\gdal\\apps;%1\\curl;").arg(apppath);
-	//qputenv("PATH", env_path.toUtf8());
+    //QString env_path = qgetenv("PATH");
+    //env_path += QString(";%1;%1\\proj\\apps;%1\\gdal\\apps;%1\\curl;").arg(apppath);
+    //qputenv("PATH", env_path.toUtf8());
 
-	qputenv("GDAL_DATA", QString("%1\\data").arg(apppath).toUtf8());
-	qputenv("PROJ_LIB", QString("%1\\share").arg(apppath).toUtf8());
+    qputenv("GDAL_DATA", QString("%1\\data").arg(apppath).toUtf8());
+    qputenv("PROJ_LIB", QString("%1\\share").arg(apppath).toUtf8());
 #endif
 
 
diff --git a/src/map/CMapDraw.cpp b/src/map/CMapDraw.cpp
index fba3ab9..cb83b6e 100644
--- a/src/map/CMapDraw.cpp
+++ b/src/map/CMapDraw.cpp
@@ -16,14 +16,14 @@
 
 **********************************************************************************************/
 
-#include "map/IMap.h"
+#include "CMainWindow.h"
+#include "canvas/CCanvas.h"
+#include "helpers/CSettings.h"
 #include "map/CMapDraw.h"
 #include "map/CMapItem.h"
 #include "map/CMapList.h"
 #include "map/CMapPathSetup.h"
-#include "canvas/CCanvas.h"
-#include "CMainWindow.h"
-#include "helpers/CSettings.h"
+#include "map/IMap.h"
 
 #include <QtGui>
 #include <QtWidgets>
@@ -49,7 +49,6 @@ CMapDraw::CMapDraw(CCanvas *parent)
 
 CMapDraw::~CMapDraw()
 {
-
     maps.removeOne(this);
 }
 
@@ -120,7 +119,6 @@ void CMapDraw::getInfo(const QPoint& px, QString& str)
         }
     }
     CMapItem::mutexActiveMaps.unlock();
-
 }
 
 void CMapDraw::getToolTip(const QPoint& px, QString& str)
@@ -145,7 +143,6 @@ void CMapDraw::getToolTip(const QPoint& px, QString& str)
             }
 
             item->mapfile->getToolTip(px, str);
-
         }
     }
     CMapItem::mutexActiveMaps.unlock();
@@ -195,7 +192,6 @@ void CMapDraw::saveConfig(QSettings& cfg)
     cfg.setValue("active", keys);
     cfg.setValue("zoomIndex", zoomIndex);
     cfg.endGroup();
-
 }
 
 void CMapDraw::loadConfig(QSettings& cfg)
@@ -220,11 +216,11 @@ void CMapDraw::buildMapList()
     QMutexLocker lock(&CMapItem::mutexActiveMaps);
     mapList->clear();
 
-    foreach(const QString& path, mapPaths)
+    foreach(const QString &path, mapPaths)
     {
         QDir dir(path);
         // find available maps
-        foreach(const QString& filename, dir.entryList(supportedFormats, QDir::Files|QDir::Readable, QDir::Name))
+        foreach(const QString &filename, dir.entryList(supportedFormats, QDir::Files|QDir::Readable, QDir::Name))
         {
             QFileInfo fi(filename);
 
@@ -285,7 +281,7 @@ void CMapDraw::restoreActiveMapsList(const QStringList& keys)
 {
     QMutexLocker lock(&CMapItem::mutexActiveMaps);
 
-    foreach(const QString& key, keys)
+    foreach(const QString &key, keys)
     {
         for(int i = 0; i < mapList->count(); i++)
         {
@@ -296,7 +292,7 @@ void CMapDraw::restoreActiveMapsList(const QStringList& keys)
                 /**
                     @Note   the item will load it's configuration uppon successful activation
                             by calling loadConfigForMapItem().
-                */
+                 */
                 item->activate();
                 break;
             }
@@ -330,7 +326,6 @@ void CMapDraw::drawt(IDrawContext::buffer_t& currentBuffer)
             }
 
             item->mapfile->draw(currentBuffer);
-
         }
     }
     CMapItem::mutexActiveMaps.unlock();
diff --git a/src/map/CMapDraw.h b/src/map/CMapDraw.h
index 1eff3f8..8270fee 100644
--- a/src/map/CMapDraw.h
+++ b/src/map/CMapDraw.h
@@ -19,8 +19,8 @@
 #ifndef CMAPDRAW_H
 #define CMAPDRAW_H
 
-#include <QStringList>
 #include "canvas/IDrawContext.h"
+#include <QStringList>
 
 class QPainter;
 class CCanvas;
@@ -31,129 +31,131 @@ class CMapItem;
 class CMapDraw : public IDrawContext
 {
     Q_OBJECT
-    public:
-        CMapDraw(CCanvas * parent);
-        virtual ~CMapDraw();
-
-        void saveConfig(QSettings& cfg);
-        void loadConfig(QSettings& cfg);
-        /**
-           @brief This is called most likely from the item itself to call it's loadConfig() method.
-
-           As the setup of a map is stored in the context of the workspace the correct groups have
-           to be set prior to call the item's loadConfig() method. However the item does not know
-           all that stuff. That is why it has to ask it's CMapDraw object to prepare the QSettings object
-           and to call loadConfig();
-
-           @param item the item to call it's loadConfig() method
-         */
-        void loadConfigForMapItem(CMapItem * item);
+public:
+    CMapDraw(CCanvas * parent);
+    virtual ~CMapDraw();
+
+    void saveConfig(QSettings& cfg);
+    void loadConfig(QSettings& cfg);
+    /**
+       @brief This is called most likely from the item itself to call it's loadConfig() method.
+
+       As the setup of a map is stored in the context of the view the correct groups have
+       to be set prior to call the item's loadConfig() method. However the item does not know
+       all that stuff. That is why it has to ask it's CMapDraw object to prepare the QSettings object
+       and to call loadConfig();
 
-        /**
-           @brief Get a full detailed info text about objects close to the given point
+       @param item the item to call it's loadConfig() method
+     */
+    void loadConfigForMapItem(CMapItem * item);
 
-           This method will call getInfo() of all items in mapList.
+    /**
+       @brief Get a full detailed info text about objects close to the given point
 
-           @param px    the point on the screen in pixel
-           @param str   a string object to receive all information
-        */
-        void getInfo(const QPoint& px, QString& str);
-        /**
-           @brief Get an info text fit for a tool tip
+       This method will call getInfo() of all items in mapList.
 
-           This method will call getToolTip() of all items in mapList.
+       @param px    the point on the screen in pixel
+       @param str   a string object to receive all information
+     */
+    void getInfo(const QPoint& px, QString& str);
+    /**
+       @brief Get an info text fit for a tool tip
 
-           @param px    the point on the screen in pixel
-           @param str   a string object to receive all information
-        */
-        void getToolTip(const QPoint& px, QString& str);
+       This method will call getToolTip() of all items in mapList.
 
-        /**
-           @brief Set projection of this draw context
-           @param proj      a proj4 string
-         */
-        void setProjection(const QString& proj);
+       @param px    the point on the screen in pixel
+       @param str   a string object to receive all information
+     */
+    void getToolTip(const QPoint& px, QString& str);
 
-        static void setupMapPath();
-        static void saveMapPath(QSettings &cfg);
-        static void loadMapPath(QSettings &cfg);
-        static const QStringList& getSupportedFormats(){return supportedFormats;}
+    /**
+       @brief Set projection of this draw context
+       @param proj      a proj4 string
+     */
+    void setProjection(const QString& proj);
 
-        /**
-           @brief Forward messages to CCanvas::reportStatus()
+    static void setupMapPath();
+    static void saveMapPath(QSettings &cfg);
+    static void loadMapPath(QSettings &cfg);
+    static const QStringList& getSupportedFormats()
+    {
+        return supportedFormats;
+    }
 
-           Messages from various sources will be collected in a list and displayed in the top left corner
-           of the widget.
+    /**
+       @brief Forward messages to CCanvas::reportStatus()
 
-           @note The object reporting has to take care to remove the message by reporting an empty string.
+       Messages from various sources will be collected in a list and displayed in the top left corner
+       of the widget.
 
-           @param key   the key to identify the reporting object
-           @param msg   the message to report
-         */
-        void reportStatusToCanvas(const QString& key, const QString& msg);
+       @note The object reporting has to take care to remove the message by reporting an empty string.
 
-        /**
-           @brief Find a matching street polyline
+       @param key   the key to identify the reporting object
+       @param msg   the message to report
+     */
+    void reportStatusToCanvas(const QString& key, const QString& msg);
 
-           The polyline must be close enough in terms of pixel to point 1 and 2. "Close enough" is defined by
-           the threshold. The returned poylline uses lon/lat as coordinates.
+    /**
+       @brief Find a matching street polyline
 
-           @param pt1           first point in [rad]
-           @param pt2           second point in [rad]
-           @param threshold     the "close enough" threshold in [pixel]
-           @param polyline      the resulting polyline, if any, in [rad]
-           @return              Return true if a line has been found.
-        */
-        bool findPolylineCloseBy(QPointF& pt1, QPointF& pt2, qint32 threshold, QPolygonF& polyline);
+       The polyline must be close enough in terms of pixel to point 1 and 2. "Close enough" is defined by
+       the threshold. The returned poylline uses lon/lat as coordinates.
 
-    protected:
-        void drawt(buffer_t& currentBuffer);
+       @param pt1           first point in [rad]
+       @param pt2           second point in [rad]
+       @param threshold     the "close enough" threshold in [pixel]
+       @param polyline      the resulting polyline, if any, in [rad]
+       @return              Return true if a line has been found.
+     */
+    bool findPolylineCloseBy(QPointF& pt1, QPointF& pt2, qint32 threshold, QPolygonF& polyline);
 
+protected:
+    void drawt(buffer_t& currentBuffer);
 
-    private:
-        /**
-           @brief Search in paths found in mapPaths for files with supported extensions and add them to mapList.
 
-         */
-        void buildMapList();
-        /**
-           @brief Save list of active maps to configuration file
+private:
+    /**
+       @brief Search in paths found in mapPaths for files with supported extensions and add them to mapList.
 
-           The group context will be appended by the map's key
+     */
+    void buildMapList();
+    /**
+       @brief Save list of active maps to configuration file
 
-           @param keys the stored map's MD5 keys will be written to keys
-           @param cfg  configuration file with correct group context set.
-         */
-        void saveActiveMapsList(QStringList &keys, QSettings &cfg);
+       The group context will be appended by the map's key
 
-        /**
-           @brief Open configuration befor saving list
-           @param keys the stored map's MD5 keys will be written to keys
-         */
-        void saveActiveMapsList(QStringList &keys);
-        /**
-           @brief Restore list of active maps from configuration file
-           @param keys MD5 hash keys to identify the maps
-         */
-        void restoreActiveMapsList(const QStringList &keys);
+       @param keys the stored map's MD5 keys will be written to keys
+       @param cfg  configuration file with correct group context set.
+     */
+    void saveActiveMapsList(QStringList &keys, QSettings &cfg);
 
+    /**
+       @brief Open configuration befor saving list
+       @param keys the stored map's MD5 keys will be written to keys
+     */
+    void saveActiveMapsList(QStringList &keys);
+    /**
+       @brief Restore list of active maps from configuration file
+       @param keys MD5 hash keys to identify the maps
+     */
+    void restoreActiveMapsList(const QStringList &keys);
 
 
-        /// the treewidget holding all active and inactive map items
-        CMapList * mapList;
 
-        /// the group label used in QSettings
-        QString cfgGroup;
+    /// the treewidget holding all active and inactive map items
+    CMapList * mapList;
 
-        /// the list of paths to serach maps
-        static QStringList mapPaths;
+    /// the group label used in QSettings
+    QString cfgGroup;
 
-        /// all existing CMapDraw instances
-        static QList<CMapDraw*> maps;
+    /// the list of paths to serach maps
+    static QStringList mapPaths;
 
-        /// a list of supported map formats
-        static QStringList supportedFormats;
+    /// all existing CMapDraw instances
+    static QList<CMapDraw*> maps;
 
+    /// a list of supported map formats
+    static QStringList supportedFormats;
 };
 
 #endif //CMAPDRAW_H
diff --git a/src/map/CMapIMG.cpp b/src/map/CMapIMG.cpp
index 23bbcfc..8a3e5d3 100644
--- a/src/map/CMapIMG.cpp
+++ b/src/map/CMapIMG.cpp
@@ -16,17 +16,17 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
+#include "canvas/CCanvas.h"
+#include "helpers/CFileExt.h"
+#include "helpers/Platform.h"
+#include "map/CMapDraw.h"
 #include "map/CMapIMG.h"
 #include "map/garmin/CGarminStrTbl6.h"
 #include "map/garmin/CGarminStrTbl8.h"
 #include "map/garmin/CGarminStrTblUtf8.h"
 #include "map/garmin/CGarminTyp.h"
-#include "map/CMapDraw.h"
 #include "units/IUnit.h"
-#include "helpers/CFileExt.h"
-#include "helpers/Platform.h"
-#include "CMainWindow.h"
-#include "canvas/CCanvas.h"
 
 #include <QtWidgets>
 
@@ -41,18 +41,29 @@
 
 static inline bool isCompletlyOutside(const QPolygonF& poly, const QRectF &viewport)
 {
-
     qreal north =  -90.0 * DEG_TO_RAD;
     qreal south =   90.0 * DEG_TO_RAD;
     qreal west  =  180.0 * DEG_TO_RAD;
     qreal east  = -180.0 * DEG_TO_RAD;
 
-    foreach(const QPointF& pt, poly)
+    foreach(const QPointF &pt, poly)
     {
-        if(north < pt.y()) north = pt.y();
-        if(south > pt.y()) south = pt.y();
-        if(west  > pt.x()) west  = pt.x();
-        if(east  < pt.x()) east  = pt.x();
+        if(north < pt.y())
+        {
+            north = pt.y();
+        }
+        if(south > pt.y())
+        {
+            south = pt.y();
+        }
+        if(west  > pt.x())
+        {
+            west  = pt.x();
+        }
+        if(east  < pt.x())
+        {
+            east  = pt.x();
+        }
     }
 
     QRectF ref(west, north,  east - west, south - north);
@@ -147,7 +158,6 @@ CMapIMG::CMapIMG(const QString &filename, CMapDraw *parent)
 
 CMapIMG::~CMapIMG()
 {
-
 }
 
 void CMapIMG::setupTyp()
@@ -426,8 +436,6 @@ void CMapIMG::setupTyp()
         file.close();
         break;
     }
-
-
 }
 
 void CMapIMG::readFile(CFileExt& file, quint32 offset, quint32 size, QByteArray& data)
@@ -466,7 +474,6 @@ void CMapIMG::readFile(CFileExt& file, quint32 offset, quint32 size, QByteArray&
     {
         *p++ ^= mask;
     }
-
 }
 
 
@@ -554,7 +561,7 @@ void CMapIMG::readBasics()
                     storing the subfile's name and type. The first part
                     with a size info and it's name / type not stored in the
                     set is used to get the location information.
-    */
+     */
     QSet<QString> subfileNames;
     while(dataoffset < (size_t)fsize)
     {
@@ -576,7 +583,6 @@ void CMapIMG::readBasics()
             // skip MAPSORC.MPS section
             if(strcmp(tmpstr,"MAPSOURC") && strcmp(tmpstr,"SENDMAP2"))
             {
-
                 subfile_desc_t& subfile = subfiles[tmpstr];
                 subfile.name = tmpstr;
 
@@ -587,7 +593,6 @@ void CMapIMG::readBasics()
                 part.size   = gar_load(uint32_t, pFATBlock->size);
                 part.offset = gar_load(uint16_t, pFATBlock->blocks[0]) * blocksize;
             }
-
         }
 
         dataoffset += sizeof(FATblock_t);
@@ -636,7 +641,10 @@ void CMapIMG::readBasics()
     while(subfile != subfiles.end())
     {
         PROGRESS(cnt++, throw exce_t(errAbort,tr("User abort: ") + filename))
-        if((*subfile).parts.contains("GMP")) throw exce_t(errFormat,tr("File is NT format. QMapShack is unable to read map files with NT format: ") + filename);
+        if((*subfile).parts.contains("GMP"))
+        {
+            throw exce_t(errFormat,tr("File is NT format. QMapShack is unable to read map files with NT format: ") + filename);
+        }
 
         readSubfileBasics(*subfile, file);
 
@@ -645,7 +653,7 @@ void CMapIMG::readBasics()
 
     // combine copyright sections
     copyright.clear();
-    foreach(const QString& str, copyrights)
+    foreach(const QString &str, copyrights)
     {
         if(!copyright.isEmpty())
         {
@@ -661,7 +669,10 @@ 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"))) return;
+    if(!(subfile.parts.contains("TRE") && subfile.parts.contains("RGN")))
+    {
+        return;
+    }
 
     QByteArray trehdr;
     readFile(file, subfile.parts["TRE"].offset, sizeof(hdr_tre_t), trehdr);
@@ -689,7 +700,7 @@ void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
     subfile.east = GARMIN_RAD(i32);
     i32 = gar_ptr_load(int24_t, &pTreHdr->southbound);
     subfile.south = GARMIN_RAD(i32);
-    i32 = gar_ptr_load(int24_t, &pTreHdr->westbound);   
+    i32 = gar_ptr_load(int24_t, &pTreHdr->westbound);
     subfile.west = GARMIN_RAD(i32);
 
     if(subfile.east == subfile.west)
@@ -725,8 +736,8 @@ void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
     if(pTreHdr->flag & 0x80)
     {
         throw exce_t(errLock,tr("File contains locked / encypted data. Garmin does not "
-            "want you to use this file with any other software than "
-            "the one supplied by Garmin."));
+                                "want you to use this file with any other software than "
+                                "the one supplied by Garmin."));
     }
 
     quint32 nlevels             = gar_load(uint32_t, pTreHdr->tre1_size) / sizeof(tre_map_level_t);
@@ -744,7 +755,7 @@ void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
         nsubdivs_last   = gar_load(uint16_t, pMapLevel->nsubdiv);
 #ifdef DEBUG_SHOW_MAPLEVEL_DATA
         qDebug() << "level" << TRE_MAP_LEVEL(pMapLevel) << "inherited" << TRE_MAP_INHER(pMapLevel)
-            << "bits" << pMapLevel->bits << "#subdivs" << gar_load(uint16_t, pMapLevel->nsubdiv);
+                 << "bits" << pMapLevel->bits << "#subdivs" << gar_load(uint16_t, pMapLevel->nsubdiv);
 #endif                   // DEBUG_SHOW_MAPLEVEL_DATA
         ++pMapLevel;
     }
@@ -897,7 +908,6 @@ void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
     // read extended NT elements
     if((gar_load(uint16_t, pTreHdr->hdr_subfile_part_t::length) >= 0x9A) && pTreHdr->tre7_size && (gar_load(uint16_t, pTreHdr->tre7_rec_size) >= sizeof(tre_subdiv2_t)))
     {
-
         rgnoff = subfile.parts["RGN"].offset;
         //         qDebug() << subdivs.count() << (pTreHdr->tre7_size / pTreHdr->tre7_rec_size) << pTreHdr->tre7_rec_size;
         QByteArray subdiv2;
@@ -908,7 +918,10 @@ void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
         //        const quint32 entries2 = subdivs.size();
 
         bool skipPois = true;
-        if(gar_load(uint16_t, pTreHdr->tre7_rec_size) == sizeof(tre_subdiv2_t)) skipPois = false;
+        if(gar_load(uint16_t, pTreHdr->tre7_rec_size) == sizeof(tre_subdiv2_t))
+        {
+            skipPois = false;
+        }
 
         //         for(int i = 0; i < pTreHdr->tre7_rec_size; ++i){
         //             if(i%4 == 0) fprintf(stderr,"\n");
@@ -927,7 +940,6 @@ void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
 
         while(subdiv != subdivs.end())
         {
-
             //             for(int i = 0; i < pTreHdr->tre7_rec_size; ++i){
             //                 if(i%4 == 0) fprintf(stderr,"\n");
             //                 fprintf(stderr,"%02X ", ((quint8*)pSubDiv2)[i]);
@@ -951,7 +963,6 @@ void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
         subdiv_prev->lengthPolygons2  = rgnOffPolyg2 + rgnLenPolyg2 - subdiv_prev->offsetPolygons2;
         subdiv_prev->lengthPolylines2 = rgnOffPolyl2 + rgnLenPolyl2 - subdiv_prev->offsetPolylines2;
         subdiv_prev->lengthPoints2    = skipPois ? 0 : rgnOffPoint2 + rgnLenPoint2 - subdiv_prev->offsetPoints2;
-
     }
 
     subfile.subdivs = subdivs;
@@ -1019,28 +1030,37 @@ void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
 
         switch(pLblHdr->coding)
         {
-            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 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 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);
-                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);
+            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;
 
-            default:;
+        default:;
             qWarning() << "Unknown label coding" << hex << pLblHdr->coding;
         }
     }
@@ -1048,7 +1068,6 @@ void CMapIMG::readSubfileBasics(subfile_desc_t& subfile, CFileExt &file)
 
 void CMapIMG::processPrimaryMapData()
 {
-
     QMap<QString,subfile_desc_t>::const_iterator subfile = subfiles.begin();
     /*
      * Query all subfiles for possible maplevels.
@@ -1088,35 +1107,99 @@ void CMapIMG::processPrimaryMapData()
         qDebug() << ml.bits << ml.level << ml.useBaseMap;
     }
 #endif
-
-
 }
 
 
-quint8  CMapIMG::scale2bits(const QPointF& scale)
+quint8 CMapIMG::scale2bits(const QPointF& scale)
 {
-    if(scale.x() >= 70000.0) return 2;
-    if(scale.x() >= 50000.0) return 3;
-    if(scale.x() >= 30000.0) return 4;
-    if(scale.x() >= 20000.0) return 5;
-    if(scale.x() >= 15000.0) return 6;
-    if(scale.x() >= 10000.0) return 7;
-    if(scale.x() >= 7000.0) return 8;
-    if(scale.x() >= 5000.0) return 9;
-    if(scale.x() >= 3000.0) return 10;
-    if(scale.x() >= 2000.0) return 11;
-    if(scale.x() >= 1500.0) return 12;
-    if(scale.x() >= 1000.0) return 13;
-    if(scale.x() >= 700.0) return 14;
-    if(scale.x() >= 500.0) return 15;
-    if(scale.x() >= 300.0) return 16;
-    if(scale.x() >= 200.0) return 17;
-    if(scale.x() >= 100.0) return 18;
-    if(scale.x() >= 70.0) return 19;
-    if(scale.x() >= 30.0) return 20;
-    if(scale.x() >= 15.0) return 21;
-    if(scale.x() >= 7.0) return 22;
-    if(scale.x() >= 3.0) return 23;
+    if(scale.x() >= 70000.0)
+    {
+        return 2;
+    }
+    if(scale.x() >= 50000.0)
+    {
+        return 3;
+    }
+    if(scale.x() >= 30000.0)
+    {
+        return 4;
+    }
+    if(scale.x() >= 20000.0)
+    {
+        return 5;
+    }
+    if(scale.x() >= 15000.0)
+    {
+        return 6;
+    }
+    if(scale.x() >= 10000.0)
+    {
+        return 7;
+    }
+    if(scale.x() >= 7000.0)
+    {
+        return 8;
+    }
+    if(scale.x() >= 5000.0)
+    {
+        return 9;
+    }
+    if(scale.x() >= 3000.0)
+    {
+        return 10;
+    }
+    if(scale.x() >= 2000.0)
+    {
+        return 11;
+    }
+    if(scale.x() >= 1500.0)
+    {
+        return 12;
+    }
+    if(scale.x() >= 1000.0)
+    {
+        return 13;
+    }
+    if(scale.x() >= 700.0)
+    {
+        return 14;
+    }
+    if(scale.x() >= 500.0)
+    {
+        return 15;
+    }
+    if(scale.x() >= 300.0)
+    {
+        return 16;
+    }
+    if(scale.x() >= 200.0)
+    {
+        return 17;
+    }
+    if(scale.x() >= 100.0)
+    {
+        return 18;
+    }
+    if(scale.x() >= 70.0)
+    {
+        return 19;
+    }
+    if(scale.x() >= 30.0)
+    {
+        return 20;
+    }
+    if(scale.x() >= 15.0)
+    {
+        return 21;
+    }
+    if(scale.x() >= 7.0)
+    {
+        return 22;
+    }
+    if(scale.x() >= 3.0)
+    {
+        return 23;
+    }
     return 24;
 }
 
@@ -1159,8 +1242,12 @@ void CMapIMG::draw(IDrawContext::buffer_t& buf)
     do
     {
         --maplevel;
-        if(bits >= maplevel->bits) break;
-    } while(maplevel != maplevels.begin());
+        if(bits >= maplevel->bits)
+        {
+            break;
+        }
+    }
+    while(maplevel != maplevels.begin());
 
     QPointF pt1 = buf.ref1;
     QPointF pt2 = buf.ref2;
@@ -1334,7 +1421,10 @@ void CMapIMG::loadVisibleData(bool fast, polytype_t& polygons, polytype_t& polyl
 
 void CMapIMG::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)
 {
-    if(subdiv.rgn_start == subdiv.rgn_end && !subdiv.lengthPolygons2 && !subdiv.lengthPolylines2 && !subdiv.lengthPoints2) return;
+    if(subdiv.rgn_start == subdiv.rgn_end && !subdiv.lengthPolygons2 && !subdiv.lengthPolylines2 && !subdiv.lengthPoints2)
+    {
+        return;
+    }
     //fprintf(stderr, "loadSubDiv\n");
     //     qDebug() << "---------" << file.fileName() << "---------";
 
@@ -1363,7 +1453,6 @@ void CMapIMG::loadSubDiv(CFileExt &file, const subdiv_desc_t& subdiv, IGarminStr
         {
             oidx = (objCnt - 1) * sizeof(quint16) + subdiv.rgn_start;
         }
-
     }
     // test for polylines
     if(subdiv.hasPolylines)
@@ -1427,7 +1516,7 @@ void CMapIMG::loadSubDiv(CFileExt &file, const subdiv_desc_t& subdiv, IGarminStr
             if(strtbl)
             {
                 p.isLbl6 ? strtbl->get(file, p.lbl_ptr, IGarminStrTbl::poi, p.labels)
-                    : strtbl->get(file, p.lbl_ptr, IGarminStrTbl::norm, p.labels);
+                : strtbl->get(file, p.lbl_ptr, IGarminStrTbl::norm, p.labels);
             }
 
             points.push_back(p);
@@ -1453,7 +1542,7 @@ void CMapIMG::loadSubDiv(CFileExt &file, const subdiv_desc_t& subdiv, IGarminStr
             if(strtbl)
             {
                 p.isLbl6 ? strtbl->get(file, p.lbl_ptr, IGarminStrTbl::poi, p.labels)
-                    : strtbl->get(file, p.lbl_ptr, IGarminStrTbl::norm, p.labels);
+                : strtbl->get(file, p.lbl_ptr, IGarminStrTbl::norm, p.labels);
             }
 
             pois.push_back(p);
@@ -1551,7 +1640,6 @@ void CMapIMG::loadSubDiv(CFileExt &file, const subdiv_desc_t& subdiv, IGarminStr
             }
 
             polygons.push_back(p);
-
         }
     }
 
@@ -1598,12 +1686,11 @@ void CMapIMG::loadSubDiv(CFileExt &file, const subdiv_desc_t& subdiv, IGarminStr
             if(strtbl)
             {
                 p.isLbl6 ? strtbl->get(file, p.lbl_ptr, IGarminStrTbl::poi, p.labels)
-                    : strtbl->get(file, p.lbl_ptr, IGarminStrTbl::norm, p.labels);
+                : strtbl->get(file, p.lbl_ptr, IGarminStrTbl::norm, p.labels);
             }
             pois.push_back(p);
         }
     }
-
 }
 
 void CMapIMG::drawPolygons(QPainter& p, polytype_t& lines)
@@ -1621,7 +1708,6 @@ void CMapIMG::drawPolygons(QPainter& p, polytype_t& lines)
         polytype_t::iterator item = lines.begin();
         while (item != lines.end())
         {
-
             if(item->type != type)
             {
                 ++item;
@@ -1636,11 +1722,13 @@ void CMapIMG::drawPolygons(QPainter& p, polytype_t& lines)
 
             p.drawPolygon(poly);
 
-            if(!polygonProperties[type].known) qDebug() << "unknown polygon" << hex << type;
+            if(!polygonProperties[type].known)
+            {
+                qDebug() << "unknown polygon" << hex << type;
+            }
             ++item;
         }
     }
-
 }
 
 
@@ -1669,7 +1757,7 @@ void CMapIMG::drawPolylines(QPainter& p, polytype_t& lines, const QPointF& scale
 
     QMap<quint32, CGarminTyp::polyline_property>::iterator props = polylineProperties.begin();
     QMap<quint32, CGarminTyp::polyline_property>::iterator end = polylineProperties.end();
-    for(;props != end; ++props)
+    for(; props != end; ++props)
     {
         const quint32 &type = props.key();
         const CGarminTyp::polyline_property& property = props.value();
@@ -1685,11 +1773,10 @@ void CMapIMG::drawPolylines(QPainter& p, polytype_t& lines, const QPointF& scale
             const qreal h          = pixmap.height();
 
             QList<quint32>::const_iterator it = dict[type].constBegin();
-            for( ; it != dict[type].constEnd() ; ++it)
+            for(; it != dict[type].constEnd(); ++it)
             {
                 CGarminPolygon &item = lines[*it];
                 {
-
                     pixmapCount++;
 
                     QPolygonF& poly = item.pixel;
@@ -1779,7 +1866,7 @@ void CMapIMG::drawPolylines(QPainter& p, polytype_t& lines, const QPointF& scale
                 p.setPen(CMainWindow::self().isNight() ? property.penBorderNight : property.penBorderDay);
 
                 QList<quint32>::const_iterator it = dict[type].constBegin();
-                for( ; it != dict[type].constEnd() ; ++it)
+                for(; it != dict[type].constEnd(); ++it)
                 {
                     borderCount++;
                     drawLine(p, lines[*it], property, metrics, font, scale);
@@ -1791,7 +1878,7 @@ void CMapIMG::drawPolylines(QPainter& p, polytype_t& lines, const QPointF& scale
                 p.setPen(CMainWindow::self().isNight() ? property.penLineNight : property.penLineDay);
 
                 QList<quint32>::const_iterator it = dict[type].constBegin();
-                for( ; it != dict[type].constEnd() ; ++it)
+                for(; it != dict[type].constEnd(); ++it)
                 {
                     normalCount++;
                     drawLine(p, lines[*it], property, metrics, font, scale);
@@ -1802,7 +1889,7 @@ void CMapIMG::drawPolylines(QPainter& p, polytype_t& lines, const QPointF& scale
 
     // 2nd run to draw foreground lines.
     props = polylineProperties.begin();
-    for(;props != end; ++props)
+    for(; props != end; ++props)
     {
         const quint32 &type = props.key();
         const CGarminTyp::polyline_property& property = props.value();
@@ -1818,7 +1905,7 @@ void CMapIMG::drawPolylines(QPainter& p, polytype_t& lines, const QPointF& scale
             p.setPen(CMainWindow::self().isNight() ? property.penLineNight : property.penLineDay);
 
             QList<quint32>::const_iterator it = dict[type].constBegin();
-            for( ; it != dict[type].constEnd() ; ++it)
+            for(; it != dict[type].constEnd(); ++it)
             {
                 drawLine(p, lines[*it]);
             }
@@ -1875,33 +1962,34 @@ 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())
     {
-
         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;
+        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();
+        default:
+            str = item.labels.join(" ").simplified();
         }
     }
 
-    if(str.isEmpty()) return;
+    if(str.isEmpty())
+    {
+        return;
+    }
 
     textpath_t tp;
     tp.polyline     = line;
@@ -1927,7 +2015,6 @@ void CMapIMG::drawPoints(QPainter& p, pointtype_t& pts, QVector<QRectF>& rectPoi
     pointtype_t::iterator pt = pts.begin();
     while(pt != pts.end())
     {
-
 //        if((pt->type > 0x1600) && (zoomFactor > CResources::self().getZoomLevelThresholdPois()))
 //        {
 //            ++pt;
@@ -1967,7 +2054,6 @@ void CMapIMG::drawPoints(QPainter& p, pointtype_t& pts, QVector<QRectF>& rectPoi
 
         if(CMainWindow::self().isPOIText() && showLabel)
         {
-
             // calculate bounding rectangle with a border of 2 px
             QRect rect = fm.boundingRect(pt->labels.join(" "));
             rect.adjust(0,0,4,4);
@@ -1977,7 +2063,10 @@ void CMapIMG::drawPoints(QPainter& p, pointtype_t& pts, QVector<QRectF>& rectPoi
             QVector<strlbl_t>::const_iterator label = labels.constBegin();
             while(label != labels.constEnd())
             {
-                if(label->rect.intersects(rect)) break;
+                if(label->rect.intersects(rect))
+                {
+                    break;
+                }
                 ++label;
             }
 
@@ -2068,7 +2157,6 @@ void CMapIMG::drawPois(QPainter& p, pointtype_t& pts, QVector<QRectF> &rectPois)
 
         if(CMainWindow::self().isPOIText())
         {
-
             // calculate bounding rectangle with a border of 2 px
             QRect rect = fm.boundingRect(pt->labels.join(" "));
             rect.adjust(0,0,4,4);
@@ -2078,7 +2166,10 @@ void CMapIMG::drawPois(QPainter& p, pointtype_t& pts, QVector<QRectF> &rectPois)
             QVector<strlbl_t>::const_iterator label = labels.begin();
             while(label != labels.end())
             {
-                if(label->rect.intersects(rect)) break;
+                if(label->rect.intersects(rect))
+                {
+                    break;
+                }
                 ++label;
             }
 
@@ -2171,7 +2262,10 @@ void CMapIMG::drawText(QPainter& p)
             fm      = QFontMetricsF(font);
             width   = fm.width(textpath->text);
 
-            if((font.pixelSize() < 8)) break;
+            if((font.pixelSize() < 8))
+            {
+                break;
+            }
         }
 
         // no way to draw a readable string - skip
@@ -2231,7 +2325,6 @@ void CMapIMG::drawText(QPainter& p)
 
         for(int i = 0; i < size; ++i)
         {
-
             percent1  = percent2;
             percent2  = (offset + fm.width(text[i])) / length;
 
@@ -2277,12 +2370,10 @@ void CMapIMG::drawText(QPainter& p)
 
 void CMapIMG::getInfo(const QPoint& px, QString& str)
 {
-
 }
 
 void CMapIMG::getToolTip(const QPoint& px, QString& infotext)
 {
-
     bool first = true;
     QMultiMap<QString, QString> dict;
     getInfoPoints(px, dict);
@@ -2293,7 +2384,7 @@ void CMapIMG::getToolTip(const QPoint& px, QString& infotext)
 
     QString str;
 
-    foreach(const QString& value, values)
+    foreach(const QString &value, values)
     {
         if(value == "-")
         {
@@ -2314,7 +2405,7 @@ void CMapIMG::getToolTip(const QPoint& px, QString& infotext)
     if(str.isEmpty())
     {
         getInfoPolygons(px, dict);
-        foreach(const QString& value, values)
+        foreach(const QString &value, values)
         {
             if(value == "-")
             {
@@ -2346,7 +2437,6 @@ void CMapIMG::getInfoPoints(const QPoint& pt, QMultiMap<QString, QString>& dict)
         {
             if(point->labels.size())
             {
-
                 QString str;
                 if((point->type == 0x6200)||(point->type == 0x6300))
                 {
@@ -2397,7 +2487,6 @@ void CMapIMG::getInfoPoints(const QPoint& pt, QMultiMap<QString, QString>& dict)
         }
         ++point;
     }
-
 }
 
 
@@ -2509,7 +2598,10 @@ void CMapIMG::getInfoPolylines(const QPoint &pt, QMultiMap<QString, QString>& di
 
             u = ((pt.x() - p1.u) * dx + (pt.y() - p1.v) * dy) / (d_p1_p2 * d_p1_p2);
 
-            if(u < 0.0 || u > 1.0) continue;
+            if(u < 0.0 || u > 1.0)
+            {
+                continue;
+            }
 
             x = p1.u + u * dx;
             y = p1.v + u * dy;
@@ -2524,28 +2616,28 @@ void CMapIMG::getInfoPolylines(const QPoint &pt, QMultiMap<QString, QString>& di
                 {
                     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;
+                    // "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();
+                    default:
+                        value = line->labels.join(" ").simplified();
                     }
                 }
                 else
@@ -2557,7 +2649,6 @@ void CMapIMG::getInfoPolylines(const QPoint &pt, QMultiMap<QString, QString>& di
                 shortest = distance;
                 found = true;
             }
-
         }
         ++line;
     }
@@ -2593,17 +2684,16 @@ 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();
+    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;
 
     polytype_t::const_iterator line = polygons.begin();
     while(line != polygons.end())
     {
-
         npol = line->pixel.size();
         if(npol > 2)
         {
@@ -2631,7 +2721,6 @@ void CMapIMG::getInfoPolygons(const QPoint& pt, QMultiMap<QString, QString>& dic
                 }
                 else
                 {
-
                     if(selectedLanguage != -1)
                     {
                         if(polygonProperties[line->type].strings[selectedLanguage].size())
@@ -2646,7 +2735,6 @@ void CMapIMG::getInfoPolygons(const QPoint& pt, QMultiMap<QString, QString>& dic
                             dict.insert(tr("Area"), polygonProperties[line->type].strings[0]);
                         }
                     }
-
                 }
             }
         }
@@ -2705,7 +2793,7 @@ static qreal getDistance(const QPolygonF& line, const QPointF& pt, qreal thresho
 
 bool CMapIMG::findPolylineCloseBy(QPointF& pt1, QPointF& pt2, qint32 threshold, QPolygonF& polyline)
 {
-    foreach(const CGarminPolygon& line, polylines)
+    foreach(const CGarminPolygon &line, polylines)
     {
         if(line.pixel.size() < 2)
         {
diff --git a/src/map/CMapIMG.h b/src/map/CMapIMG.h
index 3e756d9..299786e 100644
--- a/src/map/CMapIMG.h
+++ b/src/map/CMapIMG.h
@@ -19,12 +19,12 @@
 #ifndef CMAPIMG_H
 #define CMAPIMG_H
 
-#include "map/IMap.h"
 #include "map/CMapDraw.h"
-#include "map/garmin/Garmin.h"
+#include "map/IMap.h"
 #include "map/garmin/CGarminPoint.h"
 #include "map/garmin/CGarminPolygon.h"
 #include "map/garmin/CGarminTyp.h"
+#include "map/garmin/Garmin.h"
 
 #include <QMap>
 
@@ -39,523 +39,536 @@ typedef QVector<CGarminPoint> pointtype_t;
 class CMapIMG : public IMap
 {
     Q_OBJECT
-    public:
-        struct maplevel_t
+public:
+    struct maplevel_t
+    {
+        bool inherited;
+        quint8 level;
+        quint8 bits;
+    };
+
+    /// subfile part (TRE, RGN, ...) location information
+    struct subfile_part_t
+    {
+        subfile_part_t() : offset(0), size(0)
         {
-            bool inherited;
-            quint8 level;
-            quint8 bits;
-        };
-
-        /// subfile part (TRE, RGN, ...) location information
-        struct subfile_part_t
+        }
+        /// file offset of subfile part
+        quint32 offset;
+        /// size of the subfile part
+        quint32 size;
+    };
+
+    /// 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 latiude 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;
+
+        /// area in meter coordinates covered by this subdivision []
+        QRectF area;
+
+        /// number of left shifts for RGN data
+        quint32 shift;
+        /// map level this subdivision is shown
+        quint32 level;
+
+        quint32 offsetPoints2;
+        qint32 lengthPoints2;
+        quint32 offsetPolylines2;
+        qint32 lengthPolylines2;
+        quint32 offsetPolygons2;
+        qint32 lengthPolygons2;
+    };
+
+    struct subfile_desc_t
+    {
+        subfile_desc_t() : north(0.0), east(0.0), south(0.0), west(0.0), isTransparent(false), strtbl(0)
         {
-            subfile_part_t() : offset(0), size(0){}
-            /// file offset of subfile part
-            quint32 offset;
-            /// size of the subfile part
-            quint32 size;
-        };
-
-        /// subdivision  information
-        struct subdiv_desc_t
+        }
+
+        /// 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;
+
+        /// area in [] covered by this subfile
+        QRectF area;
+
+        /// list of subdivisions
+        QVector<subdiv_desc_t> subdivs;
+        /// used maplevels
+        QVector<maplevel_t> maplevels;
+        /// bit 1 of POI_flags (TRE header @ 0x3F)
+        bool isTransparent;
+        /// object to manage the string tables
+        IGarminStrTbl * strtbl;
+    };
+
+    CMapIMG(const QString &filename, CMapDraw *parent);
+    virtual ~CMapIMG();
+
+    void draw(IDrawContext::buffer_t& buf);
+
+    void getInfo(const QPoint& px, QString& str);
+    void getToolTip(const QPoint& px, QString& infotext);
+
+    /**
+       @brief Find a matching street polyline
+
+       The polyline must be close enough in terms of pixel to point 1 and 2. "Close enough" is defined by
+       the threshold. The returned poylline uses lon/lat as coordinates.
+
+       @param pt1           first point in [rad]
+       @param pt2           second point in [rad]
+       @param threshold     the "close enough" threshold in [pixel]
+       @param polyline      the resulting polyline, if any, in [rad]
+       @return              Return true if a line has been found.
+     */
+    bool findPolylineCloseBy(QPointF& pt1, QPointF& pt2, qint32 threshold, QPolygonF& polyline);
+
+
+private:
+    enum exce_e {eErrOpen, eErrAccess, errFormat, errLock, errAbort};
+    struct exce_t
+    {
+        exce_t(exce_e err, const QString& msg) : err(err), msg(msg)
         {
-            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 latiude 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;
-
-            /// area in meter coordinates covered by this subdivision []
-            QRectF area;
-
-            /// number of left shifts for RGN data
-            quint32 shift;
-            /// map level this subdivision is shown
-            quint32 level;
-
-            quint32 offsetPoints2;
-            qint32 lengthPoints2;
-            quint32 offsetPolylines2;
-            qint32 lengthPolylines2;
-            quint32 offsetPolygons2;
-            qint32 lengthPolygons2;
-        };
-
-        struct subfile_desc_t
+        }
+        exce_e err;
+        QString msg;
+    };
+    struct strlbl_t
+    {
+        strlbl_t() : type(CGarminTyp::eStandard)
         {
-            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;
-
-            /// area in [] covered by this subfile
-            QRectF area;
-
-            /// list of subdivisions
-            QVector<subdiv_desc_t> subdivs;
-            /// used maplevels
-            QVector<maplevel_t> maplevels;
-            /// bit 1 of POI_flags (TRE header @ 0x3F)
-            bool isTransparent;
-            /// object to manage the string tables
-            IGarminStrTbl * strtbl;
-        };
-
-        CMapIMG(const QString &filename, CMapDraw *parent);
-        virtual ~CMapIMG();
-
-        void draw(IDrawContext::buffer_t& buf);
-
-        void getInfo(const QPoint& px, QString& str);
-        void getToolTip(const QPoint& px, QString& infotext);
-
-        /**
-           @brief Find a matching street polyline
-
-           The polyline must be close enough in terms of pixel to point 1 and 2. "Close enough" is defined by
-           the threshold. The returned poylline uses lon/lat as coordinates.
-
-           @param pt1           first point in [rad]
-           @param pt2           second point in [rad]
-           @param threshold     the "close enough" threshold in [pixel]
-           @param polyline      the resulting polyline, if any, in [rad]
-           @return              Return true if a line has been found.
-        */
-        bool findPolylineCloseBy(QPointF& pt1, QPointF& pt2, qint32 threshold, QPolygonF& polyline);
-
-
-    private:
-        enum exce_e {eErrOpen, eErrAccess, errFormat, errLock, errAbort};
-        struct exce_t
-        {
-            exce_t(exce_e err, const QString& msg) : err(err), msg(msg){}
-            exce_e err;
-            QString msg;
-        };
-        struct strlbl_t
-        {
-            strlbl_t() : type(CGarminTyp::eStandard){}
-
-            QPoint  pt;
-            QRect   rect;
-            QString str;
-            CGarminTyp::label_type_e type;
-        };
-
-
-        quint8 scale2bits(const QPointF &scale);
-        void setupTyp();
-        void readBasics();
-        void readSubfileBasics(subfile_desc_t& subfile, CFileExt &file);
-        void processPrimaryMapData();
-        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);
-        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);
-        void drawPois(QPainter& p, pointtype_t& pts, QVector<QRectF>& rectPois);
-        void drawLabels(QPainter& p, const QVector<strlbl_t> &lbls);
-        void drawText(QPainter& p);
-
-        void drawLine(QPainter& p, CGarminPolygon& l, const CGarminTyp::polyline_property& property, const QFontMetricsF& metrics, const QFont& font, const QPointF& scale);
-        void drawLine(QPainter& p, const CGarminPolygon& l);
-
-        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 getInfoPolylines(const QPoint& pt, QMultiMap<QString, QString>& dict);
-        void getInfoPolygons(const QPoint& pt, QMultiMap<QString, QString>& dict);
+        }
+
+        QPoint pt;
+        QRect rect;
+        QString str;
+        CGarminTyp::label_type_e type;
+    };
+
+
+    quint8 scale2bits(const QPointF &scale);
+    void setupTyp();
+    void readBasics();
+    void readSubfileBasics(subfile_desc_t& subfile, CFileExt &file);
+    void processPrimaryMapData();
+    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);
+    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);
+    void drawPois(QPainter& p, pointtype_t& pts, QVector<QRectF>& rectPois);
+    void drawLabels(QPainter& p, const QVector<strlbl_t> &lbls);
+    void drawText(QPainter& p);
+
+    void drawLine(QPainter& p, CGarminPolygon& l, const CGarminTyp::polyline_property& property, const QFontMetricsF& metrics, const QFont& font, const QPointF& scale);
+    void drawLine(QPainter& p, const CGarminPolygon& l);
+
+    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 getInfoPolylines(const QPoint& pt, QMultiMap<QString, QString>& dict);
+    void getInfoPolygons(const QPoint& pt, QMultiMap<QString, QString>& dict);
 
 #pragma pack(1)
-        // Garmin IMG file header structure, to the start of the FAT blocks
-        struct hdr_img_t
-        {
-            quint8  xorByte;     ///< 0x00000000
-            quint8  byte0x00000001_0x0000000F[15];
-            char    signature[7];///< 0x00000010 .. 0x00000016
-            quint8  byte0x00000017_0x00000040[42];
-                                 ///< 0x00000041 .. 0x00000047
-            char    identifier[7];
-            quint8  byte0x00000048;
-            char    desc1[20];   ///< 0x00000049 .. 0x0000005C
-            quint8  byte0x0000005D_0x00000060[4];
-            quint8  e1;          ///< 0x00000061
-            quint8  e2;          ///< 0x00000062
-            quint8  byte0x00000063_0x00000064[2];
-            char    desc2[31];   ///< 0x00000065 .. 0x00000083
-            quint8  byte0x00000084_0x0000040B[904];
-            quint32 dataoffset;  ///< 0x0000040C .. 0x0000040F
-            quint8  byte0x00000410_0x0000041F[16];
-            quint16 blocks[240]; ///< 0x00000420 .. 0x000005FF
-
-            quint32 blocksize(){return 1 << (e1 + e2);}
-        };
-        struct FATblock_t
-        {
-            quint8  flag;        ///< 0x00000000
-            char    name[8];     ///< 0x00000001 .. 0x00000008
-            char    type[3];     ///< 0x00000009 .. 0x0000000B
-            quint32 size;        ///< 0x0000000C .. 0x0000000F
-            quint16 part;        ///< 0x00000010 .. 0x00000011
-            quint8  byte0x00000012_0x0000001F[14];
-            quint16 blocks[240]; ///< 0x00000020 .. 0x000001FF
-        };
-
-        // common header of the RGN, TRE, LBL, NET, ... parts of the IMG file
-        struct hdr_subfile_part_t
+    // Garmin IMG file header structure, to the start of the FAT blocks
+    struct hdr_img_t
+    {
+        quint8 xorByte;          ///< 0x00000000
+        quint8 byte0x00000001_0x0000000F[15];
+        char signature[7];       ///< 0x00000010 .. 0x00000016
+        quint8 byte0x00000017_0x00000040[42];
+        ///< 0x00000041 .. 0x00000047
+        char identifier[7];
+        quint8 byte0x00000048;
+        char desc1[20];          ///< 0x00000049 .. 0x0000005C
+        quint8 byte0x0000005D_0x00000060[4];
+        quint8 e1;               ///< 0x00000061
+        quint8 e2;               ///< 0x00000062
+        quint8 byte0x00000063_0x00000064[2];
+        char desc2[31];          ///< 0x00000065 .. 0x00000083
+        quint8 byte0x00000084_0x0000040B[904];
+        quint32 dataoffset;      ///< 0x0000040C .. 0x0000040F
+        quint8 byte0x00000410_0x0000041F[16];
+        quint16 blocks[240];     ///< 0x00000420 .. 0x000005FF
+
+        quint32 blocksize()
         {
-            quint16 length;      ///< 0x00000000 .. 0x00000001
-            char    type[10];    ///< 0x00000002 .. 0x0000000B
-            quint8  byte0x0000000C;
-            quint8  flag;        ///< 0x0000000D
-            quint8  byte0x0000000E_0x00000014[7];
-        };
-
-        // TRE part header, to 0xB7
-        struct hdr_tre_t : public hdr_subfile_part_t
-        {
-            quint24 northbound;  ///< 0x00000015 .. 0x00000017
-            quint24 eastbound;   ///< 0x00000018 .. 0x0000001A
-            quint24 southbound;  ///< 0x0000001B .. 0x0000001D
-            quint24 westbound;   ///< 0x0000001E .. 0x00000020
-            quint32 tre1_offset; ///< 0x00000021 .. 0x00000024
-            quint32 tre1_size;   ///< 0x00000025 .. 0x00000028
-            quint32 tre2_offset; ///< 0x00000029 .. 0x0000002C
-            quint32 tre2_size;   ///< 0x0000002D .. 0x00000030
-            quint32 tre3_offset; ///< 0x00000031 .. 0x00000034
-            quint32 tre3_size;   ///< 0x00000035 .. 0x00000038
+            return 1 << (e1 + e2);
+        }
+    };
+    struct FATblock_t
+    {
+        quint8 flag;             ///< 0x00000000
+        char name[8];            ///< 0x00000001 .. 0x00000008
+        char type[3];            ///< 0x00000009 .. 0x0000000B
+        quint32 size;            ///< 0x0000000C .. 0x0000000F
+        quint16 part;            ///< 0x00000010 .. 0x00000011
+        quint8 byte0x00000012_0x0000001F[14];
+        quint16 blocks[240];     ///< 0x00000020 .. 0x000001FF
+    };
+
+    // common header of the RGN, TRE, LBL, NET, ... parts of the IMG file
+    struct hdr_subfile_part_t
+    {
+        quint16 length;          ///< 0x00000000 .. 0x00000001
+        char type[10];           ///< 0x00000002 .. 0x0000000B
+        quint8 byte0x0000000C;
+        quint8 flag;             ///< 0x0000000D
+        quint8 byte0x0000000E_0x00000014[7];
+    };
+
+    // TRE part header, to 0xB7
+    struct hdr_tre_t : public hdr_subfile_part_t
+    {
+        quint24 northbound;      ///< 0x00000015 .. 0x00000017
+        quint24 eastbound;       ///< 0x00000018 .. 0x0000001A
+        quint24 southbound;      ///< 0x0000001B .. 0x0000001D
+        quint24 westbound;       ///< 0x0000001E .. 0x00000020
+        quint32 tre1_offset;     ///< 0x00000021 .. 0x00000024
+        quint32 tre1_size;       ///< 0x00000025 .. 0x00000028
+        quint32 tre2_offset;     ///< 0x00000029 .. 0x0000002C
+        quint32 tre2_size;       ///< 0x0000002D .. 0x00000030
+        quint32 tre3_offset;     ///< 0x00000031 .. 0x00000034
+        quint32 tre3_size;       ///< 0x00000035 .. 0x00000038
                                  ///< 0x00000039 .. 0x0000003A
-            quint16 tre3_rec_size;
-            quint8  byte0x0000003B_0x0000003E[4];
-            quint8  POI_flags;   ///< 0x0000003F
-            quint8  byte0x00000040_0x00000049[10];
-            quint32 tre4_offset; ///< 0x0000004A .. 0x0000004D
-            quint32 tre4_size;   ///< 0x0000004E .. 0x00000051
+        quint16 tre3_rec_size;
+        quint8 byte0x0000003B_0x0000003E[4];
+        quint8 POI_flags;        ///< 0x0000003F
+        quint8 byte0x00000040_0x00000049[10];
+        quint32 tre4_offset;     ///< 0x0000004A .. 0x0000004D
+        quint32 tre4_size;       ///< 0x0000004E .. 0x00000051
                                  ///< 0x00000052 .. 0x00000053
-            quint16 tre4_rec_size;
-            quint8  byte0x00000054_0x00000057[4];
-            quint32 tre5_offset; ///< 0x00000058 .. 0x0000005B
-            quint32 tre5_size;   ///< 0x0000005C .. 0x0000005F
+        quint16 tre4_rec_size;
+        quint8 byte0x00000054_0x00000057[4];
+        quint32 tre5_offset;     ///< 0x00000058 .. 0x0000005B
+        quint32 tre5_size;       ///< 0x0000005C .. 0x0000005F
                                  ///< 0x00000060 .. 0x00000061
-            quint16 tre5_rec_size;
-            quint8  byte0x00000062_0x00000065[4];
-            quint32 tre6_offset; ///< 0x00000066 .. 0x00000069
-            quint32 tre6_size;   ///< 0x0000006A .. 0x0000006D
+        quint16 tre5_rec_size;
+        quint8 byte0x00000062_0x00000065[4];
+        quint32 tre6_offset;     ///< 0x00000066 .. 0x00000069
+        quint32 tre6_size;       ///< 0x0000006A .. 0x0000006D
                                  ///< 0x0000006E .. 0x0000006F
-            quint16 tre6_rec_size;
-            quint8  byte0x00000070_0x00000073[4];
-            /*-----------------------------------------------------*/
-            quint8  byte0x00000074_0x0000007B[8];
-            // Object groups V2 (CTreGroup2).
-            quint32 tre7_offset; ///< 0x0000007C .. 0x0000007F //Groups2Offset
-            quint32 tre7_size;   ///< 0x00000080 .. 0x00000083  //dwGroups2Length
+        quint16 tre6_rec_size;
+        quint8 byte0x00000070_0x00000073[4];
+        /*-----------------------------------------------------*/
+        quint8 byte0x00000074_0x0000007B[8];
+        // Object groups V2 (CTreGroup2).
+        quint32 tre7_offset;     ///< 0x0000007C .. 0x0000007F //Groups2Offset
+        quint32 tre7_size;       ///< 0x00000080 .. 0x00000083  //dwGroups2Length
                                  ///< 0x00000084 .. 0x00000085 //wGroup2RecSize
-            quint16 tre7_rec_size;
-            quint8  byte0x00000086_0x00000089[4];
-            // Order: polyline, polygon, POI; each sorted by type (1 type 1 levels 1 subtype)
-            quint32 tre8_offset; ///< 0x0000008A .. 0x0000008D
-            quint32 tre8_size;   ///< 0x0000008E .. 0x00000091
+        quint16 tre7_rec_size;
+        quint8 byte0x00000086_0x00000089[4];
+        // Order: polyline, polygon, POI; each sorted by type (1 type 1 levels 1 subtype)
+        quint32 tre8_offset;     ///< 0x0000008A .. 0x0000008D
+        quint32 tre8_size;       ///< 0x0000008E .. 0x00000091
                                  ///< 0x00000092 .. 0x00000093
-            quint16 tre8_rec_size;
-
-                                 ///< 0x00000094 .. 0x00000095
-            quint16 polyl2_types_num;
-                                 ///< 0x00000096 .. 0x00000097
-            quint16 polyg2_types_num;
-                                 ///< 0x00000098 .. 0x00000099
-            quint16 poi2_types_num;
-
-            /*-----------------------------------------------------*/
-            quint8  key[20];     ///< 0x0000009A .. 0x000000AD
-            quint32 tre9_offset; ///< 0x000000AE .. 0x000000B1
-            quint32 tre9_size;   ///< 0x000000B2 .. 0x000000B5
+        quint16 tre8_rec_size;
+
+        ///< 0x00000094 .. 0x00000095
+        quint16 polyl2_types_num;
+        ///< 0x00000096 .. 0x00000097
+        quint16 polyg2_types_num;
+        ///< 0x00000098 .. 0x00000099
+        quint16 poi2_types_num;
+
+        /*-----------------------------------------------------*/
+        quint8 key[20];          ///< 0x0000009A .. 0x000000AD
+        quint32 tre9_offset;     ///< 0x000000AE .. 0x000000B1
+        quint32 tre9_size;       ///< 0x000000B2 .. 0x000000B5
                                  ///< 0x000000B6 .. 0x000000B7
-            quint16 tre9_rec_size;
-
-        };
-
-        // RGN part header
-        struct hdr_rgn_t : public hdr_subfile_part_t
-        {
-            quint32 offset;      ///< 0x00000015 .. 0x00000018
-            quint32 length;      ///< 0x00000019 .. 0x0000001C
+        quint16 tre9_rec_size;
+    };
+
+    // RGN part header
+    struct hdr_rgn_t : public hdr_subfile_part_t
+    {
+        quint32 offset;          ///< 0x00000015 .. 0x00000018
+        quint32 length;          ///< 0x00000019 .. 0x0000001C
                                  ///< 0x0000001D .. 0x00000020
-            quint32 offset_polyg2;
-                                 ///< 0x00000021 .. 0x00000024
-            quint32 length_polyg2;
-            quint8  byte0x00000025_0x00000038[20];
-                                 ///< 0x00000039 .. 0x0000003C
-            quint32 offset_polyl2;
-                                 ///< 0x0000003D .. 0x00000040
-            quint32 length_polyl2;
-            quint8  byte0x00000041_0x00000054[20];
-                                 ///< 0x00000055 .. 0x00000058
-            quint32 offset_point2;
-                                 ///< 0x00000059 .. 0x0000005C
-            quint32 length_point2;
-        };
-
-        // LBL part header
-        struct hdr_lbl_t : public hdr_subfile_part_t
-        {
-            quint32 lbl1_offset; ///< 0x00000015 .. 0x00000018
-            quint32 lbl1_length; ///< 0x00000019 .. 0x0000001C
-            quint8  addr_shift;  ///< 0x0000001D
-            quint8  coding;      ///< 0x0000001E
-            quint32 lbl2_offset; ///< 0x0000001F .. 0x00000022
-            quint32 lbl2_length; ///< 0x00000023 .. 0x00000026
+        quint32 offset_polyg2;
+        ///< 0x00000021 .. 0x00000024
+        quint32 length_polyg2;
+        quint8 byte0x00000025_0x00000038[20];
+        ///< 0x00000039 .. 0x0000003C
+        quint32 offset_polyl2;
+        ///< 0x0000003D .. 0x00000040
+        quint32 length_polyl2;
+        quint8 byte0x00000041_0x00000054[20];
+        ///< 0x00000055 .. 0x00000058
+        quint32 offset_point2;
+        ///< 0x00000059 .. 0x0000005C
+        quint32 length_point2;
+    };
+
+    // LBL part header
+    struct hdr_lbl_t : public hdr_subfile_part_t
+    {
+        quint32 lbl1_offset;     ///< 0x00000015 .. 0x00000018
+        quint32 lbl1_length;     ///< 0x00000019 .. 0x0000001C
+        quint8 addr_shift;       ///< 0x0000001D
+        quint8 coding;           ///< 0x0000001E
+        quint32 lbl2_offset;     ///< 0x0000001F .. 0x00000022
+        quint32 lbl2_length;     ///< 0x00000023 .. 0x00000026
                                  ///< 0x00000027 .. 0x00000028
-            quint16 lbl2_rec_size;
-            quint8  byte0x00000029_0x0000002C[4];
-            quint32 lbl3_offset; ///< 0x0000002D .. 0x00000030
-            quint32 lbl3_length; ///< 0x00000031 .. 0x00000034
+        quint16 lbl2_rec_size;
+        quint8 byte0x00000029_0x0000002C[4];
+        quint32 lbl3_offset;     ///< 0x0000002D .. 0x00000030
+        quint32 lbl3_length;     ///< 0x00000031 .. 0x00000034
                                  ///< 0x00000035 .. 0x00000036
-            quint16 lbl3_rec_size;
-            quint8  byte0x00000037_0x0000003A[4];
-            quint32 lbl4_offset; ///< 0x0000003B .. 0x0000003E
-            quint32 lbl4_length; ///< 0x0000003F .. 0x00000042
+        quint16 lbl3_rec_size;
+        quint8 byte0x00000037_0x0000003A[4];
+        quint32 lbl4_offset;     ///< 0x0000003B .. 0x0000003E
+        quint32 lbl4_length;     ///< 0x0000003F .. 0x00000042
                                  ///< 0x00000043 .. 0x00000044
-            quint16 lbl4_rec_size;
-            quint8  byte0x00000045_0x00000048[4];
-            quint32 lbl5_offset; ///< 0x00000049 .. 0x0000004C
-            quint32 lbl5_length; ///< 0x0000004D .. 0x00000050
+        quint16 lbl4_rec_size;
+        quint8 byte0x00000045_0x00000048[4];
+        quint32 lbl5_offset;     ///< 0x00000049 .. 0x0000004C
+        quint32 lbl5_length;     ///< 0x0000004D .. 0x00000050
                                  ///< 0x00000051 .. 0x00000052
-            quint16 lbl5_rec_size;
-            quint8  byte0x00000053_0x00000056[4];
-            quint32 lbl6_offset; ///< 0x00000057 .. 0x0000005A
-            quint32 lbl6_length; ///< 0x0000005B .. 0x0000005E
+        quint16 lbl5_rec_size;
+        quint8 byte0x00000053_0x00000056[4];
+        quint32 lbl6_offset;     ///< 0x00000057 .. 0x0000005A
+        quint32 lbl6_length;     ///< 0x0000005B .. 0x0000005E
                                  ///< 0x0000005F
-            quint8  lbl6_addr_shift;
-                                 ///< 0x00000060
-            quint8  lbl6_glob_mask;
-            quint8  byte0x00000061_0x00000063[3];
-            quint32 lbl7_offset; ///< 0x00000064 .. 0x00000067
-            quint32 lbl7_length; ///< 0x00000068 .. 0x0000006B
+        quint8 lbl6_addr_shift;
+        ///< 0x00000060
+        quint8 lbl6_glob_mask;
+        quint8 byte0x00000061_0x00000063[3];
+        quint32 lbl7_offset;     ///< 0x00000064 .. 0x00000067
+        quint32 lbl7_length;     ///< 0x00000068 .. 0x0000006B
                                  ///< 0x0000006C .. 0x0000006D
-            quint16 lbl7_rec_size;
-            quint8  byte0x0000006E_0x00000071[4];
-            quint32 lbl8_offset; ///< 0x00000072 .. 0x00000075
-            quint32 lbl8_length; ///< 0x00000076 .. 0x00000079
+        quint16 lbl7_rec_size;
+        quint8 byte0x0000006E_0x00000071[4];
+        quint32 lbl8_offset;     ///< 0x00000072 .. 0x00000075
+        quint32 lbl8_length;     ///< 0x00000076 .. 0x00000079
                                  ///< 0x0000007A .. 0x0000007B
-            quint16 lbl8_rec_size;
-            quint8  byte0x0000007C_0x0000007F[4];
-            quint32 lbl9_offset; ///< 0x00000080 .. 0x00000083
-            quint32 lbl9_length; ///< 0x00000084 .. 0x00000087
+        quint16 lbl8_rec_size;
+        quint8 byte0x0000007C_0x0000007F[4];
+        quint32 lbl9_offset;     ///< 0x00000080 .. 0x00000083
+        quint32 lbl9_length;     ///< 0x00000084 .. 0x00000087
                                  ///< 0x00000088 .. 0x00000089
-            quint16 lbl9_rec_size;
-            quint8  byte0x0000008A_0x0000008D[4];
-            quint32 lbl10_offset;///< 0x0000008E .. 0x00000091
-            quint32 lbl10_length;///< 0x00000092 .. 0x00000095
+        quint16 lbl9_rec_size;
+        quint8 byte0x0000008A_0x0000008D[4];
+        quint32 lbl10_offset;    ///< 0x0000008E .. 0x00000091
+        quint32 lbl10_length;    ///< 0x00000092 .. 0x00000095
                                  ///< 0x00000096 .. 0x00000097
-            quint16 lbl10_rec_size;
-            quint8  byte0x00000098_0x0000009B[4];
-            quint32 lbl11_offset;///< 0x0000009C .. 0x0000009F
-            quint32 lbl11_length;///< 0x000000A0 .. 0x000000A3
+        quint16 lbl10_rec_size;
+        quint8 byte0x00000098_0x0000009B[4];
+        quint32 lbl11_offset;    ///< 0x0000009C .. 0x0000009F
+        quint32 lbl11_length;    ///< 0x000000A0 .. 0x000000A3
                                  ///< 0x000000A4 .. 0x000000A5
-            quint16 lbl11_rec_size;
-            quint8  byte0x000000A6_0x000000A9[4];
-            quint16 codepage;    ///< 0x000000AA .. 0x000000AB  optional check length
-
-        };
-
-        // NET part header
-        struct hdr_net_t : public hdr_subfile_part_t
-        {
-            quint32 net1_offset; ///< 0x00000015 .. 0x00000018
-            quint32 net1_length; ///< 0x00000019 .. 0x0000001C
+        quint16 lbl11_rec_size;
+        quint8 byte0x000000A6_0x000000A9[4];
+        quint16 codepage;        ///< 0x000000AA .. 0x000000AB  optional check length
+    };
+
+    // NET part header
+    struct hdr_net_t : public hdr_subfile_part_t
+    {
+        quint32 net1_offset;     ///< 0x00000015 .. 0x00000018
+        quint32 net1_length;     ///< 0x00000019 .. 0x0000001C
                                  ///< 0x0000001D
-            quint8  net1_addr_shift;
-            quint32 net2_offset; ///< 0x0000001E .. 0x00000021
-            quint32 net2_length; ///< 0x00000022 .. 0x00000025
+        quint8 net1_addr_shift;
+        quint32 net2_offset;     ///< 0x0000001E .. 0x00000021
+        quint32 net2_length;     ///< 0x00000022 .. 0x00000025
                                  ///< 0x00000026
-            quint8  net2_addr_shift;
-            quint32 net3_offset; ///< 0x00000027 .. 0x0000002A
-            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;
-        };
+        quint8 net2_addr_shift;
+        quint32 net3_offset;     ///< 0x00000027 .. 0x0000002A
+        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)
 
-        // map level definition
-        struct tre_map_level_t
-        {
-            quint8 zoom;
-            quint8  bits;
-            quint16 nsubdiv;
-        };
-
-        // map subdivision definition, without pointer to the lower level subparts
-        struct tre_subdiv_t
-        {
-            quint24 rgn_offset;
-            quint8  elements;
-            quint24 center_lng;
-            quint24 center_lat;
-            quint16 width_trm;
+    // map level definition
+    struct tre_map_level_t
+    {
+        quint8 zoom;
+        quint8 bits;
+        quint16 nsubdiv;
+    };
+
+    // map subdivision definition, without pointer to the lower level subparts
+    struct tre_subdiv_t
+    {
+        quint24 rgn_offset;
+        quint8 elements;
+        quint24 center_lng;
+        quint24 center_lat;
+        quint16 width_trm;
 #define TRE_SUBDIV_WIDTH(r)    (gar_load(uint16_t, (r)->width_trm) & 0x7FFF)
 #define TRE_SUBDIV_TERM(r)     ((gar_load(uint16_t, (r)->width_trm) & 0x8000) != 0)
-            quint16 height;
-        };
-
-        // pointer to the lower level subparts
-        struct tre_subdiv_next_t : public tre_subdiv_t
-        {
-            quint16 next;
-        };
-
-        struct tre_subdiv2_t
-        {
-            quint32 offsetPolygons;
-            quint32 offsetPolyline;
-            quint32 offsetPoints;
-            quint8 btObjects;
-        };
+        quint16 height;
+    };
+
+    // pointer to the lower level subparts
+    struct tre_subdiv_next_t : public tre_subdiv_t
+    {
+        quint16 next;
+    };
+
+    struct tre_subdiv2_t
+    {
+        quint32 offsetPolygons;
+        quint32 offsetPolyline;
+        quint32 offsetPoints;
+        quint8 btObjects;
+    };
 
 #ifdef WIN32
 #pragma pack()
 #else
 #pragma pack(0)
 #endif
-        struct map_level_t
-        {
-            quint8 bits;
-            quint8 level;
-            bool useBaseMap;
+    struct map_level_t
+    {
+        quint8 bits;
+        quint8 level;
+        bool useBaseMap;
 
-            bool operator==(const map_level_t &ml)  const
+        bool operator==(const map_level_t &ml)  const
+        {
+            if (ml.bits != bits || ml.level != level || ml.useBaseMap != useBaseMap)
             {
-                if (ml.bits != bits || ml.level != level || ml.useBaseMap != useBaseMap)
-                    return false;
-                else
-                    return true;
+                return false;
             }
-
-            static bool GreaterThan(const map_level_t &ml1, const map_level_t &ml2)
+            else
             {
-                return ml1.bits < ml2.bits;
+                return true;
             }
-        };
-
-        QString filename;
-        quint8  mask;
-        quint32 mask32;
-        quint64 mask64;
-        QString mapdesc;
-        /// hold all subfile descriptors
-        /**
-            In a normal *.img file there is only one subfile. However
-            gmapsupp.img files can hold several subfiles each with it's
-            own subfile parts.
-        */
-        QMap<QString,subfile_desc_t> subfiles;
-        /// relay the transparent flags from the subfiles
-        bool transparent;
-
-        QRectF maparea;
-
-        QFontMetrics fm;
-
-        /// combined maplevels of all tiles
-        QVector<map_level_t> maplevels;
-
-        QMap<quint32, CGarminTyp::polyline_property> polylineProperties;
-        QMap<quint32, CGarminTyp::polygon_property> polygonProperties;
-        QList<quint32> polygonDrawOrder;
-        QMap<quint32, CGarminTyp::point_property> pointProperties;
-        QMap<quint8, QString> languages;
-
-        polytype_t polygons;
-        polytype_t polylines;
-        pointtype_t points;
-        pointtype_t pois;        
-
-        QVector<strlbl_t> labels;
-
-        struct textpath_t
+        }
+
+        static bool GreaterThan(const map_level_t &ml1, const map_level_t &ml2)
         {
-            //            QPainterPath    path;
-            QPolygonF       polyline;
-            QString         text;
-            QFont           font;
-            QVector<qreal>  lengths;
-            qint32          lineWidth;
-        };
-
-        QVector<textpath_t> textpaths;
-        qint8 selectedLanguage;
-        QSet<QString> copyrights;
+            return ml1.bits < ml2.bits;
+        }
+    };
+
+    QString filename;
+    quint8 mask;
+    quint32 mask32;
+    quint64 mask64;
+    QString mapdesc;
+    /// hold all subfile descriptors
+    /**
+        In a normal *.img file there is only one subfile. However
+        gmapsupp.img files can hold several subfiles each with it's
+        own subfile parts.
+     */
+    QMap<QString,subfile_desc_t> subfiles;
+    /// relay the transparent flags from the subfiles
+    bool transparent;
+
+    QRectF maparea;
+
+    QFontMetrics fm;
+
+    /// combined maplevels of all tiles
+    QVector<map_level_t> maplevels;
+
+    QMap<quint32, CGarminTyp::polyline_property> polylineProperties;
+    QMap<quint32, CGarminTyp::polygon_property> polygonProperties;
+    QList<quint32> polygonDrawOrder;
+    QMap<quint32, CGarminTyp::point_property> pointProperties;
+    QMap<quint8, QString> languages;
+
+    polytype_t polygons;
+    polytype_t polylines;
+    pointtype_t points;
+    pointtype_t pois;
+
+    QVector<strlbl_t> labels;
+
+    struct textpath_t
+    {
+        //            QPainterPath    path;
+        QPolygonF polyline;
+        QString text;
+        QFont font;
+        QVector<qreal>  lengths;
+        qint32 lineWidth;
+    };
+
+    QVector<textpath_t> textpaths;
+    qint8 selectedLanguage;
+    QSet<QString> copyrights;
 };
 
 #endif //CMAPIMG_H
diff --git a/src/map/CMapItem.cpp b/src/map/CMapItem.cpp
index d691421..500491e 100644
--- a/src/map/CMapItem.cpp
+++ b/src/map/CMapItem.cpp
@@ -17,14 +17,14 @@
 **********************************************************************************************/
 
 #include "map/CMapDraw.h"
+#include "map/CMapIMG.h"
 #include "map/CMapItem.h"
 #include "map/CMapJNX.h"
+#include "map/CMapMAP.h"
 #include "map/CMapRMAP.h"
-#include "map/CMapIMG.h"
+#include "map/CMapTMS.h"
 #include "map/CMapVRT.h"
-#include "map/CMapMAP.h"
 #include "map/CMapWMTS.h"
-#include "map/CMapTMS.h"
 #include "map/IMapProp.h"
 #include <QtGui>
 
@@ -40,7 +40,6 @@ CMapItem::CMapItem(QTreeWidget *parent, CMapDraw * map)
 
 CMapItem::~CMapItem()
 {
-
 }
 
 void CMapItem::saveConfig(QSettings& cfg)
@@ -70,13 +69,12 @@ void CMapItem::loadConfig(QSettings& cfg)
 
 void CMapItem::showChildren(bool yes)
 {
-
     if(yes && !mapfile.isNull())
     {
         QTreeWidget * tw = treeWidget();
 
         QTreeWidgetItem * item = new QTreeWidgetItem(this);
-        item->setFlags(Qt::ItemIsEnabled);        
+        item->setFlags(Qt::ItemIsEnabled);
         tw->setItemWidget(item, 0, mapfile->getSetup());
     }
     else
@@ -85,7 +83,6 @@ void CMapItem::showChildren(bool yes)
         qDeleteAll(items);
         delete mapfile->getSetup();
     }
-
 }
 
 void CMapItem::updateIcon()
@@ -234,7 +231,7 @@ bool CMapItem::activate()
         the correct group context in the QSetting object.
         This call will result into a call of loadConfig() of this CMapItem
         object.
-    */
+     */
     map->loadConfigForMapItem(this);
 
     // Add the mapfile setup dialog as child of this item
@@ -256,7 +253,6 @@ void CMapItem::moveToTop()
 
 void CMapItem::moveToBottom()
 {
-
     int row;
     QTreeWidget * w = treeWidget();
     QMutexLocker lock(&mutexActiveMaps);
diff --git a/src/map/CMapItem.h b/src/map/CMapItem.h
index 3560e2f..789f846 100644
--- a/src/map/CMapItem.h
+++ b/src/map/CMapItem.h
@@ -19,9 +19,9 @@
 #ifndef CMAPITEM_H
 #define CMAPITEM_H
 
-#include <QTreeWidgetItem>
 #include <QMutex>
 #include <QPointer>
+#include <QTreeWidgetItem>
 
 class IMap;
 class CMapDraw;
@@ -30,73 +30,72 @@ class QSettings;
 
 class CMapItem : public QTreeWidgetItem
 {
-    public:
-        CMapItem(QTreeWidget * parent, CMapDraw *map);
-        virtual ~CMapItem();
-
-        void saveConfig(QSettings& cfg);
-        void loadConfig(QSettings& cfg);
-
-        /**
-           @brief As the drawing thread is using the list widget to iterate of all maps to draw, all access has to be synchronised.
-         */
-        static QMutex mutexActiveMaps;
-
-        /**
-           @brief Query if map objects are loaded
-           @return True if the internal list of map objects is not empty.
-         */
-        bool isActivated();
-        /**
-           @brief Either loads or destroys internal map objects
-           @return True if the internal list of maps is not empty after the operation.
-         */
-        bool toggleActivate();
-        /**
-         * @brief Load all internal map objects
-         * @return Return true on success.
-         */
-        bool activate();
-        /**
-           @brief Delete all internal map objects
-         */
-        void deactivate();
-        /**
-           @brief Move item to top of list widget
-         */
-        void moveToTop();
-        /**
-           @brief Move item to bottom of active maps list
-         */
-        void moveToBottom();
-
-        /**
-           @brief Set item's icon accorting to map type and state
-         */
-        void updateIcon();
-
-        /**
-           @brief Show or hide child treewidget items
-           @param yes set true to add children, false will remove all children and delete the attached widgets
-         */
-        void showChildren(bool yes);
-
-    private:
-        friend class CMapDraw;
-        CMapDraw * map;
-        /**
-           @brief A MD5 hash over the first 1024 bytes of the map file, to identify the map
-         */
-        QString key;
-        /**
-           @brief List of map files forming that particular map
-         */
-        QString filename;
-        /**
-           @brief List of loaded map objects when map is activated.
-         */
-        QPointer<IMap> mapfile;
-
+public:
+    CMapItem(QTreeWidget * parent, CMapDraw *map);
+    virtual ~CMapItem();
+
+    void saveConfig(QSettings& cfg);
+    void loadConfig(QSettings& cfg);
+
+    /**
+       @brief As the drawing thread is using the list widget to iterate of all maps to draw, all access has to be synchronised.
+     */
+    static QMutex mutexActiveMaps;
+
+    /**
+       @brief Query if map objects are loaded
+       @return True if the internal list of map objects is not empty.
+     */
+    bool isActivated();
+    /**
+       @brief Either loads or destroys internal map objects
+       @return True if the internal list of maps is not empty after the operation.
+     */
+    bool toggleActivate();
+    /**
+     * @brief Load all internal map objects
+     * @return Return true on success.
+     */
+    bool activate();
+    /**
+       @brief Delete all internal map objects
+     */
+    void deactivate();
+    /**
+       @brief Move item to top of list widget
+     */
+    void moveToTop();
+    /**
+       @brief Move item to bottom of active maps list
+     */
+    void moveToBottom();
+
+    /**
+       @brief Set item's icon accorting to map type and state
+     */
+    void updateIcon();
+
+    /**
+       @brief Show or hide child treewidget items
+       @param yes set true to add children, false will remove all children and delete the attached widgets
+     */
+    void showChildren(bool yes);
+
+private:
+    friend class CMapDraw;
+    CMapDraw * map;
+    /**
+       @brief A MD5 hash over the first 1024 bytes of the map file, to identify the map
+     */
+    QString key;
+    /**
+       @brief List of map files forming that particular map
+     */
+    QString filename;
+    /**
+       @brief List of loaded map objects when map is activated.
+     */
+    QPointer<IMap> mapfile;
 };
 
 #endif //CMAPITEM_H
diff --git a/src/map/CMapJNX.cpp b/src/map/CMapJNX.cpp
index 53007db..6416cea 100644
--- a/src/map/CMapJNX.cpp
+++ b/src/map/CMapJNX.cpp
@@ -16,12 +16,12 @@
 
 **********************************************************************************************/
 
-#include "map/CMapJNX.h"
-#include "map/CMapDraw.h"
-#include "units/IUnit.h"
 #include "GeoMath.h"
 #include "canvas/CCanvas.h"
 #include "inttypes.h"
+#include "map/CMapDraw.h"
+#include "map/CMapJNX.h"
+#include "units/IUnit.h"
 
 #include <QtGui>
 
@@ -37,17 +37,16 @@ static void readCString(QDataStream& stream, QByteArray& ba)
         ba += byte;
         stream >> byte;
     }
-
 }
 
 static quint32 scale2jnx(qreal scale)
 {
     /*
-    Ok, I've made some calculations, and got the following formula to
-    calculate the JNX scale (S) depending on the map's meters/pixel
-    ratio (R):
+       Ok, I've made some calculations, and got the following formula to
+       calculate the JNX scale (S) depending on the map's meters/pixel
+       ratio (R):
 
-      S(R) =
+       S(R) =
         qRound(
           76437 *
           exp(
@@ -60,19 +59,19 @@ static quint32 scale2jnx(qreal scale)
         )
 
 
-    where
-      qRound - is a function which returns the closest integer from
+       where
+       qRound - is a function which returns the closest integer from
         floating point value, [unfortunately its defined in C99 but not standard C++]
-      exp - exponent,
-      ln - natural logarithm.
+       exp - exponent,
+       ln - natural logarithm.
 
-    Magic number 130.2084 - is an average value for
-      (JNX scale) / (maps meters per pixel)
-    ratio among all zoom levels in metric system.
+       Magic number 130.2084 - is an average value for
+       (JNX scale) / (maps meters per pixel)
+       ratio among all zoom levels in metric system.
 
-    Magic number 2.000032708011 is a ratio on which our standard scale
-    table is built. It is (76437 / 4777) ^ (1/4).
-    */
+       Magic number 2.000032708011 is a ratio on which our standard scale
+       table is built. It is (76437 / 4777) ^ (1/4).
+     */
 
     return (uint32_t)floor(0.5 + 76437 * exp(log(2.000032708011) * floor(0.5 + log(scale * 10 * 130.2084 / 76437) / log(2.000032708011) ) ) );
 }
@@ -101,7 +100,6 @@ CMapJNX::CMapJNX(const QString &filename, CMapDraw *parent)
 
 void CMapJNX::readFile(const QString& fn, qint32& productId)
 {
-
     hdr_t hdr;
 
     qDebug() << fn;
@@ -157,7 +155,7 @@ void CMapJNX::readFile(const QString& fn, qint32& productId)
     qDebug() << hex << "Version:" << hdr.version << "DevId" <<  hdr.devid;
     qDebug() << mapFile.lon1 << mapFile.lat1 << mapFile.lon2 << mapFile.lat2;
     qDebug() << hex <<  hdr.lon1 <<  hdr.lat1 <<  hdr.lon2 <<  hdr.lat2;
-    qDebug() << hex << "Details:" <<  hdr.details << "Expire:" <<  hdr.expire << "CRC:" <<  hdr.crc ;
+    qDebug() << hex << "Details:" <<  hdr.details << "Expire:" <<  hdr.expire << "CRC:" <<  hdr.crc;
     qDebug() << hex << "Signature:" <<  hdr.signature << "Offset:" <<  hdr.signature_offset;
 
     QString strTopLeft, strBottomRight;
@@ -223,7 +221,6 @@ void CMapJNX::readFile(const QString& fn, qint32& productId)
 
     for(quint32 i = 0; i < hdr.details; i++)
     {
-
         level_t& level = mapFile.levels[i];
         const quint32 M = level.nTiles;
         file.seek(level.offset);
@@ -232,7 +229,6 @@ void CMapJNX::readFile(const QString& fn, qint32& productId)
 
         for(quint32 m = 0; m < M; m++)
         {
-
             qint32 top, right, bottom, left;
             tile_t& tile = level.tiles[m];
 
@@ -246,11 +242,22 @@ void CMapJNX::readFile(const QString& fn, qint32& productId)
         }
     }
 
-    if(mapFile.lon1 < lon1) lon1  = mapFile.lon1;
-    if(mapFile.lat1 > lat1) lat1  = mapFile.lat1;
-    if(mapFile.lon2 > lon2) lon2  = mapFile.lon2;
-    if(mapFile.lat2 < lat2) lat2  = mapFile.lat2;
-
+    if(mapFile.lon1 < lon1)
+    {
+        lon1  = mapFile.lon1;
+    }
+    if(mapFile.lat1 > lat1)
+    {
+        lat1  = mapFile.lat1;
+    }
+    if(mapFile.lon2 > lon2)
+    {
+        lon2  = mapFile.lon2;
+    }
+    if(mapFile.lat2 < lat2)
+    {
+        lat2  = mapFile.lat2;
+    }
 }
 
 qint32 CMapJNX::scale2level(qreal s, const file_t& file)
@@ -274,7 +281,6 @@ qint32 CMapJNX::scale2level(qreal s, const file_t& file)
 
 void CMapJNX::draw(IDrawContext::buffer_t& buf)
 {
-
     if(map->needsRedraw())
     {
         return;
@@ -305,7 +311,7 @@ void CMapJNX::draw(IDrawContext::buffer_t& buf)
     p.setOpacity(getOpacity()/100.0);
     p.translate(-pp);
 
-    foreach(const file_t& mapFile, files)
+    foreach(const file_t &mapFile, files)
     {
         if(!viewport.intersects(mapFile.bbox))
         {
@@ -364,7 +370,6 @@ void CMapJNX::draw(IDrawContext::buffer_t& buf)
         const quint32 M = tiles.size();
         for(quint32 m = 0; m < M; m++)
         {
-
             if(map->needsRedraw())
             {
                 break;
diff --git a/src/map/CMapJNX.h b/src/map/CMapJNX.h
index e06a8b5..f87d857 100644
--- a/src/map/CMapJNX.h
+++ b/src/map/CMapJNX.h
@@ -38,13 +38,13 @@ private:
     {
         quint32 version;     // byte 00000000..00000003
         quint32 devid;       // byte 00000004..00000007
-        qint32  lat1;         // byte 00000010..00000013
-        qint32  lon2;       // byte 00000014..00000017
-        qint32  lat2;      // byte 00000008..0000000B
-        qint32  lon1;        // byte 0000000C..0000000F
+        qint32 lat1;          // byte 00000010..00000013
+        qint32 lon2;        // byte 00000014..00000017
+        qint32 lat2;       // byte 00000008..0000000B
+        qint32 lon1;         // byte 0000000C..0000000F
         quint32 details;     // byte 00000018..0000001B
         quint32 expire;      // byte 0000001C..0000001F
-        qint32  productId;   // byte 00000020..00000023
+        qint32 productId;    // byte 00000020..00000023
         quint32 crc;         // byte 00000024..00000027
         quint32 signature;   // byte 00000028..0000002B
                              // byte 0000002C..0000002F
@@ -59,7 +59,7 @@ private:
 #endif
     struct tile_t
     {
-        QRectF  area;
+        QRectF area;
         quint16 width;
         quint16 height;
         quint32 size;
@@ -103,8 +103,6 @@ private:
     qreal lat1;
     qreal lon2;
     qreal lat2;
-
-
 };
 
 #endif // CMAPJNX_H
diff --git a/src/map/CMapList.cpp b/src/map/CMapList.cpp
index 52a495b..0ba43e0 100644
--- a/src/map/CMapList.cpp
+++ b/src/map/CMapList.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "map/CMapList.h"
 #include "map/CMapItem.h"
+#include "map/CMapList.h"
 
 #include <QtWidgets>
 
@@ -76,7 +76,6 @@ CMapList::CMapList(QWidget *parent)
 
 CMapList::~CMapList()
 {
-
 }
 
 void CMapList::clear()
@@ -123,7 +122,10 @@ void CMapList::updateHelpText()
 void CMapList::slotActivate()
 {
     CMapItem * item = dynamic_cast<CMapItem*>(treeWidget->currentItem());
-    if(item == 0) return;
+    if(item == 0)
+    {
+        return;
+    }
 
     bool activated = item->toggleActivate();
     if(!activated)
diff --git a/src/map/CMapList.h b/src/map/CMapList.h
index ec22318..ae45068 100644
--- a/src/map/CMapList.h
+++ b/src/map/CMapList.h
@@ -19,8 +19,8 @@
 #ifndef CMAPLIST_H
 #define CMAPLIST_H
 
-#include <QWidget>
 #include <QTreeWidget>
+#include <QWidget>
 
 class CMapItem;
 class QMenu;
@@ -28,16 +28,18 @@ class QMenu;
 class CMapTreeWidget : public QTreeWidget
 {
     Q_OBJECT
-    public:
-        CMapTreeWidget(QWidget * parent): QTreeWidget(parent){}
-
-    signals:
-        void sigChanged();
-
-    protected:
-        void dragEnterEvent(QDragEnterEvent * e);
-        void dragMoveEvent (QDragMoveEvent  * e );
-        void dropEvent ( QDropEvent  * e );
+public:
+    CMapTreeWidget(QWidget * parent) : QTreeWidget(parent)
+    {
+    }
+
+signals:
+    void sigChanged();
+
+protected:
+    void dragEnterEvent(QDragEnterEvent * e);
+    void dragMoveEvent (QDragMoveEvent  * e );
+    void dropEvent ( QDropEvent  * e );
 };
 
 #include "ui_IMapList.h"
@@ -45,26 +47,29 @@ class CMapTreeWidget : public QTreeWidget
 class CMapList : public QWidget, private Ui::IMapList
 {
     Q_OBJECT
-    public:
-        CMapList(QWidget * parent);
-        virtual ~CMapList();
+public:
+    CMapList(QWidget * parent);
+    virtual ~CMapList();
 
-        void clear();
-        int count();
-        CMapItem * item(int i);
-        operator QTreeWidget*(){return treeWidget;}
+    void clear();
+    int count();
+    CMapItem * item(int i);
+    operator QTreeWidget*()
+    {
+        return treeWidget;
+    }
 
-        void updateHelpText();
+    void updateHelpText();
 
-    signals:
-        void sigChanged();
+signals:
+    void sigChanged();
 
-    private slots:
-        void slotActivate();
-        void slotContextMenu(const QPoint &point);
+private slots:
+    void slotActivate();
+    void slotContextMenu(const QPoint &point);
 
-    private:
-        QMenu * menu;
+private:
+    QMenu * menu;
 };
 
 #endif //CMAPLIST_H
diff --git a/src/map/CMapMAP.cpp b/src/map/CMapMAP.cpp
index e920fd7..898d893 100644
--- a/src/map/CMapMAP.cpp
+++ b/src/map/CMapMAP.cpp
@@ -16,9 +16,9 @@
 
 **********************************************************************************************/
 
-#include "map/CMapMAP.h"
-#include "map/CMapDraw.h"
 #include "helpers/CFileExt.h"
+#include "map/CMapDraw.h"
+#include "map/CMapMAP.h"
 
 #include <QtWidgets>
 #include <proj_api.h>
@@ -33,7 +33,6 @@ CMapMAP::CMapMAP(const QString &filename, CMapDraw *parent)
     : IMap(eFeatVisibility|eFeatVectorItems, parent)
     , filename(filename)
 {
-
     qDebug() << "------------------------------";
     qDebug() << "MAP: try to open" << filename;
 
@@ -53,12 +52,10 @@ CMapMAP::CMapMAP(const QString &filename, CMapDraw *parent)
 
 CMapMAP::~CMapMAP()
 {
-
 }
 
 void CMapMAP::readBasics()
 {
-
     CFileExt file(filename);
     if(!file.open(QIODevice::ReadOnly))
     {
@@ -147,12 +144,8 @@ void CMapMAP::readBasics()
         layers << layer;
     }
     // ---------- end file header ----------------------
-
-
-
 }
 
 void CMapMAP::draw(IDrawContext::buffer_t& buf)
 {
-
 }
diff --git a/src/map/CMapMAP.h b/src/map/CMapMAP.h
index cfdc576..eae0ac9 100644
--- a/src/map/CMapMAP.h
+++ b/src/map/CMapMAP.h
@@ -28,81 +28,83 @@ class CMapDraw;
 
 class CMapMAP : public IMap
 {
-    public:
-        CMapMAP(const QString& filename, CMapDraw *parent);
-        virtual ~CMapMAP();
+public:
+    CMapMAP(const QString& filename, CMapDraw *parent);
+    virtual ~CMapMAP();
 
-        void draw(IDrawContext::buffer_t& buf);
+    void draw(IDrawContext::buffer_t& buf);
 
-    private:
-        enum exce_e {eErrOpen, eErrAccess, errFormat, errAbort};
-        struct exce_t
+private:
+    enum exce_e {eErrOpen, eErrAccess, errFormat, errAbort};
+    struct exce_t
+    {
+        exce_t(exce_e err, const QString& msg) : err(err), msg(msg)
         {
-            exce_t(exce_e err, const QString& msg) : err(err), msg(msg){}
-            exce_e err;
-            QString msg;
-        };
-
-        struct layer_t
-        {
-            quint8 baseZoom;
-            quint8 minZoom;
-            quint8 maxZoom;
-            quint64 offsetSubFile;
-            quint64 sizeSubFile;
-        };
-
-        enum header_flags_e
+        }
+        exce_e err;
+        QString msg;
+    };
+
+    struct layer_t
+    {
+        quint8 baseZoom;
+        quint8 minZoom;
+        quint8 maxZoom;
+        quint64 offsetSubFile;
+        quint64 sizeSubFile;
+    };
+
+    enum header_flags_e
+    {
+        eHeaderFlagDebugInfo = 0x80
+        ,eHeaderFlagStartPosition = 0x40
+        ,eHeaderFlagStartZoomLevel = 0x20
+        ,eHeaderFlagLanguage = 0x10
+        ,eHeaderFlagComment = 0x08
+        ,eHeaderFlagCreator = 0x04
+    };
+
+    struct header_t
+    {
+        header_t() : latStart(0), lonStart(0), zoomStart(0)
         {
-             eHeaderFlagDebugInfo = 0x80
-            ,eHeaderFlagStartPosition = 0x40
-            ,eHeaderFlagStartZoomLevel = 0x20
-            ,eHeaderFlagLanguage = 0x10
-            ,eHeaderFlagComment = 0x08
-            ,eHeaderFlagCreator = 0x04
-        };
-
-        struct header_t
-        {
-            header_t() : latStart(0), lonStart(0), zoomStart(0){}
-            char signature[20];
-            quint32 sizeHeader;
-            quint32 version;
-            quint64 sizeFile;
-            quint64 timestamp;
-            qint32  minLat;
-            qint32  minLon;
-            qint32  maxLat;
-            qint32  maxLon;
-            quint16 sizeTile;
-            utf8    projection;
-            quint8  flags;
-            // optional fields
-            qint32  latStart;
-            qint32  lonStart;
-            quint8  zoomStart;
-            utf8    language;
-            utf8    comment;
-            utf8    creator;
-
-            QStringList tagsPOIs;
-            QStringList tagsWays;
-
-        };
-
-        QList<layer_t> layers;
-
-        void readBasics();
-
-        QString filename;
-
-        header_t header;
-
-        /// top left point of the map
-        QPointF ref1;
-        /// bottom right point of the map
-        QPointF ref2;
-
+        }
+        char signature[20];
+        quint32 sizeHeader;
+        quint32 version;
+        quint64 sizeFile;
+        quint64 timestamp;
+        qint32 minLat;
+        qint32 minLon;
+        qint32 maxLat;
+        qint32 maxLon;
+        quint16 sizeTile;
+        utf8 projection;
+        quint8 flags;
+        // optional fields
+        qint32 latStart;
+        qint32 lonStart;
+        quint8 zoomStart;
+        utf8 language;
+        utf8 comment;
+        utf8 creator;
+
+        QStringList tagsPOIs;
+        QStringList tagsWays;
+    };
+
+    QList<layer_t> layers;
+
+    void readBasics();
+
+    QString filename;
+
+    header_t header;
+
+    /// top left point of the map
+    QPointF ref1;
+    /// bottom right point of the map
+    QPointF ref2;
 };
 
 #endif //CMAPMAP_H
diff --git a/src/map/CMapPathSetup.cpp b/src/map/CMapPathSetup.cpp
index dfe3050..14bc01b 100644
--- a/src/map/CMapPathSetup.cpp
+++ b/src/map/CMapPathSetup.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "map/CMapPathSetup.h"
 #include "map/CMapDraw.h"
+#include "map/CMapPathSetup.h"
 
 #include <QtWidgets>
 
@@ -30,7 +30,7 @@ CMapPathSetup::CMapPathSetup(QStringList &paths)
     connect(toolDelete, SIGNAL(clicked()), this, SLOT(slotDelPath()));
     connect(listWidget, SIGNAL(itemSelectionChanged()), this, SLOT(slotItemSelectionChanged()));
 
-    foreach(const QString& path, paths)
+    foreach(const QString &path, paths)
     {
         QListWidgetItem * item = new QListWidgetItem(listWidget);
         item->setText(path);
@@ -41,7 +41,6 @@ CMapPathSetup::CMapPathSetup(QStringList &paths)
 
 CMapPathSetup::~CMapPathSetup()
 {
-
 }
 
 void CMapPathSetup::slotItemSelectionChanged()
diff --git a/src/map/CMapPathSetup.h b/src/map/CMapPathSetup.h
index ec21fcc..cd197c9 100644
--- a/src/map/CMapPathSetup.h
+++ b/src/map/CMapPathSetup.h
@@ -19,27 +19,27 @@
 #ifndef CMAPPATHSETUP_H
 #define CMAPPATHSETUP_H
 
-#include <QDialog>
 #include "ui_IMapPathSetup.h"
+#include <QDialog>
 
 class CMapPathSetup : public QDialog, private Ui::IMapPathSetup
 {
     Q_OBJECT
-    public:
-        CMapPathSetup(QStringList& paths);
-        virtual ~CMapPathSetup();
+public:
+    CMapPathSetup(QStringList& paths);
+    virtual ~CMapPathSetup();
 
-    public slots:
-        void accept();
+public slots:
+    void accept();
 
-    private slots:
-        void slotAddPath();
-        void slotDelPath();
-        void slotItemSelectionChanged();
+private slots:
+    void slotAddPath();
+    void slotDelPath();
+    void slotItemSelectionChanged();
 
 
-    private:
-        QStringList& paths;
+private:
+    QStringList& paths;
 };
 
 #endif //CMAPPATHSETUP_H
diff --git a/src/map/CMapPropSetup.cpp b/src/map/CMapPropSetup.cpp
index 1c7ae56..13bb21f 100644
--- a/src/map/CMapPropSetup.cpp
+++ b/src/map/CMapPropSetup.cpp
@@ -16,9 +16,9 @@
 
 **********************************************************************************************/
 
+#include "map/CMapDraw.h"
 #include "map/CMapPropSetup.h"
 #include "map/IMap.h"
-#include "map/CMapDraw.h"
 #include "units/IUnit.h"
 
 #include <QtWidgets>
@@ -75,12 +75,10 @@ CMapPropSetup::CMapPropSetup(IMap * mapfile, CMapDraw *map)
     {
         frameLayers->hide();
     }
-
 }
 
 CMapPropSetup::~CMapPropSetup()
 {
-
 }
 
 void CMapPropSetup::resizeEvent(QResizeEvent * e)
@@ -124,7 +122,6 @@ void CMapPropSetup::slotPropertiesChanged()
     checkPoints->blockSignals(false);
     spinCacheSize->blockSignals(false);
     spinCacheExpiration->blockSignals(false);
-
 }
 
 void CMapPropSetup::slotScaleChanged(const QPointF& s)
@@ -147,7 +144,6 @@ void CMapPropSetup::slotSetMaxScale(bool checked)
 
 void CMapPropSetup::slotSetCachePath()
 {
-
     QString path = QFileDialog::getExistingDirectory(this, tr("Cache path..."), labelCachePath->text());
     if(path.isEmpty())
     {
@@ -196,7 +192,6 @@ void CMapPropSetup::updateScaleLabel()
         p.setPen(Qt::NoPen);
         p.setBrush(Qt::darkGreen);
         p.drawRect(range);
-
     }
 
     // draw scale indicator
diff --git a/src/map/CMapPropSetup.h b/src/map/CMapPropSetup.h
index fabfe3d..0bd36e3 100644
--- a/src/map/CMapPropSetup.h
+++ b/src/map/CMapPropSetup.h
@@ -26,28 +26,27 @@
 class CMapPropSetup : public IMapProp, private Ui::IMapPropSetup
 {
     Q_OBJECT
-    public:
-        CMapPropSetup(IMap * mapfile, CMapDraw * map);
-        virtual ~CMapPropSetup();
+public:
+    CMapPropSetup(IMap * mapfile, CMapDraw * map);
+    virtual ~CMapPropSetup();
 
-    protected slots:
-        void slotPropertiesChanged();
+protected slots:
+    void slotPropertiesChanged();
 
-    protected:
-        void resizeEvent(QResizeEvent * e);
+protected:
+    void resizeEvent(QResizeEvent * e);
 
-    private slots:
-        void slotScaleChanged(const QPointF& s);
-        void slotSetMinScale(bool checked);
-        void slotSetMaxScale(bool checked);
+private slots:
+    void slotScaleChanged(const QPointF& s);
+    void slotSetMinScale(bool checked);
+    void slotSetMaxScale(bool checked);
 
-        void slotSetCachePath();
+    void slotSetCachePath();
 
-    private:
-        void updateScaleLabel();
-
-        static QPointF scale;
+private:
+    void updateScaleLabel();
 
+    static QPointF scale;
 };
 
 #endif //CMAPPROPSETUP_H
diff --git a/src/map/CMapRMAP.cpp b/src/map/CMapRMAP.cpp
index 2399a56..05c28b8 100644
--- a/src/map/CMapRMAP.cpp
+++ b/src/map/CMapRMAP.cpp
@@ -16,10 +16,10 @@
 
 **********************************************************************************************/
 
-#include "map/CMapRMAP.h"
+#include "canvas/CCanvas.h"
 #include "map/CMapDraw.h"
+#include "map/CMapRMAP.h"
 #include "units/IUnit.h"
-#include "canvas/CCanvas.h"
 
 #include <QtGui>
 #include <QtWidgets>
@@ -116,7 +116,7 @@ CMapRMAP::CMapRMAP(const QString &filename, CMapDraw *parent)
     QString datum;
     QStringList lines = QString(charbuf).split("\r\n");
 
-    foreach(const QString& line, lines)
+    foreach(const QString &line, lines)
     {
 //        qDebug() << line;
         if(line.startsWith("Version="))
@@ -260,26 +260,61 @@ CMapRMAP::CMapRMAP(const QString &filename, CMapDraw *parent)
     }
     else
     {
-
         xref1  =  180 * DEG_TO_RAD;
         yref1  =  -90 * DEG_TO_RAD;
         xref2  = -180 * DEG_TO_RAD;
         yref2  =   90 * DEG_TO_RAD;
     }
 
-    if(c0.u < xref1) xref1 = c0.u;
-    if(c0.u > xref2) xref2 = c0.u;
-    if(c1.u < xref1) xref1 = c1.u;
-    if(c1.u > xref2) xref2 = c1.u;
-    if(c2.u < xref1) xref1 = c2.u;
-    if(c2.u > xref2) xref2 = c2.u;
+    if(c0.u < xref1)
+    {
+        xref1 = c0.u;
+    }
+    if(c0.u > xref2)
+    {
+        xref2 = c0.u;
+    }
+    if(c1.u < xref1)
+    {
+        xref1 = c1.u;
+    }
+    if(c1.u > xref2)
+    {
+        xref2 = c1.u;
+    }
+    if(c2.u < xref1)
+    {
+        xref1 = c2.u;
+    }
+    if(c2.u > xref2)
+    {
+        xref2 = c2.u;
+    }
 
-    if(c0.v > yref1) yref1 = c0.v;
-    if(c0.v < yref2) yref2 = c0.v;
-    if(c1.v > yref1) yref1 = c1.v;
-    if(c1.v < yref2) yref2 = c1.v;
-    if(c2.v > yref1) yref1 = c2.v;
-    if(c2.v < yref2) yref2 = c2.v;
+    if(c0.v > yref1)
+    {
+        yref1 = c0.v;
+    }
+    if(c0.v < yref2)
+    {
+        yref2 = c0.v;
+    }
+    if(c1.v > yref1)
+    {
+        yref1 = c1.v;
+    }
+    if(c1.v < yref2)
+    {
+        yref2 = c1.v;
+    }
+    if(c2.v > yref1)
+    {
+        yref1 = c2.v;
+    }
+    if(c2.v < yref2)
+    {
+        yref2 = c2.v;
+    }
 
     scale.rx() = (xref2 - xref1) / xsize_px;
     scale.ry() = (yref2 - yref1) / ysize_px;
@@ -308,16 +343,14 @@ CMapRMAP::CMapRMAP(const QString &filename, CMapDraw *parent)
 
 bool CMapRMAP::setProjection(const QString& projection, const QString& datum)
 {
-
     QString projstr;
     if(projection.startsWith("0,UTM"))
     {
         QStringList vals    = projection.split(",");
-        int  zone           = vals[2].toInt();
+        int zone           = vals[2].toInt();
         bool isSouth        = vals[3] != "N";
 
         projstr += QString("+proj=utm +zone=%1 %2").arg(zone).arg(isSouth ? "+south" : "");
-
     }
     if(projection.startsWith("1,"))
     {
@@ -360,12 +393,18 @@ bool CMapRMAP::setProjection(const QString& projection, const QString& datum)
 CMapRMAP::level_t& CMapRMAP::findBestLevel(const QPointF& s)
 {
     int i = levels.size() - 1;
-    if(s.x() < levels[0].xscale) return levels[0];
-    if(s.x() > levels[i].xscale) return levels[i];
+    if(s.x() < levels[0].xscale)
+    {
+        return levels[0];
+    }
+    if(s.x() > levels[i].xscale)
+    {
+        return levels[i];
+    }
 
     int j = 0;
     qreal dsx = NOFLOAT;
-    for(;j < levels.size(); j++)
+    for(; j < levels.size(); j++)
     {
         level_t& level = levels[j];
         if(qAbs(level.xscale - s.x()) < dsx)
@@ -381,7 +420,6 @@ CMapRMAP::level_t& CMapRMAP::findBestLevel(const QPointF& s)
 
 void CMapRMAP::draw(IDrawContext::buffer_t& buf)
 {
-
     if(map->needsRedraw())
     {
         return;
@@ -415,15 +453,39 @@ void CMapRMAP::draw(IDrawContext::buffer_t& buf)
     int idxx2 =  ceil((p2.x() - xref1) / (level.xscale * tileSizeX));
     int idxy2 =  ceil((p2.y() - yref1) / (level.yscale * tileSizeY));
 
-    if(idxx1 < 0)               idxx1 = 0;
-    if(idxx1 >= level.xTiles)   idxx1 = level.xTiles;
-    if(idxx2 < 0)               idxx2 = 0;
-    if(idxx2 >= level.xTiles)   idxx2 = level.xTiles;
+    if(idxx1 < 0)
+    {
+        idxx1 = 0;
+    }
+    if(idxx1 >= level.xTiles)
+    {
+        idxx1 = level.xTiles;
+    }
+    if(idxx2 < 0)
+    {
+        idxx2 = 0;
+    }
+    if(idxx2 >= level.xTiles)
+    {
+        idxx2 = level.xTiles;
+    }
 
-    if(idxy1 < 0)               idxy1 = 0;
-    if(idxy1 >= level.yTiles)   idxy1 = level.yTiles;
-    if(idxy2 < 0)               idxy2 = 0;
-    if(idxy2 >= level.yTiles)   idxy2 = level.yTiles;
+    if(idxy1 < 0)
+    {
+        idxy1 = 0;
+    }
+    if(idxy1 >= level.yTiles)
+    {
+        idxy1 = level.yTiles;
+    }
+    if(idxy2 < 0)
+    {
+        idxy2 = 0;
+    }
+    if(idxy2 >= level.yTiles)
+    {
+        idxy2 = level.yTiles;
+    }
 
     // ----- start drawing -----
     QPainter p(&buf.image);
@@ -446,7 +508,6 @@ void CMapRMAP::draw(IDrawContext::buffer_t& buf)
 
         for(int idxx = idxx1; idxx < idxx2; idxx++)
         {
-
             if(map->needsRedraw())
             {
                 break;
@@ -461,7 +522,10 @@ void CMapRMAP::draw(IDrawContext::buffer_t& buf)
             QImage img;
             img.load(&file,"JPG");
 
-            if(img.isNull()) continue;
+            if(img.isNull())
+            {
+                continue;
+            }
 
             qreal imgw = img.width();
             qreal imgh = img.height();
@@ -471,9 +535,9 @@ void CMapRMAP::draw(IDrawContext::buffer_t& buf)
             l[0].rx() = xref1 + idxx * tileSizeX * level.xscale;
             l[0].ry() = yref1 + idxy * tileSizeY * level.yscale;
             l[1].rx() = xref1 + (idxx * tileSizeX + imgw) * level.xscale;
-            l[1].ry() = yref1 +  idxy * tileSizeY * level.yscale ;
-            l[2].rx() = xref1 + (idxx * tileSizeX + imgw) * level.xscale ;
-            l[2].ry() = yref1 + (idxy * tileSizeY + imgh) * level.yscale ;
+            l[1].ry() = yref1 +  idxy * tileSizeY * level.yscale;
+            l[2].rx() = xref1 + (idxx * tileSizeX + imgw) * level.xscale;
+            l[2].ry() = yref1 + (idxy * tileSizeY + imgh) * level.yscale;
             l[3].rx() = xref1 +  idxx * tileSizeX * level.xscale;
             l[3].ry() = yref1 + (idxy * tileSizeY + imgh) * level.yscale;
 
diff --git a/src/map/CMapRMAP.h b/src/map/CMapRMAP.h
index f00f76e..72b3b20 100644
--- a/src/map/CMapRMAP.h
+++ b/src/map/CMapRMAP.h
@@ -34,7 +34,9 @@ public:
 private:
     struct level_t
     {
-        level_t(): offsetLevel(0), width(0), height(0), xTiles(0), yTiles(0), xscale(0), yscale(0){}
+        level_t() : offsetLevel(0), width(0), height(0), xTiles(0), yTiles(0), xscale(0), yscale(0)
+        {
+        }
         quint64 offsetLevel;
         qint32 width;
         qint32 height;
@@ -77,7 +79,6 @@ private:
     qreal yref2;
 
     QPointF scale;
-
 };
 
 #endif // CMAPRMAP_H
diff --git a/src/map/CMapTMS.cpp b/src/map/CMapTMS.cpp
index d1b59a2..fd109b8 100644
--- a/src/map/CMapTMS.cpp
+++ b/src/map/CMapTMS.cpp
@@ -16,15 +16,15 @@
 
 **********************************************************************************************/
 
-#include "map/CMapTMS.h"
 #include "map/CMapDraw.h"
+#include "map/CMapTMS.h"
 #include "map/cache/CDiskCache.h"
 #include "units/IUnit.h"
 
-#include <QtWidgets>
 #include <QtNetwork>
-#include <QtXml>
 #include <QtScript>
+#include <QtWidgets>
+#include <QtXml>
 #include <ogr_spatialref.h>
 #include <proj_api.h>
 
@@ -174,7 +174,7 @@ void CMapTMS::getLayers(QListWidget& list)
     }
 
     int i = 0;
-    foreach(const layer_t& layer, layers)
+    foreach(const layer_t &layer, layers)
     {
         QListWidgetItem * item = new QListWidgetItem(layer.title, &list);
         item->setCheckState(layer.enabled ? Qt::Checked : Qt::Unchecked);
@@ -223,7 +223,7 @@ void CMapTMS::loadConfig(QSettings& cfg)
 
     // enable layers stored in configuration
     enabled = cfg.value("enabledLayers", enabled).toStringList();
-    foreach(const QString& str, enabled)
+    foreach(const QString &str, enabled)
     {
         int idx = str.toInt();
         if(idx < layers.size())
@@ -255,7 +255,7 @@ void CMapTMS::slotQueueChanged()
 
             QNetworkRequest request;
             request.setUrl(url);
-            foreach(const rawHeaderItem_t& item, rawHeaderItems)
+            foreach(const rawHeaderItem_t &item, rawHeaderItems)
             {
                 request.setRawHeader(item.name.toLatin1(), item.value.toLatin1());
             }
@@ -304,7 +304,6 @@ void CMapTMS::slotRequestFinished(QNetworkReply* reply)
         {
             // read image data
             img.loadFromData(reply->readAll());
-
         }
         // always store image to cache, the cache will take care of NULL images
         diskCache->store(url, img);
@@ -355,7 +354,6 @@ QString CMapTMS::createUrl(const layer_t& layer, int x, int y, int z)
 {
     if(layer.strUrl.startsWith("script"))
     {
-
         QString filename = layer.strUrl.mid(9);
         QFile scriptFile(filename);
         if (!scriptFile.open(QIODevice::ReadOnly))
@@ -423,11 +421,17 @@ void CMapTMS::draw(IDrawContext::buffer_t& buf)
     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();
 
-    if(x1 < -180.0*DEG_TO_RAD) x1 = -180*DEG_TO_RAD;
-    if(x2 >  180.0*DEG_TO_RAD) x2 =  180*DEG_TO_RAD;
+    if(x1 < -180.0*DEG_TO_RAD)
+    {
+        x1 = -180*DEG_TO_RAD;
+    }
+    if(x2 >  180.0*DEG_TO_RAD)
+    {
+        x2 =  180*DEG_TO_RAD;
+    }
 
     // draw layers
-    foreach(const layer_t& layer, layers)
+    foreach(const layer_t &layer, layers)
     {
         if(!layer.enabled)
         {
@@ -492,10 +496,8 @@ void CMapTMS::draw(IDrawContext::buffer_t& buf)
                 {
                     urlQueue << url;
                 }
-
-            }                        
+            }
         }
         emit sigQueueChanged();
     }
-
 }
diff --git a/src/map/CMapTMS.h b/src/map/CMapTMS.h
index 0225d4f..6401c76 100644
--- a/src/map/CMapTMS.h
+++ b/src/map/CMapTMS.h
@@ -31,77 +31,77 @@ class QNetworkReply;
 class CMapTMS : public IMap
 {
     Q_OBJECT
-    public:
-        CMapTMS(const QString& filename, CMapDraw *parent);
-        virtual ~CMapTMS();
+public:
+    CMapTMS(const QString& filename, CMapDraw *parent);
+    virtual ~CMapTMS();
 
-        void draw(IDrawContext::buffer_t& buf);
+    void draw(IDrawContext::buffer_t& buf);
 
-        void getLayers(QListWidget& list);
+    void getLayers(QListWidget& list);
 
-        void saveConfig(QSettings& cfg);
+    void saveConfig(QSettings& cfg);
 
-        void loadConfig(QSettings& cfg);
+    void loadConfig(QSettings& cfg);
 
-    signals:
-        void sigQueueChanged();
+signals:
+    void sigQueueChanged();
 
-    protected:
-        void configureCache();
+protected:
+    void configureCache();
 
-    private slots:
-        void slotQueueChanged();
-        void slotRequestFinished(QNetworkReply* reply);
-        void slotLayersChanged(QListWidgetItem * item);
+private slots:
+    void slotQueueChanged();
+    void slotRequestFinished(QNetworkReply* reply);
+    void slotLayersChanged(QListWidgetItem * item);
 
 
-    private:
-        struct layer_t;
-        QString createUrl(const layer_t& layer, int x, int y, int z);
+private:
+    struct layer_t;
+    QString createUrl(const layer_t& layer, int x, int y, int z);
 
-        struct layer_t
+    struct layer_t
+    {
+        layer_t() : enabled(true), minZoomLevel(0), maxZoomLevel(0)
         {
-            layer_t() : enabled(true), minZoomLevel(0), maxZoomLevel(0){}
-            bool enabled;
-            qint32 minZoomLevel;
-            qint32 maxZoomLevel;
-            QString title;
-            QString strUrl;
-            QString script;
-
-        };
-
-        struct rawHeaderItem_t
-        {
-            QString name;
-            QString value;
-        };
-
-        QVector<layer_t> layers;
+        }
+        bool enabled;
+        qint32 minZoomLevel;
+        qint32 maxZoomLevel;
+        QString title;
+        QString strUrl;
+        QString script;
+    };
 
+    struct rawHeaderItem_t
+    {
         QString name;
+        QString value;
+    };
 
-        qint32 minZoomLevel;
+    QVector<layer_t> layers;
 
-        qint32 maxZoomLevel;
+    QString name;
+
+    qint32 minZoomLevel;
 
-        QList<rawHeaderItem_t> rawHeaderItems;
+    qint32 maxZoomLevel;
 
-        /// Mutex to control access to url queue
-        QMutex mutex;
-        /// a queue with all tile urls to request
-        QQueue<QString> urlQueue;
-        /// the tile cache
-        IDiskCache * diskCache;
-        /// access mangager to request tiles
-        QNetworkAccessManager * accessManager;
+    QList<rawHeaderItem_t> rawHeaderItems;
 
-        QList<QString> urlPending;
+    /// Mutex to control access to url queue
+    QMutex mutex;
+    /// a queue with all tile urls to request
+    QQueue<QString> urlQueue;
+    /// the tile cache
+    IDiskCache * diskCache;
+    /// access mangager to request tiles
+    QNetworkAccessManager * accessManager;
 
-        bool lastRequest;
+    QList<QString> urlPending;
 
-        QTime timeLastUpdate;
+    bool lastRequest;
 
+    QTime timeLastUpdate;
 };
 
 #endif //CMAPTMS_H
diff --git a/src/map/CMapVRT.cpp b/src/map/CMapVRT.cpp
index d49abf1..0f42932 100644
--- a/src/map/CMapVRT.cpp
+++ b/src/map/CMapVRT.cpp
@@ -16,14 +16,14 @@
 
 **********************************************************************************************/
 
-#include "map/CMapVRT.h"
+#include "canvas/CCanvas.h"
 #include "map/CMapDraw.h"
+#include "map/CMapVRT.h"
 #include "units/IUnit.h"
-#include "canvas/CCanvas.h"
 
+#include <QtWidgets>
 #include <gdal_priv.h>
 #include <ogr_spatialref.h>
-#include <QtWidgets>
 
 #define TILELIMIT 2500
 #define TILESIZEX 64
@@ -218,17 +218,41 @@ void CMapVRT::draw(IDrawContext::buffer_t& buf)
     top      = pt1.y() < pt2.y() ? pt1.y() : pt2.y();
     bottom   = pt4.y() > pt3.y() ? pt4.y() : pt3.y();
 
-    if(left < 0) left = 0;
-    if(left > xsize_px) left = xsize_px;
+    if(left < 0)
+    {
+        left = 0;
+    }
+    if(left > xsize_px)
+    {
+        left = xsize_px;
+    }
 
-    if(top < 0) top  = 0;
-    if(top > ysize_px) top  = ysize_px;
+    if(top < 0)
+    {
+        top  = 0;
+    }
+    if(top > ysize_px)
+    {
+        top  = ysize_px;
+    }
 
-    if(right > xsize_px) right = xsize_px;
-    if(right < 0) right = 0;
+    if(right > xsize_px)
+    {
+        right = xsize_px;
+    }
+    if(right < 0)
+    {
+        right = 0;
+    }
 
-    if(bottom > ysize_px) bottom = ysize_px;
-    if(bottom < 0) bottom = 0;
+    if(bottom > ysize_px)
+    {
+        bottom = ysize_px;
+    }
+    if(bottom < 0)
+    {
+        bottom = 0;
+    }
 
     qreal imgw = TILESIZEX;
     qreal imgh = TILESIZEY;
@@ -267,7 +291,6 @@ void CMapVRT::draw(IDrawContext::buffer_t& buf)
     // limit number of tiles to keep performance
     if(!isOutOfScale(bufferScale) && (nTiles < TILELIMIT))
     {
-
         for(qreal y = top; y < bottom; y += dy)
         {
             if(map->needsRedraw())
@@ -324,11 +347,11 @@ void CMapVRT::draw(IDrawContext::buffer_t& buf)
                     img.setColorTable(colortable);
 
                     err = pBand->RasterIO(GF_Read
-                        ,x,y
-                        ,dx_used,dy_used
-                        ,img.bits()
-                        ,imgw_used,imgh_used
-                        ,GDT_Byte,0,0);
+                                          ,x,y
+                                          ,dx_used,dy_used
+                                          ,img.bits()
+                                          ,imgw_used,imgh_used
+                                          ,GDT_Byte,0,0);
                 }
                 else
                 {
@@ -345,18 +368,21 @@ void CMapVRT::draw(IDrawContext::buffer_t& buf)
                         pBand = dataset->GetRasterBand(b);
 
                         err = pBand->RasterIO(GF_Read
-                            , x, y
-                            , dx_used, dy_used
-                            , buffer.data()
-                            , imgw_used, imgh_used
-                            , GDT_Byte, 0, 0);
+                                              , x, y
+                                              , dx_used, dy_used
+                                              , buffer.data()
+                                              , imgw_used, imgh_used
+                                              , GDT_Byte, 0, 0);
 
                         if(!err)
                         {
                             int pbandColour = pBand->GetColorInterpretation();
                             unsigned int offset;
 
-                            for (offset = 0; offset < sizeof(testPix) && *(((quint8 *)&testPix) + offset) != pbandColour; offset++);
+                            for (offset = 0; offset < sizeof(testPix) && *(((quint8 *)&testPix) + offset) != pbandColour; offset++)
+                            {
+                                ;
+                            }
                             if(offset < sizeof(testPix))
                             {
                                 quint8 * pTar   = img.bits() + offset;
diff --git a/src/map/CMapVRT.h b/src/map/CMapVRT.h
index 7674a8e..d4187a3 100644
--- a/src/map/CMapVRT.h
+++ b/src/map/CMapVRT.h
@@ -28,47 +28,45 @@ class GDALDataset;
 class CMapVRT : public IMap
 {
     Q_OBJECT
-    public:
-        CMapVRT(const QString& filename, CMapDraw *parent);
-        virtual ~CMapVRT();
+public:
+    CMapVRT(const QString& filename, CMapDraw *parent);
+    virtual ~CMapVRT();
 
-        void draw(IDrawContext::buffer_t& buf);
+    void draw(IDrawContext::buffer_t& buf);
 
 
 
-    private:
-        QString filename;
-        /// instance of GDAL dataset
-        GDALDataset * dataset;
-        /// number of color bands used by the *vrt
-        int rasterBandCount;
-        /// QT representation of the vrt's color table
-        QVector<QRgb> colortable;
+private:
+    QString filename;
+    /// instance of GDAL dataset
+    GDALDataset * dataset;
+    /// number of color bands used by the *vrt
+    int rasterBandCount;
+    /// QT representation of the vrt's color table
+    QVector<QRgb> colortable;
 
-        /// width in number of px
-        quint32 xsize_px;
-        /// height in number of px
-        quint32 ysize_px;
+    /// width in number of px
+    quint32 xsize_px;
+    /// height in number of px
+    quint32 ysize_px;
 
-        /// scale [px/m]
-        qreal xscale;
-        /// scale [px/m]
-        qreal yscale;
+    /// scale [px/m]
+    qreal xscale;
+    /// scale [px/m]
+    qreal yscale;
 
-        qreal xrot;
-        qreal yrot;
+    qreal xrot;
+    qreal yrot;
 
-        QPointF ref1;
-        QPointF ref2;
-        QPointF ref3;
-        QPointF ref4;
-
-        QTransform trFwd;
-        QTransform trInv;
-
-        bool hasOverviews;
+    QPointF ref1;
+    QPointF ref2;
+    QPointF ref3;
+    QPointF ref4;
 
+    QTransform trFwd;
+    QTransform trInv;
 
+    bool hasOverviews;
 };
 
 #endif //CMAPVRT_H
diff --git a/src/map/CMapWMTS.cpp b/src/map/CMapWMTS.cpp
index c632a42..1293e07 100644
--- a/src/map/CMapWMTS.cpp
+++ b/src/map/CMapWMTS.cpp
@@ -16,15 +16,15 @@
 
 **********************************************************************************************/
 
-#include "map/CMapWMTS.h"
 #include "map/CMapDraw.h"
+#include "map/CMapWMTS.h"
 #include "map/cache/CDiskCache.h"
 #include "units/IUnit.h"
 
 
+#include <QtNetwork>
 #include <QtWidgets>
 #include <QtXml>
-#include <QtNetwork>
 
 #include <ogr_spatialref.h>
 #include <proj_api.h>
@@ -218,9 +218,8 @@ CMapWMTS::CMapWMTS(const QString &filename, CMapDraw *parent)
             matrix.tileWidth    = xmlTileMatrix.namedItem("TileWidth").toElement().text().toInt();
             matrix.tileHeight   = xmlTileMatrix.namedItem("TileHeight").toElement().text().toInt();
             matrix.matrixWidth  = xmlTileMatrix.namedItem("MatrixWidth").toElement().text().toInt();
-            matrix.matrixHeight = xmlTileMatrix.namedItem("MatrixHeight").toElement().text().toInt();                        
+            matrix.matrixHeight = xmlTileMatrix.namedItem("MatrixHeight").toElement().text().toInt();
         }
-
     }
     // ----  done reading XML file
 
@@ -251,7 +250,7 @@ void CMapWMTS::getLayers(QListWidget& list)
     }
 
     int i = 0;
-    foreach(const layer_t& layer, layers)
+    foreach(const layer_t &layer, layers)
     {
         QListWidgetItem * item = new QListWidgetItem(layer.title, &list);
         item->setCheckState(layer.enabled ? Qt::Checked : Qt::Unchecked);
@@ -299,7 +298,7 @@ void CMapWMTS::loadConfig(QSettings& cfg)
 
     // enable layers stored in configuration
     enabled = cfg.value("enabledLayers", enabled).toStringList();
-    foreach(const QString& str, enabled)
+    foreach(const QString &str, enabled)
     {
         int idx = str.toInt();
         if(idx < layers.size())
@@ -346,7 +345,7 @@ void CMapWMTS::slotQueueChanged()
     QMutexLocker lock(&mutex);
 
     if(!urlQueue.isEmpty() && urlPending.size() < 6)
-    {        
+    {
         // request up to 6 pending request
         for(int i = 0; i < (6 - urlPending.size()); i++)
         {
@@ -401,7 +400,6 @@ void CMapWMTS::slotRequestFinished(QNetworkReply* reply)
         {
             // read image data
             img.loadFromData(reply->readAll());
-
         }
         // always store image to cache, the cache will take care of NULL images
         diskCache->store(url, img);
@@ -452,14 +450,20 @@ void CMapWMTS::draw(IDrawContext::buffer_t& buf)
     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();
 
-    if(x1 < -180.0*DEG_TO_RAD) x1 = -180*DEG_TO_RAD;
-    if(x2 >  180.0*DEG_TO_RAD) x2 =  180*DEG_TO_RAD;
+    if(x1 < -180.0*DEG_TO_RAD)
+    {
+        x1 = -180*DEG_TO_RAD;
+    }
+    if(x2 >  180.0*DEG_TO_RAD)
+    {
+        x2 =  180*DEG_TO_RAD;
+    }
 
 
     QRectF viewport(QPointF(x1,y1) * RAD_TO_DEG, QPointF(x2,y2) * RAD_TO_DEG);
 
     // draw layers
-    foreach(const layer_t& layer, layers)
+    foreach(const layer_t &layer, layers)
     {
         if(!layer.boundingBox.intersects(viewport) || !layer.enabled)
         {
@@ -484,9 +488,9 @@ void CMapWMTS::draw(IDrawContext::buffer_t& buf)
 
         // search matrix ID of tile level with best matching scale
         QString tileMatrixId;
-        QPointF s1 = (pt2 - pt1)/QPointF(buf.image.width(), buf.image.height());        
+        QPointF s1 = (pt2 - pt1)/QPointF(buf.image.width(), buf.image.height());
         qreal d = NOFLOAT;
-        foreach(const QString& key, tileset.tilematrix.keys())
+        foreach(const QString &key, tileset.tilematrix.keys())
         {
             const tilematrix_t& tilematrix = tileset.tilematrix[key];
             qreal s2 = tilematrix.scale * 0.28e-3;
@@ -538,15 +542,39 @@ void CMapWMTS::draw(IDrawContext::buffer_t& buf)
         qint32 row2 = qFloor((pt2.y() - tilematrix.topLeft.y()) / ( yscale * tilematrix.tileHeight));
 
 
-        if(col1 < minCol) col1 = minCol;
-        if(col1 > maxCol) col1 = maxCol;
-        if(row1 < minRow) row1 = minRow;
-        if(row1 > maxRow) row1 = maxRow;
+        if(col1 < minCol)
+        {
+            col1 = minCol;
+        }
+        if(col1 > maxCol)
+        {
+            col1 = maxCol;
+        }
+        if(row1 < minRow)
+        {
+            row1 = minRow;
+        }
+        if(row1 > maxRow)
+        {
+            row1 = maxRow;
+        }
 
-        if(col2 < minCol) col2 = minCol;
-        if(col2 > maxCol) col2 = maxCol;
-        if(row2 < minRow) row2 = minRow;
-        if(row2 > maxRow) row2 = maxRow;
+        if(col2 < minCol)
+        {
+            col2 = minCol;
+        }
+        if(col2 > maxCol)
+        {
+            col2 = maxCol;
+        }
+        if(row2 < minRow)
+        {
+            row2 = minRow;
+        }
+        if(row2 > maxRow)
+        {
+            row2 = maxRow;
+        }
 
 
         // start to request tiles. draw tiles in cache, queue urls of tile yet to be requested
@@ -554,7 +582,6 @@ void CMapWMTS::draw(IDrawContext::buffer_t& buf)
         {
             for(qint32 col = col1; col <= col2; col++)
             {
-
                 QString url = layer.resourceURL;
                 url = url.replace("{TileMatrix}",tileMatrixId, Qt::CaseInsensitive);
                 url = url.replace("{TileRow}",QString::number(row), Qt::CaseInsensitive);
diff --git a/src/map/CMapWMTS.h b/src/map/CMapWMTS.h
index d0de639..520240c 100644
--- a/src/map/CMapWMTS.h
+++ b/src/map/CMapWMTS.h
@@ -20,8 +20,8 @@
 #define CMAPWMTS_H
 #include "map/IMap.h"
 #include <QMap>
-#include <QQueue>
 #include <QMutex>
+#include <QQueue>
 #include <QTime>
 
 
@@ -32,92 +32,99 @@ class QNetworkReply;
 class QListWidgetItem;
 
 
-class CMapWMTS  : public IMap
+class CMapWMTS : public IMap
 {
     Q_OBJECT
-    public:
-        CMapWMTS(const QString& filename, CMapDraw *parent);
-        virtual ~CMapWMTS();
-
-        void draw(IDrawContext::buffer_t& buf);
-
-        void getLayers(QListWidget& list);
-
-        void saveConfig(QSettings& cfg);
-
-        void loadConfig(QSettings& cfg);
-
-
-    signals:
-        void sigQueueChanged();
-
-    protected:
-        void configureCache();
-
-    private slots:
-        void slotQueueChanged();
-        void slotRequestFinished(QNetworkReply* reply);
-        void slotLayersChanged(QListWidgetItem * item);
-
-    private:
-        struct limit_t
+public:
+    CMapWMTS(const QString& filename, CMapDraw *parent);
+    virtual ~CMapWMTS();
+
+    void draw(IDrawContext::buffer_t& buf);
+
+    void getLayers(QListWidget& list);
+
+    void saveConfig(QSettings& cfg);
+
+    void loadConfig(QSettings& cfg);
+
+
+signals:
+    void sigQueueChanged();
+
+protected:
+    void configureCache();
+
+private slots:
+    void slotQueueChanged();
+    void slotRequestFinished(QNetworkReply* reply);
+    void slotLayersChanged(QListWidgetItem * item);
+
+private:
+    struct limit_t
+    {
+        qint32 minTileRow;
+        qint32 maxTileRow;
+        qint32 minTileCol;
+        qint32 maxTileCol;
+    };
+
+    struct layer_t
+    {
+        bool enabled;
+        QString title;
+        QStringList styles;
+        QString tileMatrixSet;
+        QRectF boundingBox;
+        QString resourceURL;
+        QMap<QString,limit_t> limits;
+    };
+
+    QList<layer_t> layers;
+
+    struct  tilematrix_t
+    {
+        QPointF topLeft;
+        qreal scale;
+        qint32 tileWidth;
+        qint32 tileHeight;
+        qint32 matrixWidth;
+        qint32 matrixHeight;
+    };
+
+    struct tileset_t
+    {
+        tileset_t() : pjsrc(0)
         {
-            qint32 minTileRow;
-            qint32 maxTileRow;
-            qint32 minTileCol;
-            qint32 maxTileCol;
-        };
-
-        struct layer_t
+        }
+        ~tileset_t()
         {
-            bool        enabled;
-            QString     title;
-            QStringList styles;
-            QString     tileMatrixSet;
-            QRectF      boundingBox;
-            QString     resourceURL;
-            QMap<QString,limit_t> limits;
-        };
-
-        QList<layer_t> layers;
-
-        struct  tilematrix_t
-        {
-            QPointF topLeft;
-            qreal scale;
-            qint32  tileWidth;
-            qint32  tileHeight;
-            qint32  matrixWidth;
-            qint32  matrixHeight;
-        };
-
-        struct tileset_t
-        {
-            tileset_t() : pjsrc(0) {}
-            ~tileset_t() { if(pjsrc) pj_free(pjsrc); }
-
-            projPJ  pjsrc;
-            QMap<QString,tilematrix_t> tilematrix;
-        };
+            if(pjsrc)
+            {
+                pj_free(pjsrc);
+            }
+        }
 
-        QMap<QString,tileset_t> tilesets;
+        projPJ pjsrc;
+        QMap<QString,tilematrix_t> tilematrix;
+    };
 
-        QString name;
-        /// Mutex to control access to url queue
-        QMutex mutex;
-        /// a queue with all tile urls to request
-        QQueue<QString> urlQueue;
-        /// the tile cache
-        IDiskCache * diskCache;
-        /// access mangager to request tiles
-        QNetworkAccessManager * accessManager;
+    QMap<QString,tileset_t> tilesets;
 
-        QList<QString> urlPending;
+    QString name;
+    /// Mutex to control access to url queue
+    QMutex mutex;
+    /// a queue with all tile urls to request
+    QQueue<QString> urlQueue;
+    /// the tile cache
+    IDiskCache * diskCache;
+    /// access mangager to request tiles
+    QNetworkAccessManager * accessManager;
 
-        bool lastRequest;
+    QList<QString> urlPending;
 
-        QTime timeLastUpdate;
+    bool lastRequest;
 
+    QTime timeLastUpdate;
 };
 
 #endif //CMAPWMTS_H
diff --git a/src/map/IMap.cpp b/src/map/IMap.cpp
index 1e41f28..de5e6a3 100644
--- a/src/map/IMap.cpp
+++ b/src/map/IMap.cpp
@@ -16,9 +16,9 @@
 
 **********************************************************************************************/
 
-#include "map/IMap.h"
 #include "map/CMapDraw.h"
 #include "map/CMapPropSetup.h"
+#include "map/IMap.h"
 #include "units/IUnit.h"
 
 #include <QtWidgets>
@@ -92,7 +92,6 @@ void IMap::drawTile(QImage& img, QPolygonF& l, QPainter& p)
     p.rotate(a);
     p.drawImage(0,0,img);
     p.restore();
-
 }
 
 bool IMap::findPolylineCloseBy(QPointF& pt1, QPointF& pt2, qint32 threshold, QPolygonF& polyline)
diff --git a/src/map/IMap.h b/src/map/IMap.h
index 698e3ce..4a1466e 100644
--- a/src/map/IMap.h
+++ b/src/map/IMap.h
@@ -31,115 +31,139 @@ class IMapProp;
 
 class IMap : public IDrawObject
 {
-    public:
-        IMap(quint32 features, CMapDraw * parent);
-        virtual ~IMap();
-
-        enum features_e
-        {
-             eFeatVisibility  = 0x00000001
-            ,eFeatVectorItems = 0x00000002
-            ,eFeatTileCache   = 0x00000004
-            ,eFeatLayers      = 0x00000008
-        };
-
-        virtual void draw(IDrawContext::buffer_t& buf) = 0;
-
-        /**
-           @brief Test if map has been loaded successfully
-           @return Return false if map is not loaded
-         */
-        bool activated(){return isActivated;}
-
-        /**
-           @brief Get the map's setup widget.
-
-           As default an instance of CMapPropSetup is used. For other setups you have
-           to override this method.
-
-           @return A pointer to the widget. Use a smart pointer to store as the widget can be destroyed at any time
-         */
-        virtual IMapProp *getSetup();
-
-        /**
-           @brief getInfo
-           @param px
-           @param str
-         */
-        virtual void getInfo(const QPoint& px, QString& str){Q_UNUSED(px); Q_UNUSED(str);}
-        /**
-           @brief getToolTip
-           @param px
-           @param str
-         */
-        virtual void getToolTip(const QPoint& px, QString& str){Q_UNUSED(px); Q_UNUSED(str);}
-
-        /**
-           @brief Return copyright notice if any
-           @return If no copyright notice has been decoded the string will be empty
-        */
-        const QString& getCopyright(){return copyright;}
-
-        bool hasFeatureVisibility(){return flagsFeature & eFeatVisibility;}
-        bool hasFeatureVectorItems(){return flagsFeature & eFeatVectorItems;}
-        bool hasFeatureTileCache(){return flagsFeature & eFeatTileCache;}
-        bool hasFeatureLayers(){return flagsFeature & eFeatLayers;}
-
-        /**
-           @brief Find a matching street polyline
-
-           The polyline must be close enough in terms of pixel to point 1 and 2. "Close enough" is defined by
-           the threshold. The returned poylline uses lon/lat as coordinates.
-
-           @param pt1           first point in [rad]
-           @param pt2           second point in [rad]
-           @param threshold     the "close enough" threshold in [pixel]
-           @param polyline      the resulting polyline, if any, in [rad]
-           @return              Return true if a line has been found.
-        */
-        virtual bool findPolylineCloseBy(QPointF& pt1, QPointF& pt2, qint32 threshold, QPolygonF& polyline);
-
-    protected:
-        void convertRad2M(QPointF &p);
-        void convertM2Rad(QPointF &p);
-
-
-        /**
-           @brief Reproject (translate, rotate, scale) tile befor drwaing it.
-           @param img   the tile as QImage
-           @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);
-
-        /// the drawcontext this map belongs to
-        CMapDraw * map;
-
-        /// source projection of the current map file
-        /**
-            Has to be set by subclass. Destruction has to be
-            handeled by subclass.
-        */
-        projPJ  pjsrc;
-        /// target projection
-        /**
-            Is set by IMap() to WGS84. Will be freed by ~IMap()
-        */
-        projPJ  pjtar;
-
-        /**
-           @brief True if map was loaded successfully
-         */
-        bool isActivated;
-
-        /// the setup dialog. Use getSetup() for access
-        QPointer<IMapProp> setup;
-
-        /// flag field for features defined in features_e
-        quint32 flagsFeature;
-
-
-        QString copyright;
+public:
+    IMap(quint32 features, CMapDraw * parent);
+    virtual ~IMap();
+
+    enum features_e
+    {
+        eFeatVisibility  = 0x00000001
+        ,eFeatVectorItems = 0x00000002
+        ,eFeatTileCache   = 0x00000004
+        ,eFeatLayers      = 0x00000008
+    };
+
+    virtual void draw(IDrawContext::buffer_t& buf) = 0;
+
+    /**
+       @brief Test if map has been loaded successfully
+       @return Return false if map is not loaded
+     */
+    bool activated()
+    {
+        return isActivated;
+    }
+
+    /**
+       @brief Get the map's setup widget.
+
+       As default an instance of CMapPropSetup is used. For other setups you have
+       to override this method.
+
+       @return A pointer to the widget. Use a smart pointer to store as the widget can be destroyed at any time
+     */
+    virtual IMapProp *getSetup();
+
+    /**
+       @brief getInfo
+       @param px
+       @param str
+     */
+    virtual void getInfo(const QPoint& px, QString& str)
+    {
+        Q_UNUSED(px); Q_UNUSED(str);
+    }
+    /**
+       @brief getToolTip
+       @param px
+       @param str
+     */
+    virtual void getToolTip(const QPoint& px, QString& str)
+    {
+        Q_UNUSED(px); Q_UNUSED(str);
+    }
+
+    /**
+       @brief Return copyright notice if any
+       @return If no copyright notice has been decoded the string will be empty
+     */
+    const QString& getCopyright()
+    {
+        return copyright;
+    }
+
+    bool hasFeatureVisibility()
+    {
+        return flagsFeature & eFeatVisibility;
+    }
+    bool hasFeatureVectorItems()
+    {
+        return flagsFeature & eFeatVectorItems;
+    }
+    bool hasFeatureTileCache()
+    {
+        return flagsFeature & eFeatTileCache;
+    }
+    bool hasFeatureLayers()
+    {
+        return flagsFeature & eFeatLayers;
+    }
+
+    /**
+       @brief Find a matching street polyline
+
+       The polyline must be close enough in terms of pixel to point 1 and 2. "Close enough" is defined by
+       the threshold. The returned poylline uses lon/lat as coordinates.
+
+       @param pt1           first point in [rad]
+       @param pt2           second point in [rad]
+       @param threshold     the "close enough" threshold in [pixel]
+       @param polyline      the resulting polyline, if any, in [rad]
+       @return              Return true if a line has been found.
+     */
+    virtual bool findPolylineCloseBy(QPointF& pt1, QPointF& pt2, qint32 threshold, QPolygonF& polyline);
+
+protected:
+    void convertRad2M(QPointF &p);
+    void convertM2Rad(QPointF &p);
+
+
+    /**
+       @brief Reproject (translate, rotate, scale) tile befor drwaing it.
+       @param img   the tile as QImage
+       @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);
+
+    /// the drawcontext this map belongs to
+    CMapDraw * map;
+
+    /// source projection of the current map file
+    /**
+        Has to be set by subclass. Destruction has to be
+        handeled by subclass.
+     */
+    projPJ pjsrc;
+    /// target projection
+    /**
+        Is set by IMap() to WGS84. Will be freed by ~IMap()
+     */
+    projPJ pjtar;
+
+    /**
+       @brief True if map was loaded successfully
+     */
+    bool isActivated;
+
+    /// the setup dialog. Use getSetup() for access
+    QPointer<IMapProp> setup;
+
+    /// flag field for features defined in features_e
+    quint32 flagsFeature;
+
+
+    QString copyright;
 };
 
 
diff --git a/src/map/IMapProp.cpp b/src/map/IMapProp.cpp
index 37fb901..3c21757 100644
--- a/src/map/IMapProp.cpp
+++ b/src/map/IMapProp.cpp
@@ -16,9 +16,9 @@
 
 **********************************************************************************************/
 
-#include "IMapProp.h"
 #include "CMapDraw.h"
 #include "IMap.h"
+#include "IMapProp.h"
 
 IMapProp::IMapProp(IMap *mapfile, CMapDraw *map)
     : mapfile(mapfile)
@@ -29,6 +29,5 @@ IMapProp::IMapProp(IMap *mapfile, CMapDraw *map)
 
 IMapProp::~IMapProp()
 {
-
 }
 
diff --git a/src/map/IMapProp.h b/src/map/IMapProp.h
index 3dc3dc4..0ff6237 100644
--- a/src/map/IMapProp.h
+++ b/src/map/IMapProp.h
@@ -27,18 +27,17 @@ class CMapDraw;
 class IMapProp : public QWidget
 {
     Q_OBJECT
-    public:
-        IMapProp(IMap * mapfile, CMapDraw * map);
-        virtual ~IMapProp();
+public:
+    IMapProp(IMap * mapfile, CMapDraw * map);
+    virtual ~IMapProp();
 
 
-    protected slots:
-        virtual void slotPropertiesChanged()= 0;
-
-    protected:
-        IMap * mapfile;
-        CMapDraw * map;
+protected slots:
+    virtual void slotPropertiesChanged()= 0;
 
+protected:
+    IMap * mapfile;
+    CMapDraw * map;
 };
 
 #endif //IMAPPROP_H
diff --git a/src/map/IMapPropSetup.cpp b/src/map/IMapPropSetup.cpp
index b32bfd3..717776b 100644
--- a/src/map/IMapPropSetup.cpp
+++ b/src/map/IMapPropSetup.cpp
@@ -16,9 +16,9 @@
 
 **********************************************************************************************/
 
-#include "IMapPropSetup.h"
 #include "CMapDraw.h"
 #include "IMap.h"
+#include "IMapPropSetup.h"
 
 IMapPropSetup::IMapPropSetup(IMap *mapfile, CMapDraw *map)
     : mapfile(mapfile)
@@ -29,6 +29,5 @@ IMapPropSetup::IMapPropSetup(IMap *mapfile, CMapDraw *map)
 
 IMapPropSetup::~IMapPropSetup()
 {
-
 }
 
diff --git a/src/map/IMapPropSetup.h b/src/map/IMapPropSetup.h
index f6e542e..67d6da6 100644
--- a/src/map/IMapPropSetup.h
+++ b/src/map/IMapPropSetup.h
@@ -27,18 +27,17 @@ class CMapDraw;
 class IMapPropSetup : public QWidget
 {
     Q_OBJECT
-    public:
-        IMapPropSetup(IMap * mapfile, CMapDraw * map);
-        virtual ~IMapPropSetup();
+public:
+    IMapPropSetup(IMap * mapfile, CMapDraw * map);
+    virtual ~IMapPropSetup();
 
 
-    protected slots:
-        virtual void slotPropertiesChanged()= 0;
-
-    protected:
-        IMap * mapfile;
-        CMapDraw * map;
+protected slots:
+    virtual void slotPropertiesChanged()= 0;
 
+protected:
+    IMap * mapfile;
+    CMapDraw * map;
 };
 
 #endif //IMAPPROPSETUP_H
diff --git a/src/map/cache/CDiskCache.cpp b/src/map/cache/CDiskCache.cpp
index 29bf7ee..c483a98 100644
--- a/src/map/cache/CDiskCache.cpp
+++ b/src/map/cache/CDiskCache.cpp
@@ -21,7 +21,7 @@
 #include <QtWidgets>
 
 CDiskCache::CDiskCache(const QString &path, qint32 size, qint32 days, QObject * parent)
-    : IDiskCache(parent)   
+    : IDiskCache(parent)
     , dir(path)
     , size(size)
     , expiration(days)
@@ -31,7 +31,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)
+    foreach(const QFileInfo &fileinfo, files)
     {
         QString hash    = fileinfo.baseName();
         table[hash]     = fileinfo.fileName();
@@ -45,7 +45,6 @@ CDiskCache::CDiskCache(const QString &path, qint32 size, qint32 days, QObject *
 
 CDiskCache::~CDiskCache()
 {
-
 }
 
 void CDiskCache::store(const QString& key, QImage& img)
@@ -95,7 +94,6 @@ void CDiskCache::restore(const QString& key, QImage& img)
     {
         img = QImage();
     }
-
 }
 
 bool CDiskCache::contains(const QString& key)
@@ -119,7 +117,7 @@ void CDiskCache::slotCleanup()
     qint32 maxSize      = size * 1024 * 1024;
     qint32 tmpSize      = 0;
     // expire old files and calculate cache size
-    foreach(const QFileInfo& fileinfo, files)
+    foreach(const QFileInfo &fileinfo, files)
     {
         if(fileinfo.lastModified().daysTo(now) > days)
         {
@@ -137,7 +135,7 @@ void CDiskCache::slotCleanup()
     if(tmpSize > maxSize)
     {
         // if cache is still too large remove oldest files
-        foreach(const QFileInfo& fileinfo, files)
+        foreach(const QFileInfo &fileinfo, files)
         {
             QString hash = fileinfo.baseName();
             table.remove(hash);
diff --git a/src/map/cache/CDiskCache.h b/src/map/cache/CDiskCache.h
index 1abbe95..2c04249 100644
--- a/src/map/cache/CDiskCache.h
+++ b/src/map/cache/CDiskCache.h
@@ -30,34 +30,32 @@ class QTimer;
 class CDiskCache : public IDiskCache
 {
     Q_OBJECT
-    public:
-        CDiskCache(const QString& path, qint32 size, qint32 days, QObject *parent);
-        virtual ~CDiskCache();
+public:
+    CDiskCache(const QString& path, qint32 size, qint32 days, QObject *parent);
+    virtual ~CDiskCache();
 
-        virtual void store(const QString& key, QImage& img);
-        virtual void restore(const QString& key, QImage& img);
-        virtual bool contains(const QString& key);
+    virtual void store(const QString& key, QImage& img);
+    virtual void restore(const QString& key, QImage& img);
+    virtual bool contains(const QString& key);
 
-    private slots:
-        void slotCleanup();
+private slots:
+    void slotCleanup();
 
-    private:
-        QDir dir;
+private:
+    QDir dir;
 
-        qint32 size;
+    qint32 size;
 
-        qint32 expiration;
+    qint32 expiration;
 
-        /// hash table to cache images als files on disc
-        QHash<QString, QString> table;
-        /// hash table to cache loaded images in memory
-        QHash<QString, QImage>  cache;
-
-        QTimer * timer;
-
-        QImage dummy;
+    /// hash table to cache images als files on disc
+    QHash<QString, QString> table;
+    /// hash table to cache loaded images in memory
+    QHash<QString, QImage>  cache;
 
+    QTimer * timer;
 
+    QImage dummy;
 };
 
 #endif //CDISKCACHE_H
diff --git a/src/map/cache/IDiskCache.cpp b/src/map/cache/IDiskCache.cpp
index a89ce85..e06c907 100644
--- a/src/map/cache/IDiskCache.cpp
+++ b/src/map/cache/IDiskCache.cpp
@@ -21,11 +21,9 @@
 IDiskCache::IDiskCache(QObject *parent)
     : QObject(parent)
 {
-
 }
 
 IDiskCache::~IDiskCache()
 {
-
 }
 
diff --git a/src/map/cache/IDiskCache.h b/src/map/cache/IDiskCache.h
index 1e79638..e722478 100644
--- a/src/map/cache/IDiskCache.h
+++ b/src/map/cache/IDiskCache.h
@@ -19,22 +19,22 @@
 #ifndef IDISKCACHE_H
 #define IDISKCACHE_H
 
-#include <QObject>
 #include <QMutex>
+#include <QObject>
 
 class IDiskCache : public QObject
 {
-    public:
-        IDiskCache(QObject *parent);
-        virtual ~IDiskCache();
+public:
+    IDiskCache(QObject *parent);
+    virtual ~IDiskCache();
 
-        virtual void store(const QString& key, QImage& img) = 0;
-        virtual void restore(const QString& key, QImage& img) = 0;
-        virtual bool contains(const QString& key) = 0;
+    virtual void store(const QString& key, QImage& img) = 0;
+    virtual void restore(const QString& key, QImage& img) = 0;
+    virtual bool contains(const QString& key) = 0;
 
 
-    protected:
-        QMutex mutex;
+protected:
+    QMutex mutex;
 };
 
 #endif //IDISKCACHE_H
diff --git a/src/map/garmin/CGarminPoint.cpp b/src/map/garmin/CGarminPoint.cpp
index ca5ddd9..91e3d0a 100644
--- a/src/map/garmin/CGarminPoint.cpp
+++ b/src/map/garmin/CGarminPoint.cpp
@@ -14,12 +14,12 @@
     You should have received a copy of the GNU General Public License
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-  Garmin and MapSource are registered trademarks or trademarks of Garmin Ltd.
-  or one of its subsidiaries.
+   Garmin and MapSource are registered trademarks or trademarks of Garmin Ltd.
+   or one of its subsidiaries.
 
-  This source is based on John Mechalas documentation "Garmin IMG File Format" found
-  at sourceforge. The missing bits and error were rectified by the source code of
-  Konstantin Galichsky (kg at geopainting.com), http://www.geopainting.com
+   This source is based on John Mechalas documentation "Garmin IMG File Format" found
+   at sourceforge. The missing bits and error were rectified by the source code of
+   Konstantin Galichsky (kg at geopainting.com), http://www.geopainting.com
 
 **********************************************************************************************/
 #include "CGarminPoint.h"
@@ -29,18 +29,16 @@
 #include <QtCore>
 
 CGarminPoint::CGarminPoint()
-: type(0)
-, isLbl6(false)
-, hasSubType(false)
-, lbl_ptr(0xFFFFFFFF)
+    : type(0)
+    , isLbl6(false)
+    , hasSubType(false)
+    , lbl_ptr(0xFFFFFFFF)
 {
-
 }
 
 
 CGarminPoint::~CGarminPoint()
 {
-
 }
 
 
@@ -115,7 +113,6 @@ quint32 CGarminPoint::decode2(qint32 iCenterLon, qint32 iCenterLat, quint32 shif
         lbl_ptr     = gar_ptr_load(uint24_t, pData);
         isLbl6      = lbl_ptr & 0x00400000;
         lbl_ptr    &= 0x003FFFFF;
-
     }
 
     return byte_size;
diff --git a/src/map/garmin/CGarminPoint.h b/src/map/garmin/CGarminPoint.h
index 97b5f38..ebf84b7 100644
--- a/src/map/garmin/CGarminPoint.h
+++ b/src/map/garmin/CGarminPoint.h
@@ -14,41 +14,41 @@
     You should have received a copy of the GNU General Public License
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-  Garmin and MapSource are registered trademarks or trademarks of Garmin Ltd.
-  or one of its subsidiaries.
+   Garmin and MapSource are registered trademarks or trademarks of Garmin Ltd.
+   or one of its subsidiaries.
 
-  This source is based on John Mechalas documentation "Garmin IMG File Format" found
-  at sourceforge. The missing bits and error were rectified by the source code of
-  Konstantin Galichsky (kg at geopainting.com), http://www.geopainting.com
+   This source is based on John Mechalas documentation "Garmin IMG File Format" found
+   at sourceforge. The missing bits and error were rectified by the source code of
+   Konstantin Galichsky (kg at geopainting.com), http://www.geopainting.com
 
 **********************************************************************************************/
 #ifndef CGARMINPOINT_H
 #define CGARMINPOINT_H
 
-#include <QtGlobal>
-#include <QStringList>
 #include <QPointF>
+#include <QStringList>
+#include <QtGlobal>
 
 class CGarminTile;
 
 class CGarminPoint
 {
-    public:
-        CGarminPoint();
-        virtual ~CGarminPoint();
+public:
+    CGarminPoint();
+    virtual ~CGarminPoint();
 
-        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);
+    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);
 
-        quint32 type;
-        bool isLbl6;
-        bool hasSubType;
+    quint32 type;
+    bool isLbl6;
+    bool hasSubType;
 
-        //QString label;
-        QPointF pos;
+    //QString label;
+    QPointF pos;
 
-        QStringList labels;
+    QStringList labels;
 
-        quint32 lbl_ptr;
+    quint32 lbl_ptr;
 };
 #endif                           //CGARMINPOINT_H
diff --git a/src/map/garmin/CGarminPolygon.cpp b/src/map/garmin/CGarminPolygon.cpp
index eba2252..35e7324 100644
--- a/src/map/garmin/CGarminPolygon.cpp
+++ b/src/map/garmin/CGarminPolygon.cpp
@@ -14,17 +14,17 @@
     You should have received a copy of the GNU General Public License
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-  Garmin and MapSource are registered trademarks or trademarks of Garmin Ltd.
-  or one of its subsidiaries.
+   Garmin and MapSource are registered trademarks or trademarks of Garmin Ltd.
+   or one of its subsidiaries.
 
-  This source is based on John Mechalas documentation "Garmin IMG File Format" found
-  at sourceforge. The missing bits and error were rectified by the source code of
-  Konstantin Galichsky (kg at geopainting.com), http://www.geopainting.com
+   This source is based on John Mechalas documentation "Garmin IMG File Format" found
+   at sourceforge. The missing bits and error were rectified by the source code of
+   Konstantin Galichsky (kg at geopainting.com), http://www.geopainting.com
 
 **********************************************************************************************/
-#include "helpers/Platform.h"
 #include "CGarminPolygon.h"
 #include "Garmin.h"
+#include "helpers/Platform.h"
 
 #include <assert.h>
 
@@ -41,14 +41,13 @@ struct sign_info_t
     bool nx;
     bool y_has_sign;
     bool ny;
-
 };
 sign_info_t::sign_info_t()
-: sign_info_bits(2)
-, x_has_sign(true)
-, nx(false)
-, y_has_sign(true)
-, ny(false)
+    : sign_info_bits(2)
+    , x_has_sign(true)
+    , nx(false)
+    , y_has_sign(true)
+    , ny(false)
 {
 }
 
@@ -57,23 +56,21 @@ quint32 CGarminPolygon::cnt = 0;
 qint32 CGarminPolygon::maxVecSize = 0;
 
 CGarminPolygon::CGarminPolygon()
-: type(0)
-, direction(false)
-, lbl_info(0)
-, lbl_in_NET(false)
-, hasV2Label(false)
-, dLng(0)
-, dLat(0)
-, id(0)
+    : type(0)
+    , direction(false)
+    , lbl_info(0)
+    , lbl_in_NET(false)
+    , hasV2Label(false)
+    , dLng(0)
+    , dLat(0)
+    , id(0)
 
 {
-
 }
 
 
 CGarminPolygon::~CGarminPolygon()
 {
-
 }
 
 
@@ -108,7 +105,7 @@ quint32 CGarminPolygon::decode(qint32 iCenterLon, qint32 iCenterLat, quint32 shi
         bit 0..6    type
 
         bit 7       bitstream_len is two bytes (true)
-    */
+     */
     type = *pData++;
 
     two_byte_len = type & 0x80;
@@ -126,7 +123,7 @@ quint32 CGarminPolygon::decode(qint32 iCenterLon, qint32 iCenterLat, quint32 shi
         bit 0..21   off set into LBL section
         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;
@@ -164,7 +161,7 @@ quint32 CGarminPolygon::decode(qint32 iCenterLon, qint32 iCenterLat, quint32 shi
     /* bitstream info
         bit 0..3    base bits longitude
         bit 4..7    base bits latitude
-    */
+     */
     bs_info = *pData++;;
 
     //if(extra_bit) qWarning("extrabit");
@@ -192,7 +189,10 @@ quint32 CGarminPolygon::decode(qint32 iCenterLon, qint32 iCenterLat, quint32 shi
     x1 = ((qint32)dLng << shift) + iCenterLon;
     y1 = ((qint32)dLat << shift) + iCenterLat;
 
-    if(x1 >= 0x800000 && !isNegative) x1 = 0x7fffff;
+    if(x1 >= 0x800000 && !isNegative)
+    {
+        x1 = 0x7fffff;
+    }
 
     coords << QPointF(GARMIN_RAD(x1), GARMIN_RAD(y1));
 
@@ -202,7 +202,10 @@ quint32 CGarminPolygon::decode(qint32 iCenterLon, qint32 iCenterLat, quint32 shi
         x1 += (x << shift);
         y1 += (y << shift);
 
-        if(x1 >= 0x800000 && !isNegative) x1 = 0x7fffff;
+        if(x1 >= 0x800000 && !isNegative)
+        {
+            x1 = 0x7fffff;
+        }
 
         coords << QPointF(GARMIN_RAD(x1), GARMIN_RAD(y1));
     }
@@ -263,7 +266,7 @@ quint32 CGarminPolygon::decode2(qint32 iCenterLon, qint32 iCenterLat, quint32 sh
     }
     else
     {
-        bs_len = ((* pData) >> 1) - 1;
+        bs_len = ((*pData) >> 1) - 1;
         pData       += 1;
         bytes_total += 1;
     }
@@ -289,7 +292,7 @@ quint32 CGarminPolygon::decode2(qint32 iCenterLon, qint32 iCenterLat, quint32 sh
     //     assert((pEnd - pStart) >= bytes_total);
     if(((quint32)(pEnd - pStart)) < bytes_total)
     {
-        return (pEnd - pStart);
+        return pEnd - pStart;
     }
 
     CShiftReg sr(pData,bs_len,bx,by,false,signinfo);
@@ -300,7 +303,10 @@ quint32 CGarminPolygon::decode2(qint32 iCenterLon, qint32 iCenterLat, quint32 sh
     x1 = ((qint32)dLng << shift) + iCenterLon;
     y1 = ((qint32)dLat << shift) + iCenterLat;
 
-    if(x1 >= 0x800000 && !isNegative) x1 = 0x7fffff;
+    if(x1 >= 0x800000 && !isNegative)
+    {
+        x1 = 0x7fffff;
+    }
 
     coords << QPointF(GARMIN_RAD(x1), GARMIN_RAD(y1));
 
@@ -310,7 +316,10 @@ quint32 CGarminPolygon::decode2(qint32 iCenterLon, qint32 iCenterLat, quint32 sh
         x1 += (x << shift);
         y1 += (y << shift);
 
-        if(x1 >= 0x800000 && !isNegative) x1 = 0x7fffff;
+        if(x1 >= 0x800000 && !isNegative)
+        {
+            x1 = 0x7fffff;
+        }
 
 //        xy.u = GARMIN_RAD(x1);
 //        xy.v = GARMIN_RAD(y1);
@@ -414,30 +423,39 @@ int CGarminPolygon::bits_per_coord(quint8 base, bool is_signed)
 {
     int n = 2;
 
-    if ( base <= 9 ) n+= base;
-    else n+= (2*base-9);
+    if ( base <= 9 )
+    {
+        n+= base;
+    }
+    else
+    {
+        n+= (2*base-9);
+    }
 
-    if ( is_signed ) ++n;
+    if ( is_signed )
+    {
+        ++n;
+    }
     return n;
 }
 
 
 CShiftReg::CShiftReg(const quint8* pData, quint32 n, quint32 bx, quint32 by, bool extra_bit, sign_info_t& si)
-: reg(0)
-, pData(pData)
-, bytes(n)
-, xmask(0xFFFFFFFF)
-, ymask(0xFFFFFFFF)
-, xsign(1)
-, ysign(1)
-, xsign2(2)
-, ysign2(2)
-, bits(0)
-, bits_per_x(bx)
-, bits_per_y(by)
-, bits_per_coord(bx + by + (extra_bit ? 1 : 0))
-, sinfo(si)
-, extraBit(extra_bit)
+    : reg(0)
+    , pData(pData)
+    , bytes(n)
+    , xmask(0xFFFFFFFF)
+    , ymask(0xFFFFFFFF)
+    , xsign(1)
+    , ysign(1)
+    , xsign2(2)
+    , ysign2(2)
+    , bits(0)
+    , bits_per_x(bx)
+    , bits_per_y(by)
+    , bits_per_coord(bx + by + (extra_bit ? 1 : 0))
+    , sinfo(si)
+    , extraBit(extra_bit)
 {
     // create bit masks
     xmask = (xmask << (32-bx)) >> (32-bx);
@@ -460,7 +478,10 @@ CShiftReg::CShiftReg(const quint8* pData, quint32 n, quint32 bx, quint32 by, boo
 bool CShiftReg::get(qint32& x, qint32& y)
 {
     x = y = 0;
-    if(bits < (bits_per_coord)) return false;
+    if(bits < (bits_per_coord))
+    {
+        return false;
+    }
 
     // don't know what to do with it -> skip extra bit
     if(extraBit)
@@ -492,7 +513,6 @@ bool CShiftReg::get(qint32& x, qint32& y)
         {
             x = tmp - (xsign2) - x;
         }
-
     }
     else
     {
diff --git a/src/map/garmin/CGarminPolygon.h b/src/map/garmin/CGarminPolygon.h
index 7f8b4c1..f7e3c1d 100644
--- a/src/map/garmin/CGarminPolygon.h
+++ b/src/map/garmin/CGarminPolygon.h
@@ -14,12 +14,12 @@
     You should have received a copy of the GNU General Public License
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-  Garmin and MapSource are registered trademarks or trademarks of Garmin Ltd.
-  or one of its subsidiaries.
+   Garmin and MapSource are registered trademarks or trademarks of Garmin Ltd.
+   or one of its subsidiaries.
 
-  This source is based on John Mechalas documentation "Garmin IMG File Format" found
-  at sourceforge. The missing bits and error were rectified by the source code of
-  Konstantin Galichsky (kg at geopainting.com), http://www.geopainting.com
+   This source is based on John Mechalas documentation "Garmin IMG File Format" found
+   at sourceforge. The missing bits and error were rectified by the source code of
+   Konstantin Galichsky (kg at geopainting.com), http://www.geopainting.com
 
 **********************************************************************************************/
 #ifndef CGARMINPOLYGON_H
@@ -29,93 +29,92 @@
 #ifdef __MINGW32__
 #undef LP
 #endif
-#include <QtCore>
 #include <QPolygonF>
+#include <QtCore>
 
 struct subdiv_desc_t;
 struct sign_info_t;
 
 class CGarminPolygon
 {
-    public:
-        CGarminPolygon();
-        virtual ~CGarminPolygon();
-
-        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);
-
-        quint32 type;
-        /// direction of line (polyline, only)
-        bool direction;
-        /// the label offset
-        quint32 lbl_info;
-        /// true if label offset has to be used in NET section
-        bool lbl_in_NET;
-        ///
-        bool hasV2Label;
-        /// delta longitude from subdivision center
-        qint16 dLng;
-        /// delta latitude from subdivision center
-        qint16 dLat;
-        /** @brief the actual polyline points as [pixel]
-          @note After decode() or decode2() the content will be the same as coords.
-                It is up to the render object to convert it into pixel coordinates
-        */
-        QPolygonF pixel;
-        /// the actual polyline points as longitude / latitude [rad]
-        QPolygonF coords;
-
-        quint32 id;
-
-        QStringList labels;
-
-        static quint32 cnt;
-        static qint32 maxVecSize;
-    private:
-        void bits_per_coord(quint8 base, quint8 bfirst, quint32& bx, quint32& by, sign_info_t& signinfo, bool isVer2);
-        int bits_per_coord(quint8 base, bool is_signed);
-
+public:
+    CGarminPolygon();
+    virtual ~CGarminPolygon();
+
+    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);
+
+    quint32 type;
+    /// direction of line (polyline, only)
+    bool direction;
+    /// the label offset
+    quint32 lbl_info;
+    /// true if label offset has to be used in NET section
+    bool lbl_in_NET;
+    ///
+    bool hasV2Label;
+    /// delta longitude from subdivision center
+    qint16 dLng;
+    /// delta latitude from subdivision center
+    qint16 dLat;
+    /** @brief the actual polyline points as [pixel]
+       @note After decode() or decode2() the content will be the same as coords.
+            It is up to the render object to convert it into pixel coordinates
+     */
+    QPolygonF pixel;
+    /// the actual polyline points as longitude / latitude [rad]
+    QPolygonF coords;
+
+    quint32 id;
+
+    QStringList labels;
+
+    static quint32 cnt;
+    static qint32 maxVecSize;
+private:
+    void bits_per_coord(quint8 base, quint8 bfirst, quint32& bx, quint32& by, sign_info_t& signinfo, bool isVer2);
+    int bits_per_coord(quint8 base, bool is_signed);
 };
 
 class CShiftReg
 {
-    public:
-        CShiftReg(const quint8* pData, quint32 n, quint32 bx, quint32 by, bool extra_bit, sign_info_t& si);
-
-        bool get(qint32& x, qint32& y);
-    private:
-        void fill(quint32 bits);
-        /// the register to work on
-        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;
-        /// used bits of first byte;
-        quint8 bits_of_byte;
-        /// bits per x coord.
-        quint8 bits_per_x;
-        /// bits per y   coord.
-        quint8 bits_per_y;
-        /// bits per coord.
-        quint8 bits_per_coord;
-
-        sign_info_t& sinfo;
-
-        bool extraBit;
+public:
+    CShiftReg(const quint8* pData, quint32 n, quint32 bx, quint32 by, bool extra_bit, sign_info_t& si);
+
+    bool get(qint32& x, qint32& y);
+private:
+    void fill(quint32 bits);
+    /// the register to work on
+    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;
+    /// used bits of first byte;
+    quint8 bits_of_byte;
+    /// bits per x coord.
+    quint8 bits_per_x;
+    /// bits per y   coord.
+    quint8 bits_per_y;
+    /// bits per coord.
+    quint8 bits_per_coord;
+
+    sign_info_t& sinfo;
+
+    bool extraBit;
 };
 #endif                           //CGARMINPOLYGON_H
diff --git a/src/map/garmin/CGarminStrTbl6.cpp b/src/map/garmin/CGarminStrTbl6.cpp
index 3125e59..c8ddd9e 100644
--- a/src/map/garmin/CGarminStrTbl6.cpp
+++ b/src/map/garmin/CGarminStrTbl6.cpp
@@ -45,15 +45,13 @@ const char CGarminStrTbl6::str6tbl3[] =
 };
 
 CGarminStrTbl6::CGarminStrTbl6(const quint16 codepage, const quint8 mask, QObject * parent)
-: IGarminStrTbl(codepage, mask, parent)
+    : IGarminStrTbl(codepage, mask, parent)
 {
-
 }
 
 
 CGarminStrTbl6::~CGarminStrTbl6()
 {
-
 }
 
 
@@ -75,7 +73,10 @@ void CGarminStrTbl6::get(CFileExt& file, quint32 offset, type_e t, QStringList&
 
     offset = calcOffset(file, offset,t);
 
-    if(offset == 0xFFFFFFFF) return;
+    if(offset == 0xFFFFFFFF)
+    {
+        return;
+    }
 
     if(offset > (quint32)sizeLBL1)
     {
@@ -83,8 +84,8 @@ void CGarminStrTbl6::get(CFileExt& file, quint32 offset, type_e t, QStringList&
         return;
     }
 
-    quint8  c1  = 0;
-    quint8  c2  = 0;
+    quint8 c1  = 0;
+    quint8 c2  = 0;
     quint32 idx = 0;
     reg         = 0;
     bits        = 0;
@@ -101,7 +102,10 @@ void CGarminStrTbl6::get(CFileExt& file, quint32 offset, type_e t, QStringList&
     {
         c1 = reg >> 26; reg <<= 6; bits -= 6; fill();
         //terminator
-        if(c1 > 0x2F) break;
+        if(c1 > 0x2F)
+        {
+            break;
+        }
 
         c2 = str6tbl1[c1];
         if(c2 == 0)
@@ -122,9 +126,13 @@ void CGarminStrTbl6::get(CFileExt& file, quint32 offset, type_e t, QStringList&
                 if(strlen(buffer))
                 {
                     if (codepage != 0)
+                    {
                         labels << codec->toUnicode(buffer);
+                    }
                     else
+                    {
                         labels << buffer;
+                    }
                 }
                 idx = 0;
                 buffer[0] = 0;
@@ -140,8 +148,12 @@ void CGarminStrTbl6::get(CFileExt& file, quint32 offset, type_e t, QStringList&
     if(strlen(buffer))
     {
         if (codepage != 0)
+        {
             labels << codec->toUnicode(buffer);
+        }
         else
+        {
             labels << buffer;
+        }
     }
 }
diff --git a/src/map/garmin/CGarminStrTbl6.h b/src/map/garmin/CGarminStrTbl6.h
index f3fab08..0624b46 100644
--- a/src/map/garmin/CGarminStrTbl6.h
+++ b/src/map/garmin/CGarminStrTbl6.h
@@ -22,24 +22,23 @@
 
 class CGarminStrTbl6 : public IGarminStrTbl
 {
-    public:
-        CGarminStrTbl6(const quint16 codepage, const quint8 mask, QObject * parent);
-        virtual ~CGarminStrTbl6();
-
-        void get(CFileExt& file, quint32 offset, type_e t, QStringList& info);
-
-    private:
-        static const char str6tbl1[];
-        static const char str6tbl2[];
-        static const char str6tbl3[];
-
-        void fill();
-        /// temp shift reg buffer
-        quint32 reg;
-        /// bits in buffer
-        quint32 bits;
-        /// pointer to current data;
-        const quint8 * p;
-
+public:
+    CGarminStrTbl6(const quint16 codepage, const quint8 mask, QObject * parent);
+    virtual ~CGarminStrTbl6();
+
+    void get(CFileExt& file, quint32 offset, type_e t, QStringList& info);
+
+private:
+    static const char str6tbl1[];
+    static const char str6tbl2[];
+    static const char str6tbl3[];
+
+    void fill();
+    /// temp shift reg buffer
+    quint32 reg;
+    /// bits in buffer
+    quint32 bits;
+    /// pointer to current data;
+    const quint8 * p;
 };
 #endif                           //CGARMINSTRTBL6_H
diff --git a/src/map/garmin/CGarminStrTbl8.cpp b/src/map/garmin/CGarminStrTbl8.cpp
index bfa6846..f2819cd 100644
--- a/src/map/garmin/CGarminStrTbl8.cpp
+++ b/src/map/garmin/CGarminStrTbl8.cpp
@@ -21,15 +21,13 @@
 #include <QtCore>
 
 CGarminStrTbl8::CGarminStrTbl8(const quint16 codepage, const quint8 mask, QObject * parent)
-: IGarminStrTbl(codepage, mask, parent)
+    : IGarminStrTbl(codepage, mask, parent)
 {
-
 }
 
 
 CGarminStrTbl8::~CGarminStrTbl8()
 {
-
 }
 
 
@@ -38,7 +36,10 @@ void CGarminStrTbl8::get(CFileExt& file, quint32 offset, type_e t, QStringList&
     info.clear();
     offset = calcOffset(file, offset, t);
 
-    if(offset == 0xFFFFFFFF) return;
+    if(offset == 0xFFFFFFFF)
+    {
+        return;
+    }
 
     if(offset > (quint32)sizeLBL1)
     {
@@ -87,8 +88,12 @@ void CGarminStrTbl8::get(CFileExt& file, quint32 offset, type_e t, QStringList&
     if(strlen(buffer))
     {
         if (codepage != 0)
+        {
             info << codec->toUnicode(buffer);
+        }
         else
+        {
             info << buffer;
+        }
     }
 }
diff --git a/src/map/garmin/CGarminStrTbl8.h b/src/map/garmin/CGarminStrTbl8.h
index 709ec44..d00b27b 100644
--- a/src/map/garmin/CGarminStrTbl8.h
+++ b/src/map/garmin/CGarminStrTbl8.h
@@ -23,10 +23,10 @@
 
 class CGarminStrTbl8 : public IGarminStrTbl
 {
-    public:
-        CGarminStrTbl8(const quint16 codepage, const quint8 mask, QObject * parent);
-        virtual ~CGarminStrTbl8();
+public:
+    CGarminStrTbl8(const quint16 codepage, const quint8 mask, QObject * parent);
+    virtual ~CGarminStrTbl8();
 
-        void get(CFileExt& file, quint32 offset, type_e t, QStringList& info);
+    void get(CFileExt& file, quint32 offset, type_e t, QStringList& info);
 };
 #endif                           //CGARMINSTRTBL8_H
diff --git a/src/map/garmin/CGarminStrTblUtf8.cpp b/src/map/garmin/CGarminStrTblUtf8.cpp
index 96f5b4d..55c7b7d 100644
--- a/src/map/garmin/CGarminStrTblUtf8.cpp
+++ b/src/map/garmin/CGarminStrTblUtf8.cpp
@@ -20,15 +20,13 @@
 #include <QtCore>
 
 CGarminStrTblUtf8::CGarminStrTblUtf8(const quint16 codepage, const quint8 mask, QObject * parent)
-: IGarminStrTbl(codepage, mask, parent)
+    : IGarminStrTbl(codepage, mask, parent)
 {
-
 }
 
 
 CGarminStrTblUtf8::~CGarminStrTblUtf8()
 {
-
 }
 
 
@@ -37,7 +35,10 @@ void CGarminStrTblUtf8::get(CFileExt& file, quint32 offset, type_e t, QStringLis
     labels.clear();
     offset = calcOffset(file, offset, t);
 
-    if(offset == 0xFFFFFFFF) return;
+    if(offset == 0xFFFFFFFF)
+    {
+        return;
+    }
 
     if(offset > (quint32)sizeLBL1)
     {
diff --git a/src/map/garmin/CGarminStrTblUtf8.h b/src/map/garmin/CGarminStrTblUtf8.h
index ea789e6..6d5e1dc 100644
--- a/src/map/garmin/CGarminStrTblUtf8.h
+++ b/src/map/garmin/CGarminStrTblUtf8.h
@@ -22,10 +22,10 @@
 
 class CGarminStrTblUtf8 : public IGarminStrTbl
 {
-    public:
-        CGarminStrTblUtf8(const quint16 codepage, const quint8 mask, QObject * parent);
-        virtual ~CGarminStrTblUtf8();
+public:
+    CGarminStrTblUtf8(const quint16 codepage, const quint8 mask, QObject * parent);
+    virtual ~CGarminStrTblUtf8();
 
-        void get(CFileExt& file, quint32 offset, type_e t, QStringList& info);
+    void get(CFileExt& file, quint32 offset, type_e t, QStringList& info);
 };
 #endif                           //CGARMINSTRTBLUTF8_H
diff --git a/src/map/garmin/CGarminTyp.cpp b/src/map/garmin/CGarminTyp.cpp
index c84aa37..b39425f 100644
--- a/src/map/garmin/CGarminTyp.cpp
+++ b/src/map/garmin/CGarminTyp.cpp
@@ -20,8 +20,8 @@
 **********************************************************************************************/
 
 #include "CGarminTyp.h"
-#include <QtCore>
 #include <QMessageBox>
+#include <QtCore>
 
 #include <stdio.h>
 #include <string.h>
@@ -30,13 +30,11 @@
 
 CGarminTyp::CGarminTyp()
 {
-
 }
 
 
 CGarminTyp::~CGarminTyp()
 {
-
 }
 
 bool CGarminTyp::decode(const QByteArray& array, QMap<quint32, polygon_property>& polygons, QMap<quint32, polyline_property>& polylines, QList<quint32>& drawOrder, QMap<quint32, point_property>& points)
@@ -77,7 +75,6 @@ bool CGarminTyp::decode(const QByteArray& array, QMap<quint32, polygon_property>
     }
 
     return true;
-
 }
 
 QTextCodec * CGarminTyp::getCodec(quint16 codepage)
@@ -158,7 +155,7 @@ bool CGarminTyp::parseDrawOrder(QDataStream& in, QList<quint32>& drawOrder)
     in.device()->seek(sectOrder.arrayOffset);
 
     int i,n;
-    quint8  typ;
+    quint8 typ;
     quint32 subtyp;
 
     int count=1;
@@ -195,7 +192,7 @@ bool CGarminTyp::parseDrawOrder(QDataStream& in, QList<quint32>& drawOrder)
                 {
                     drawOrder.push_front(exttyp|n);
 #ifdef DBG
-                qDebug() << QString("Type 0x%1 is priority %2").arg(exttyp|n,0,16).arg(count);
+                    qDebug() << QString("Type 0x%1 is priority %2").arg(exttyp|n,0,16).arg(count);
 #endif
                 }
                 mask = mask << 1;
@@ -207,7 +204,10 @@ bool CGarminTyp::parseDrawOrder(QDataStream& in, QList<quint32>& drawOrder)
 #ifdef DBG
     for(unsigned i = 0; i < drawOrder.size(); ++i)
     {
-        if(i && i%16 == 0) printf(" \n");
+        if(i && i%16 == 0)
+        {
+            printf(" \n");
+        }
         printf("%06X ", drawOrder[i]);
     }
 
@@ -234,7 +234,7 @@ bool CGarminTyp::parsePolygon(QDataStream& in, QMap<quint32, polygon_property>&
     for (int element = 0; element < N; element++)
     {
         quint16 t16_1, t16_2, subtyp;
-        quint8  t8;
+        quint8 t8;
         quint32 typ, offset=0;
         bool hasLocalization = false;
         bool hasTextColor = false;
@@ -285,181 +285,185 @@ bool CGarminTyp::parsePolygon(QDataStream& in, QMap<quint32, polygon_property>&
 
         switch(ctyp)
         {
-            case 0x01:
-            {
+        case 0x01:
+        {
+            // day & night single color
+            in >> b >> g >> r;
+            property.brushDay      = QBrush(qRgb(r,g,b));
+            in >> b >> g >> r;
+            property.brushNight    = QBrush(qRgb(r,g,b));
 
-                // day & night single color
-                in >> b >> g >> r;
-                property.brushDay      = QBrush(qRgb(r,g,b));
-                in >> b >> g >> r;
-                property.brushNight    = QBrush(qRgb(r,g,b));
+            // night and day color for line?
+            in >> b >> g >> r;
+            property.pen           = QPen(QBrush(qRgb(r,g,b)),2);
+            in >> b >> g >> r;
+            property.known         = true;
 
-                // night and day color for line?
-                in >> b >> g >> r;
-                property.pen           = QPen(QBrush(qRgb(r,g,b)),2);
-                in >> b >> g >> r;
-                property.known         = true;
+            break;
+        }
 
-                break;
-            }
+        case 0x06:
+        {
+            // day & night single color
+            in >> b >> g >> r;
+            property.brushDay      = QBrush(qRgb(r,g,b));
+            property.brushNight    = QBrush(qRgb(r,g,b));
+            property.pen           = Qt::NoPen;
+            property.known         = true;
 
-            case 0x06:
-            {
-                // day & night single color
-                in >> b >> g >> r;
-                property.brushDay      = QBrush(qRgb(r,g,b));
-                property.brushNight    = QBrush(qRgb(r,g,b));
-                property.pen           = Qt::NoPen;
-                property.known         = true;
+            break;
+        }
 
-                break;
-            }
-            case 0x07:
-            {
-                // day single color & night single color
-                in >> b >> g >> r;
-                property.brushDay      = QBrush(qRgb(r,g,b));
-                in >> b >> g >> r;
-                property.brushNight    = QBrush(qRgb(r,g,b));
-                property.pen           = Qt::NoPen;
-                property.known         = true;
+        case 0x07:
+        {
+            // day single color & night single color
+            in >> b >> g >> r;
+            property.brushDay      = QBrush(qRgb(r,g,b));
+            in >> b >> g >> r;
+            property.brushNight    = QBrush(qRgb(r,g,b));
+            property.pen           = Qt::NoPen;
+            property.known         = true;
 
-                break;
-            }
-            case 0x08:
-            {
-                // day & night two color
-                xpmDay.setColorCount(2);
+            break;
+        }
 
-                in >> b >> g >> r;
-                xpmDay.setColor(1, qRgb(r,g,b) );
-                in >> b >> g >> r;
-                xpmDay.setColor(0, qRgb(r,g,b) );
-
-                decodeBitmap(in, xpmDay, 32, 32, 1);
-                property.brushDay.setTextureImage(xpmDay);
-                property.brushNight.setTextureImage(xpmDay);
-                property.pen      = Qt::NoPen;
-                property.known    = true;
-                break;
-            }
+        case 0x08:
+        {
+            // day & night two color
+            xpmDay.setColorCount(2);
 
-            case 0x09:
-            {
-                //day two color & night two color
-                xpmDay.setColorCount(2);
-                xpmNight.setColorCount(2);
-                in >> b >> g >> r;
-                xpmDay.setColor(1, qRgb(r,g,b) );
-                in >> b >> g >> r;
-                xpmDay.setColor(0, qRgb(r,g,b) );
-                in >> b >> g >> r;
-                xpmNight.setColor(1, qRgb(r,g,b) );
-                in >> b >> g >> r;
-                xpmNight.setColor(0, qRgb(r,g,b) );
+            in >> b >> g >> r;
+            xpmDay.setColor(1, qRgb(r,g,b) );
+            in >> b >> g >> r;
+            xpmDay.setColor(0, qRgb(r,g,b) );
 
-                decodeBitmap(in, xpmDay, 32, 32, 1);
-                memcpy(xpmNight.bits(), xpmDay.bits(), (32*32));
-                property.brushDay.setTextureImage(xpmDay);
-                property.brushNight.setTextureImage(xpmNight);
-                property.pen      = Qt::NoPen;
-                property.known    = true;
+            decodeBitmap(in, xpmDay, 32, 32, 1);
+            property.brushDay.setTextureImage(xpmDay);
+            property.brushNight.setTextureImage(xpmDay);
+            property.pen      = Qt::NoPen;
+            property.known    = true;
+            break;
+        }
 
-                break;
-            }
-            case 0x0B:
-            {
-                // day one color, transparent & night two color
-                xpmDay.setColorCount(2);
-                xpmNight.setColorCount(2);
-                in >> b >> g >> r;
-                xpmDay.setColor(1, qRgb(r,g,b) );
-                xpmDay.setColor(0, qRgba(255,255,255,0) );
+        case 0x09:
+        {
+            //day two color & night two color
+            xpmDay.setColorCount(2);
+            xpmNight.setColorCount(2);
+            in >> b >> g >> r;
+            xpmDay.setColor(1, qRgb(r,g,b) );
+            in >> b >> g >> r;
+            xpmDay.setColor(0, qRgb(r,g,b) );
+            in >> b >> g >> r;
+            xpmNight.setColor(1, qRgb(r,g,b) );
+            in >> b >> g >> r;
+            xpmNight.setColor(0, qRgb(r,g,b) );
 
-                in >> b >> g >> r;
-                xpmNight.setColor(1, qRgb(r,g,b) );
-                in >> b >> g >> r;
-                xpmNight.setColor(0, qRgb(r,g,b) );
-
-                decodeBitmap(in, xpmDay, 32, 32, 1);
-                memcpy(xpmNight.bits(), xpmDay.bits(), (32*32));
-                property.brushDay.setTextureImage(xpmDay);
-                property.brushNight.setTextureImage(xpmNight);
-                property.pen      = Qt::NoPen;
-                property.known    = true;
-                break;
-            }
+            decodeBitmap(in, xpmDay, 32, 32, 1);
+            memcpy(xpmNight.bits(), xpmDay.bits(), (32*32));
+            property.brushDay.setTextureImage(xpmDay);
+            property.brushNight.setTextureImage(xpmNight);
+            property.pen      = Qt::NoPen;
+            property.known    = true;
 
-            case 0x0D:
-            {
-                // day two color & night one color, transparent
+            break;
+        }
 
-                xpmDay.setColorCount(2);
-                xpmNight.setColorCount(2);
-                in >> b >> g >> r;
-                xpmDay.setColor(1, qRgb(r,g,b) );
-                in >> b >> g >> r;
-                xpmDay.setColor(0, qRgb(r,g,b) );
+        case 0x0B:
+        {
+            // day one color, transparent & night two color
+            xpmDay.setColorCount(2);
+            xpmNight.setColorCount(2);
+            in >> b >> g >> r;
+            xpmDay.setColor(1, qRgb(r,g,b) );
+            xpmDay.setColor(0, qRgba(255,255,255,0) );
 
-                in >> b >> g >> r;
-                xpmNight.setColor(1, qRgb(r,g,b) );
-                xpmNight.setColor(0, qRgba(255,255,255,0) );
+            in >> b >> g >> r;
+            xpmNight.setColor(1, qRgb(r,g,b) );
+            in >> b >> g >> r;
+            xpmNight.setColor(0, qRgb(r,g,b) );
+
+            decodeBitmap(in, xpmDay, 32, 32, 1);
+            memcpy(xpmNight.bits(), xpmDay.bits(), (32*32));
+            property.brushDay.setTextureImage(xpmDay);
+            property.brushNight.setTextureImage(xpmNight);
+            property.pen      = Qt::NoPen;
+            property.known    = true;
+            break;
+        }
 
-                decodeBitmap(in, xpmDay, 32, 32, 1);
-                memcpy(xpmNight.bits(), xpmDay.bits(), (32*32));
-                property.brushDay.setTextureImage(xpmDay);
-                property.brushNight.setTextureImage(xpmNight);
-                property.pen      = Qt::NoPen;
-                property.known    = true;
+        case 0x0D:
+        {
+            // day two color & night one color, transparent
 
-                break;
-            }
-            case 0x0E:
-            {
-                // day & night one color, transparent
-                xpmDay.setColorCount(2);
-                in >> b >> g >> r;
-                xpmDay.setColor(1, qRgb(r,g,b) );
-                xpmDay.setColor(0, qRgba(255,255,255,0) );
+            xpmDay.setColorCount(2);
+            xpmNight.setColorCount(2);
+            in >> b >> g >> r;
+            xpmDay.setColor(1, qRgb(r,g,b) );
+            in >> b >> g >> r;
+            xpmDay.setColor(0, qRgb(r,g,b) );
 
-                decodeBitmap(in, xpmDay, 32, 32, 1);
-                property.brushDay.setTextureImage(xpmDay);
-                property.brushNight.setTextureImage(xpmDay);
-                property.pen      = Qt::NoPen;
-                property.known    = true;
+            in >> b >> g >> r;
+            xpmNight.setColor(1, qRgb(r,g,b) );
+            xpmNight.setColor(0, qRgba(255,255,255,0) );
 
-                break;
-            }
-            case 0x0F:
-            {
-                // day one color, transparent & night one color, transparent
-                xpmDay.setColorCount(2);
-                xpmNight.setColorCount(2);
-                in >> b >> g >> r;
-                xpmDay.setColor(1, qRgb(r,g,b) );
-                xpmDay.setColor(0, qRgba(255,255,255,0) );
+            decodeBitmap(in, xpmDay, 32, 32, 1);
+            memcpy(xpmNight.bits(), xpmDay.bits(), (32*32));
+            property.brushDay.setTextureImage(xpmDay);
+            property.brushNight.setTextureImage(xpmNight);
+            property.pen      = Qt::NoPen;
+            property.known    = true;
 
-                in >> b >> g >> r;
-                xpmNight.setColor(1, qRgb(r,g,b) );
-                xpmNight.setColor(0, qRgba(255,255,255,0) );
+            break;
+        }
 
-                decodeBitmap(in, xpmDay, 32, 32, 1);
-                memcpy(xpmNight.bits(), xpmDay.bits(), (32*32));
-                property.brushDay.setTextureImage(xpmDay);
-                property.brushNight.setTextureImage(xpmNight);
-                property.pen      = Qt::NoPen;
-                property.known    = true;
+        case 0x0E:
+        {
+            // day & night one color, transparent
+            xpmDay.setColorCount(2);
+            in >> b >> g >> r;
+            xpmDay.setColor(1, qRgb(r,g,b) );
+            xpmDay.setColor(0, qRgba(255,255,255,0) );
 
-                break;
-            }
+            decodeBitmap(in, xpmDay, 32, 32, 1);
+            property.brushDay.setTextureImage(xpmDay);
+            property.brushNight.setTextureImage(xpmDay);
+            property.pen      = Qt::NoPen;
+            property.known    = true;
 
-            default:
-                if(!tainted)
-                {
-                    QMessageBox::warning(0, QObject::tr("Warning..."), QObject::tr("This is a typ file with unknown polygon encoding. Please report!"), QMessageBox::Abort, QMessageBox::Abort);
-                    tainted = true;
-                }
-                qDebug() << "Failed polygon:" << typ << subtyp << hex << typ << subtyp << ctyp;
+            break;
+        }
+
+        case 0x0F:
+        {
+            // day one color, transparent & night one color, transparent
+            xpmDay.setColorCount(2);
+            xpmNight.setColorCount(2);
+            in >> b >> g >> r;
+            xpmDay.setColor(1, qRgb(r,g,b) );
+            xpmDay.setColor(0, qRgba(255,255,255,0) );
+
+            in >> b >> g >> r;
+            xpmNight.setColor(1, qRgb(r,g,b) );
+            xpmNight.setColor(0, qRgba(255,255,255,0) );
+
+            decodeBitmap(in, xpmDay, 32, 32, 1);
+            memcpy(xpmNight.bits(), xpmDay.bits(), (32*32));
+            property.brushDay.setTextureImage(xpmDay);
+            property.brushNight.setTextureImage(xpmNight);
+            property.pen      = Qt::NoPen;
+            property.known    = true;
+
+            break;
+        }
+
+        default:
+            if(!tainted)
+            {
+                QMessageBox::warning(0, QObject::tr("Warning..."), QObject::tr("This is a typ file with unknown polygon encoding. Please report!"), QMessageBox::Abort, QMessageBox::Abort);
+                tainted = true;
+            }
+            qDebug() << "Failed polygon:" << typ << subtyp << hex << typ << subtyp << ctyp;
         }
 
         if(hasLocalization)
@@ -486,14 +490,15 @@ bool CGarminTyp::parsePolygon(QDataStream& in, QMap<quint32, polygon_property>&
                 len -= 2*n;
                 while(len > 0)
                 {
-
                     in >> t8;
                     len -= 2*n;
 
-                    if(t8 == 0) break;
+                    if(t8 == 0)
+                    {
+                        break;
+                    }
 
                     str += t8;
-
                 }
                 property.strings[langcode] = codec->toUnicode(str);
 #ifdef DBG
@@ -543,7 +548,7 @@ bool CGarminTyp::parsePolyline(QDataStream& in, QMap<quint32, polyline_property>
     for (int element = 0; element < N; element++)
     {
         quint16 t16_1, t16_2, subtyp;
-        quint8  t8_1, t8_2;
+        quint8 t8_1, t8_2;
         quint32 typ, offset=0;
         bool hasLocalization = false;
         bool hasTextColor = false;
@@ -599,244 +604,249 @@ bool CGarminTyp::parsePolyline(QDataStream& in, QMap<quint32, polyline_property>
 
         switch(ctyp)
         {
-            case 0x00:
+        case 0x00:
+        {
+            if(rows)
             {
-                if(rows)
-                {
-                    QImage xpm(32, rows, QImage::Format_Indexed8 );
-                    in >> b >> g >> r;
-                    xpm.setColor(1, qRgb(r,g,b) );
-                    in >> b >> g >> r;
-                    xpm.setColor(0, qRgb(r,g,b) );
-                    decodeBitmap(in, xpm, 32, rows, 1);
-                    property.imgDay     = xpm;
-                    property.imgNight   = xpm;
-                    property.hasPixmap  = true;
-                    property.known      = true;
-                }
-                else
-                {
-                    quint8 w1, w2;
-                    in >> b >> g >> r;
-                    property.penLineDay     = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-                    property.penLineNight   = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-                    in >> b >> g >> r;
-                    property.penBorderDay   = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-                    property.penBorderNight = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-                    in >> w1 >> w2;
-                    property.penLineDay.setWidth(w1);
-                    property.penLineNight.setWidth(w1);
-                    property.penBorderDay.setWidth(w2);
-                    property.penBorderNight.setWidth(w2);
-                    property.hasBorder  = w2 > w1;
-                    property.hasPixmap  = false;
-                    property.known      = true;
-                }
+                QImage xpm(32, rows, QImage::Format_Indexed8 );
+                in >> b >> g >> r;
+                xpm.setColor(1, qRgb(r,g,b) );
+                in >> b >> g >> r;
+                xpm.setColor(0, qRgb(r,g,b) );
+                decodeBitmap(in, xpm, 32, rows, 1);
+                property.imgDay     = xpm;
+                property.imgNight   = xpm;
+                property.hasPixmap  = true;
+                property.known      = true;
+            }
+            else
+            {
+                quint8 w1, w2;
+                in >> b >> g >> r;
+                property.penLineDay     = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
+                property.penLineNight   = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
+                in >> b >> g >> r;
+                property.penBorderDay   = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
+                property.penBorderNight = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
+                in >> w1 >> w2;
+                property.penLineDay.setWidth(w1);
+                property.penLineNight.setWidth(w1);
+                property.penBorderDay.setWidth(w2);
+                property.penBorderNight.setWidth(w2);
+                property.hasBorder  = w2 > w1;
+                property.hasPixmap  = false;
+                property.known      = true;
+            }
+
+            break;
+        }
 
-                break;
+        case 0x01:
+        {
+            if(rows)
+            {
+                QImage xpm1(32, rows, QImage::Format_Indexed8 );
+                QImage xpm2(32, rows, QImage::Format_Indexed8 );
+                in >> b >> g >> r;
+                xpm1.setColor(1, qRgb(r,g,b) );
+                in >> b >> g >> r;
+                xpm1.setColor(0, qRgb(r,g,b) );
+                in >> b >> g >> r;
+                xpm2.setColor(1, qRgb(r,g,b) );
+                in >> b >> g >> r;
+                xpm2.setColor(0, qRgb(r,g,b) );
+                decodeBitmap(in, xpm1, 32, rows, 1);
+                memcpy(xpm2.bits(), xpm1.bits(), (32*rows));
+                property.imgDay     = xpm1;
+                property.imgNight   = xpm2;
+                property.hasPixmap  = true;
+                property.known      = true;
             }
-            case 0x01:
+            else
             {
-                if(rows)
-                {
-                    QImage xpm1(32, rows, QImage::Format_Indexed8 );
-                    QImage xpm2(32, rows, QImage::Format_Indexed8 );
-                    in >> b >> g >> r;
-                    xpm1.setColor(1, qRgb(r,g,b) );
-                    in >> b >> g >> r;
-                    xpm1.setColor(0, qRgb(r,g,b) );
-                    in >> b >> g >> r;
-                    xpm2.setColor(1, qRgb(r,g,b) );
-                    in >> b >> g >> r;
-                    xpm2.setColor(0, qRgb(r,g,b) );
-                    decodeBitmap(in, xpm1, 32, rows, 1);
-                    memcpy(xpm2.bits(), xpm1.bits(), (32*rows));
-                    property.imgDay     = xpm1;
-                    property.imgNight   = xpm2;
-                    property.hasPixmap  = true;
-                    property.known      = true;
-                }
-                else
-                {
-                    quint8 w1, w2;
-                    in >> b >> g >> r;
-                    property.penLineDay     = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-                    in >> b >> g >> r;
-                    property.penBorderDay   = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-                    in >> b >> g >> r;
-                    property.penLineNight   = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-                    in >> b >> g >> r;
-                    property.penBorderNight = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-                    in >> w1 >> w2;
-                    property.penLineDay.setWidth(w1);
-                    property.penLineNight.setWidth(w1);
-                    property.penBorderDay.setWidth(w2);
-                    property.penBorderNight.setWidth(w2);
-                    property.hasBorder  = w2 > w1;
-                    property.hasPixmap  = false;
-                    property.known      = true;
-                }
-                break;
+                quint8 w1, w2;
+                in >> b >> g >> r;
+                property.penLineDay     = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
+                in >> b >> g >> r;
+                property.penBorderDay   = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
+                in >> b >> g >> r;
+                property.penLineNight   = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
+                in >> b >> g >> r;
+                property.penBorderNight = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
+                in >> w1 >> w2;
+                property.penLineDay.setWidth(w1);
+                property.penLineNight.setWidth(w1);
+                property.penBorderDay.setWidth(w2);
+                property.penBorderNight.setWidth(w2);
+                property.hasBorder  = w2 > w1;
+                property.hasPixmap  = false;
+                property.known      = true;
             }
-            case 0x03:
+            break;
+        }
+
+        case 0x03:
+        {
+            if(rows)
             {
-                if(rows)
-                {
-                    QImage xpm1(32, rows, QImage::Format_Indexed8 );
-                    QImage xpm2(32, rows, QImage::Format_Indexed8 );
-                    in >> b >> g >> r;
-                    xpm1.setColor(1, qRgb(r,g,b) );
-                    xpm1.setColor(0, qRgba(255,255,255,0) );
-                    in >> b >> g >> r;
-                    xpm2.setColor(1, qRgb(r,g,b) );
-                    in >> b >> g >> r;
-                    xpm2.setColor(0, qRgb(r,g,b) );
-                    decodeBitmap(in, xpm1, 32, rows, 1);
-                    memcpy(xpm2.bits(), xpm1.bits(), (32*rows));
-                    property.imgDay     = xpm1;
-                    property.imgNight   = xpm2;
-                    property.hasPixmap  = true;
-                    property.known      = true;
-                }
-                else
-                {
-                    quint8 w1, w2;
-                    in >> b >> g >> r;
-                    property.penLineDay     = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-                    property.penBorderDay   = QPen(Qt::NoPen);
-                    in >> b >> g >> r;
-                    property.penLineNight   = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-                    in >> b >> g >> r;
-                    property.penBorderNight = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-                    in >> w1 >> w2;
-                    property.penLineDay.setWidth(w1);
-                    property.penLineNight.setWidth(w1);
-                    property.penBorderDay.setWidth(w2);
-                    property.penBorderNight.setWidth(w2);
-                    property.hasBorder  = w2 > w1;
-                    property.hasPixmap  = false;
-                    property.known      = true;
-                }
+                QImage xpm1(32, rows, QImage::Format_Indexed8 );
+                QImage xpm2(32, rows, QImage::Format_Indexed8 );
+                in >> b >> g >> r;
+                xpm1.setColor(1, qRgb(r,g,b) );
+                xpm1.setColor(0, qRgba(255,255,255,0) );
+                in >> b >> g >> r;
+                xpm2.setColor(1, qRgb(r,g,b) );
+                in >> b >> g >> r;
+                xpm2.setColor(0, qRgb(r,g,b) );
+                decodeBitmap(in, xpm1, 32, rows, 1);
+                memcpy(xpm2.bits(), xpm1.bits(), (32*rows));
+                property.imgDay     = xpm1;
+                property.imgNight   = xpm2;
+                property.hasPixmap  = true;
+                property.known      = true;
+            }
+            else
+            {
+                quint8 w1, w2;
+                in >> b >> g >> r;
+                property.penLineDay     = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
+                property.penBorderDay   = QPen(Qt::NoPen);
+                in >> b >> g >> r;
+                property.penLineNight   = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
+                in >> b >> g >> r;
+                property.penBorderNight = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
+                in >> w1 >> w2;
+                property.penLineDay.setWidth(w1);
+                property.penLineNight.setWidth(w1);
+                property.penBorderDay.setWidth(w2);
+                property.penBorderNight.setWidth(w2);
+                property.hasBorder  = w2 > w1;
+                property.hasPixmap  = false;
+                property.known      = true;
+            }
+
+            break;
+        }
 
-                break;
+        case 0x05:
+        {
+            if(rows)
+            {
+                QImage xpm1(32, rows, QImage::Format_Indexed8 );
+                QImage xpm2(32, rows, QImage::Format_Indexed8 );
+                in >> b >> g >> r;
+                xpm1.setColor(1, qRgb(r,g,b) );
+                in >> b >> g >> r;
+                xpm1.setColor(0, qRgb(r,g,b) );
+                in >> b >> g >> r;
+                xpm2.setColor(1, qRgb(r,g,b) );
+                xpm2.setColor(0, qRgba(255,255,255,0) );
+                decodeBitmap(in, xpm1, 32, rows, 1);
+                memcpy(xpm2.bits(), xpm1.bits(), (32*rows));
+                property.imgDay     = xpm1;
+                property.imgNight   = xpm2;
+                property.hasPixmap  = true;
+                property.known      = true;
             }
-            case 0x05:
+            else
             {
-                if(rows)
-                {
-                    QImage xpm1(32, rows, QImage::Format_Indexed8 );
-                    QImage xpm2(32, rows, QImage::Format_Indexed8 );
-                    in >> b >> g >> r;
-                    xpm1.setColor(1, qRgb(r,g,b) );
-                    in >> b >> g >> r;
-                    xpm1.setColor(0, qRgb(r,g,b) );
-                    in >> b >> g >> r;
-                    xpm2.setColor(1, qRgb(r,g,b) );
-                    xpm2.setColor(0, qRgba(255,255,255,0) );
-                    decodeBitmap(in, xpm1, 32, rows, 1);
-                    memcpy(xpm2.bits(), xpm1.bits(), (32*rows));
-                    property.imgDay     = xpm1;
-                    property.imgNight   = xpm2;
-                    property.hasPixmap  = true;
-                    property.known      = true;
-                }
-                else
-                {
-                    quint8 w1;
-                    in >> b >> g >> r;
-                    property.penLineDay     = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-                    in >> b >> g >> r;
-                    property.penBorderDay   = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-                    in >> b >> g >> r;
-                    property.penLineNight   = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-                    property.penBorderNight = QPen(Qt::NoPen);
-                    in >> w1;
-                    property.penLineDay.setWidth(w1);
-                    property.penLineNight.setWidth(w1);
-                    property.hasBorder  = false;
-                    property.hasPixmap  = false;
-                    property.known      = true;
-                }
-                break;
+                quint8 w1;
+                in >> b >> g >> r;
+                property.penLineDay     = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
+                in >> b >> g >> r;
+                property.penBorderDay   = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
+                in >> b >> g >> r;
+                property.penLineNight   = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
+                property.penBorderNight = QPen(Qt::NoPen);
+                in >> w1;
+                property.penLineDay.setWidth(w1);
+                property.penLineNight.setWidth(w1);
+                property.hasBorder  = false;
+                property.hasPixmap  = false;
+                property.known      = true;
             }
-            case 0x06:
+            break;
+        }
+
+        case 0x06:
+        {
+            if(rows)
             {
-                if(rows)
-                {
-                    QImage xpm(32, rows, QImage::Format_Indexed8 );
-                    in >> b >> g >> r;
-                    xpm.setColor(1, qRgb(r,g,b) );
-                    xpm.setColor(0, qRgba(255,255,255,0) );
-                    decodeBitmap(in, xpm, 32, rows, 1);
-                    property.imgDay     = xpm;
-                    property.imgNight   = xpm;
-                    property.hasPixmap  = true;
-                    property.known      = true;
-                }
-                else
-                {
-                    quint8 w1;
-                    in >> b >> g >> r;
-                    property.penLineDay     = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-                    property.penBorderDay   = QPen(Qt::NoPen);
-                    property.penLineNight   = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-                    property.penBorderNight = QPen(Qt::NoPen);
-                    in >> w1;
-                    property.penLineDay.setWidth(w1);
-                    property.penLineNight.setWidth(w1);
-                    property.hasBorder  = false;
-                    property.hasPixmap  = false;
-                    property.known      = true;
-                }
-                break;
+                QImage xpm(32, rows, QImage::Format_Indexed8 );
+                in >> b >> g >> r;
+                xpm.setColor(1, qRgb(r,g,b) );
+                xpm.setColor(0, qRgba(255,255,255,0) );
+                decodeBitmap(in, xpm, 32, rows, 1);
+                property.imgDay     = xpm;
+                property.imgNight   = xpm;
+                property.hasPixmap  = true;
+                property.known      = true;
             }
-            case 0x07:
+            else
             {
-                if(rows)
-                {
-                    QImage xpm1(32, rows, QImage::Format_Indexed8 );
-                    QImage xpm2(32, rows, QImage::Format_Indexed8 );
-                    in >> b >> g >> r;
-                    xpm1.setColor(1, qRgb(r,g,b) );
-                    xpm1.setColor(0, qRgba(255,255,255,0) );
-                    in >> b >> g >> r;
-                    xpm2.setColor(1, qRgb(r,g,b) );
-                    xpm2.setColor(0, qRgba(255,255,255,0) );
-                    decodeBitmap(in, xpm1, 32, rows, 1);
-                    memcpy(xpm2.bits(), xpm1.bits(), (32*rows));
-                    property.imgDay     = xpm1;
-                    property.imgNight   = xpm2;
-                    property.hasPixmap  = true;
-                    property.known      = true;
-                }
-                else
-                {
-                    quint8 w1;
-                    in >> b >> g >> r;
-                    property.penLineDay     = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-                    property.penBorderDay   = QPen(Qt::NoPen);
-                    in >> b >> g >> r;
-                    property.penLineNight   = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-                    property.penBorderNight = QPen(Qt::NoPen);
-                    in >> w1;
-                    property.penLineDay.setWidth(w1);
-                    property.penLineNight.setWidth(w1);
-                    property.hasBorder  = false;
-                    property.hasPixmap  = false;
-                    property.known      = true;
-                }
-                break;
+                quint8 w1;
+                in >> b >> g >> r;
+                property.penLineDay     = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
+                property.penBorderDay   = QPen(Qt::NoPen);
+                property.penLineNight   = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
+                property.penBorderNight = QPen(Qt::NoPen);
+                in >> w1;
+                property.penLineDay.setWidth(w1);
+                property.penLineNight.setWidth(w1);
+                property.hasBorder  = false;
+                property.hasPixmap  = false;
+                property.known      = true;
             }
+            break;
+        }
 
-            default:
-                if(!tainted)
-                {
-                    QMessageBox::warning(0, QObject::tr("Warning..."), QObject::tr("This is a typ file with unknown polyline encoding. Please report!"), QMessageBox::Abort, QMessageBox::Abort);
-                    tainted = true;
-                }
+        case 0x07:
+        {
+            if(rows)
+            {
+                QImage xpm1(32, rows, QImage::Format_Indexed8 );
+                QImage xpm2(32, rows, QImage::Format_Indexed8 );
+                in >> b >> g >> r;
+                xpm1.setColor(1, qRgb(r,g,b) );
+                xpm1.setColor(0, qRgba(255,255,255,0) );
+                in >> b >> g >> r;
+                xpm2.setColor(1, qRgb(r,g,b) );
+                xpm2.setColor(0, qRgba(255,255,255,0) );
+                decodeBitmap(in, xpm1, 32, rows, 1);
+                memcpy(xpm2.bits(), xpm1.bits(), (32*rows));
+                property.imgDay     = xpm1;
+                property.imgNight   = xpm2;
+                property.hasPixmap  = true;
+                property.known      = true;
+            }
+            else
+            {
+                quint8 w1;
+                in >> b >> g >> r;
+                property.penLineDay     = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
+                property.penBorderDay   = QPen(Qt::NoPen);
+                in >> b >> g >> r;
+                property.penLineNight   = QPen(QBrush(qRgb(r,g,b)), 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
+                property.penBorderNight = QPen(Qt::NoPen);
+                in >> w1;
+                property.penLineDay.setWidth(w1);
+                property.penLineNight.setWidth(w1);
+                property.hasBorder  = false;
+                property.hasPixmap  = false;
+                property.known      = true;
+            }
+            break;
+        }
 
-                qDebug() << "Failed polyline" <<  hex << ":" << typ <<  ctyp << rows ;
-                continue;
+        default:
+            if(!tainted)
+            {
+                QMessageBox::warning(0, QObject::tr("Warning..."), QObject::tr("This is a typ file with unknown polyline encoding. Please report!"), QMessageBox::Abort, QMessageBox::Abort);
+                tainted = true;
+            }
+
+            qDebug() << "Failed polyline" <<  hex << ":" << typ <<  ctyp << rows;
+            continue;
         }
         property.imgDay     = property.imgDay.convertToFormat(QImage::Format_ARGB32_Premultiplied);
         property.imgNight   = property.imgNight.convertToFormat(QImage::Format_ARGB32_Premultiplied);
@@ -864,14 +874,15 @@ bool CGarminTyp::parsePolyline(QDataStream& in, QMap<quint32, polyline_property>
                 len -= 2*n;
                 while(len > 0)
                 {
-
                     in >> t8_1;
                     len -= 2*n;
 
-                    if(t8_1 == 0) break;
+                    if(t8_1 == 0)
+                    {
+                        break;
+                    }
 
                     str += t8_1;
-
                 }
                 property.strings[langcode] = codec->toUnicode(str);
 #ifdef DBG
@@ -909,84 +920,87 @@ bool CGarminTyp::decodeBppAndBytes(int ncolors, int w, int flags, int& bpp, int&
 {
     switch(flags)
     {
-        case 0x00:
+    case 0x00:
+    {
+        if(ncolors < 3)
         {
-            if(ncolors < 3)
-            {
-                bpp = ncolors;
-            }
-            else if(ncolors == 3)
-            {
-                bpp = 2;
-            }
-            else if(ncolors < 16)
-            {
-                bpp = 4;
-            }
-            else if(ncolors < 256)
-            {
-                bpp = 8;
-            }
-            else
-            {
-                return false;
-            }
-            break;
+            bpp = ncolors;
         }
-        case 0x10:
+        else if(ncolors == 3)
         {
-            if(ncolors == 0)
-            {
-                bpp = 1;
-            }
-            else if(ncolors < 3)
-            {
-                bpp = 2;
-            }
-            else if(ncolors < 15)
-            {
-                bpp = 4;
-            }
-            else if(ncolors < 256)
-            {
-                bpp = 8;
-            }
-            else
-            {
-                return false;
-            }
-            break;
+            bpp = 2;
         }
-        case 0x20:
+        else if(ncolors < 16)
         {
-            if(ncolors == 0)
-            {
-                bpp = 16;
-            }
-            else if(ncolors < 3)
-            {
-                bpp = ncolors;
-            }
-            else if(ncolors < 4)
-            {
-                bpp = 2;
-            }
-            else if(ncolors < 16)
-            {
-                bpp = 4;
-            }
-            else if(ncolors < 256)
-            {
-                bpp = 8;
-            }
-            else
-            {
-                return false;
-            }
-            break;
+            bpp = 4;
         }
-        default:
+        else if(ncolors < 256)
+        {
+            bpp = 8;
+        }
+        else
+        {
             return false;
+        }
+        break;
+    }
+
+    case 0x10:
+    {
+        if(ncolors == 0)
+        {
+            bpp = 1;
+        }
+        else if(ncolors < 3)
+        {
+            bpp = 2;
+        }
+        else if(ncolors < 15)
+        {
+            bpp = 4;
+        }
+        else if(ncolors < 256)
+        {
+            bpp = 8;
+        }
+        else
+        {
+            return false;
+        }
+        break;
+    }
+
+    case 0x20:
+    {
+        if(ncolors == 0)
+        {
+            bpp = 16;
+        }
+        else if(ncolors < 3)
+        {
+            bpp = ncolors;
+        }
+        else if(ncolors < 4)
+        {
+            bpp = 2;
+        }
+        else if(ncolors < 16)
+        {
+            bpp = 4;
+        }
+        else if(ncolors < 256)
+        {
+            bpp = 8;
+        }
+        else
+        {
+            return false;
+        }
+        break;
+    }
+
+    default:
+        return false;
     }
 
     bytes = (w * bpp) / 8;
@@ -1006,14 +1020,13 @@ bool CGarminTyp::decodeColorTable(QDataStream& in, QImage& img, int ncolors, int
     if(hasAlpha)
     {
         int i;
-        quint8  byte;
+        quint8 byte;
         quint32 bits = 0;
         quint32 reg  = 0;
         quint32 mask = 0x000000FF;
 
         for (i = 0; i < ncolors; i++)
         {
-
             while(bits < 28)
             {
                 in >> byte;
@@ -1032,7 +1045,6 @@ bool CGarminTyp::decodeColorTable(QDataStream& in, QImage& img, int ncolors, int
         {
             img.setColor(i,qRgba(0,0,0,0));
         }
-
     }
     else
     {
@@ -1057,7 +1069,10 @@ void CGarminTyp::decodeBitmap(QDataStream &in, QImage &img, int w, int h, int bp
     int x = 0,j = 0;
     quint8 color;
 
-    if(bpp == 0) return;
+    if(bpp == 0)
+    {
+        return;
+    }
 
     for (int y = 0; y < h; y++)
     {
@@ -1065,7 +1080,7 @@ void CGarminTyp::decodeBitmap(QDataStream &in, QImage &img, int w, int h, int bp
         {
             in >> color;
 
-            for ( int i = 0; (i < (8 / bpp)) && (x < w) ; i++ )
+            for ( int i = 0; (i < (8 / bpp)) && (x < w); i++ )
             {
                 int value;
                 if ( i > 0 )
@@ -1076,9 +1091,18 @@ void CGarminTyp::decodeBitmap(QDataStream &in, QImage &img, int w, int h, int bp
                 {
                     value = color;
                 }
-                if ( bpp == 4) value = value & 0xf;
-                if ( bpp == 2) value = value & 0x3;
-                if ( bpp == 1) value = value & 0x1;
+                if ( bpp == 4)
+                {
+                    value = value & 0xf;
+                }
+                if ( bpp == 2)
+                {
+                    value = value & 0x3;
+                }
+                if ( bpp == 1)
+                {
+                    value = value & 0x1;
+                }
                 img.setPixel(x,y,value);
                 //                 qDebug() << QString("value(%4) pixel at (%1,%2) is 0x%3 j is %5").arg(x).arg(y).arg(value,0,16).arg(color).arg(j);
                 x += 1;
@@ -1105,7 +1129,7 @@ bool CGarminTyp::parsePoint(QDataStream& in, QMap<quint32, point_property>& poin
     for (int element=0; element < N; element++)
     {
         quint16 t16_1, t16_2, subtyp;
-        quint8  t8_1;
+        quint8 t8_1;
         quint32 typ, offset=0;
         bool hasLocalization = false;
         bool hasTextColor = false;
@@ -1146,7 +1170,7 @@ bool CGarminTyp::parsePoint(QDataStream& in, QMap<quint32, point_property>& poin
         in.device()->seek( sectPoints.dataOffset + offset );
 
         int bpp = 0, wbytes = 0;
-        quint8  w, h, ncolors, ctyp;
+        quint8 w, h, ncolors, ctyp;
         in >> t8_1 >> w >> h >> ncolors >> ctyp;
 
         hasLocalization = t8_1 & 0x04;
@@ -1194,7 +1218,6 @@ bool CGarminTyp::parsePoint(QDataStream& in, QMap<quint32, point_property>& poin
 
         if(t8_1 == 0x03)
         {
-
             in >> ncolors >> ctyp;
             if(!decodeBppAndBytes(ncolors, w, ctyp, bpp, wbytes))
             {
@@ -1206,7 +1229,6 @@ bool CGarminTyp::parsePoint(QDataStream& in, QMap<quint32, point_property>& poin
             }
             decodeBitmap(in, imgNight, w, h, bpp);
             points[typ].imgNight = imgNight;
-
         }
         else if(t8_1 == 0x02)
         {
@@ -1220,7 +1242,6 @@ bool CGarminTyp::parsePoint(QDataStream& in, QMap<quint32, point_property>& poin
                 continue;
             }
             property.imgNight = imgDay;
-
         }
         else
         {
@@ -1251,14 +1272,15 @@ bool CGarminTyp::parsePoint(QDataStream& in, QMap<quint32, point_property>& poin
                 len -= 2*n;
                 while(len > 0)
                 {
-
                     in >> t8_1;
                     len -= 2*n;
 
-                    if(t8_1 == 0) break;
+                    if(t8_1 == 0)
+                    {
+                        break;
+                    }
 
                     str += t8_1;
-
                 }
                 property.strings[langcode] = codec->toUnicode(str);
 #ifdef DBG
@@ -1287,7 +1309,6 @@ bool CGarminTyp::parsePoint(QDataStream& in, QMap<quint32, point_property>& poin
             qDebug() << "ext. label: type" << property.labelType << "day" << property.colorLabelDay << "night" << property.colorLabelNight;
 #endif
         }
-
     }
 
     return true;
diff --git a/src/map/garmin/CGarminTyp.h b/src/map/garmin/CGarminTyp.h
index 5d9135b..03ce892 100644
--- a/src/map/garmin/CGarminTyp.h
+++ b/src/map/garmin/CGarminTyp.h
@@ -23,206 +23,225 @@
 
 class CGarminTyp
 {
-    public:
-        CGarminTyp();
-        virtual ~CGarminTyp();
+public:
+    CGarminTyp();
+    virtual ~CGarminTyp();
+
+    enum label_type_e
+    {
+        eStandard  = 0
+        ,eNone      = 1
+        ,eSmall     = 2
+        ,eNormal    = 3
+        ,eLarge     = 4
+    };
+
+    struct polyline_property
+    {
+        polyline_property()
+            : type(0)
+            , penLineDay(Qt::magenta,3)
+            , penLineNight(Qt::magenta,3)
+            , hasBorder(false)
+            , penBorderDay(Qt::NoPen)
+            , penBorderNight(Qt::NoPen)
+            , hasPixmap(false)
+            , labelType(eStandard)
+            , colorLabelDay(Qt::black)
+            , colorLabelNight(Qt::black)
+            , known(false)
 
-        enum label_type_e
         {
-            eStandard  = 0
-            ,eNone      = 1
-            ,eSmall     = 2
-            ,eNormal    = 3
-            ,eLarge     = 4
         };
 
-        struct polyline_property
+        polyline_property(quint16 type, const QPen& penLineDay,  const QPen& penLineNight,  const QPen& penBorderDay,  const QPen& penBorderNight)
+            : type(type)
+            , penLineDay(penLineDay)
+            , penLineNight(penLineNight)
+            , hasBorder(true)
+            , penBorderDay(penBorderDay)
+            , penBorderNight(penBorderNight)
+            , hasPixmap(false)
+            , labelType(eStandard)
+            , colorLabelDay(Qt::black)
+            , colorLabelNight(Qt::black)
+            , known(true)
         {
-            polyline_property()
-                : type(0)
-                , penLineDay(Qt::magenta,3)
-                , penLineNight(Qt::magenta,3)
-                , hasBorder(false)
-                , penBorderDay(Qt::NoPen)
-                , penBorderNight(Qt::NoPen)
-                , hasPixmap(false)
-                , labelType(eStandard)
-                , colorLabelDay(Qt::black)
-                , colorLabelNight(Qt::black)
-                , known(false)
-
-                {};
-
-            polyline_property(quint16 type, const QPen& penLineDay,  const QPen& penLineNight,  const QPen& penBorderDay,  const QPen& penBorderNight)
-                : type(type)
-                , penLineDay(penLineDay)
-                , penLineNight(penLineNight)
-                , hasBorder(true)
-                , penBorderDay(penBorderDay)
-                , penBorderNight(penBorderNight)
-                , hasPixmap(false)
-                , labelType(eStandard)
-                , colorLabelDay(Qt::black)
-                , colorLabelNight(Qt::black)
-                , known(true)
-                {}
-
-            polyline_property(quint16 type, const QColor& color, int width, Qt::PenStyle style)
-                : type(type)
-                , penLineDay(QPen(color, width, style))
-                , penLineNight(penLineDay)
-                , hasBorder(false)
-                , penBorderDay(Qt::NoPen)
-                , penBorderNight(Qt::NoPen)
-                , hasPixmap(false)
-                , labelType(eStandard)
-                , colorLabelDay(Qt::black)
-                , colorLabelNight(Qt::black)
-                , known(true)
-                {}
-
-            quint16 type;
-
-            QPen    penLineDay;
-            QPen    penLineNight;
-
-            bool    hasBorder;
-            QPen    penBorderDay;
-            QPen    penBorderNight;
-
-            bool    hasPixmap;
-            QImage  imgDay;
-            QImage  imgNight;
-
-            QMap<int,QString> strings;
-            label_type_e labelType;
-            QColor colorLabelDay;
-            QColor colorLabelNight;
-
-            bool    known;
-        };
-
-        struct polygon_property
+        }
+
+        polyline_property(quint16 type, const QColor& color, int width, Qt::PenStyle style)
+            : type(type)
+            , penLineDay(QPen(color, width, style))
+            , penLineNight(penLineDay)
+            , hasBorder(false)
+            , penBorderDay(Qt::NoPen)
+            , penBorderNight(Qt::NoPen)
+            , hasPixmap(false)
+            , labelType(eStandard)
+            , colorLabelDay(Qt::black)
+            , colorLabelNight(Qt::black)
+            , known(true)
         {
-            polygon_property()
-                : type(0)
-                , pen(Qt::magenta)
-                , brushDay(Qt::magenta, Qt::BDiagPattern)
-                , brushNight(Qt::magenta, Qt::BDiagPattern)
-                , labelType(eStandard)
-                , colorLabelDay(Qt::black)
-                , colorLabelNight(Qt::black)
-                , known(false)
-                {}
-
-            polygon_property(quint16 type, const Qt::PenStyle pensty, const QColor& brushColor, Qt::BrushStyle pattern)
-                : type(type)
-                , pen(pensty)
-                , brushDay(brushColor, pattern)
-                , brushNight(brushColor.darker(150), pattern)
-                , labelType(eStandard)
-                , colorLabelDay(Qt::black)
-                , colorLabelNight(Qt::black)
-                , known(true)
-                {pen.setWidth(1);}
-
-            polygon_property(quint16 type, const QColor& penColor, const QColor& brushColor, Qt::BrushStyle pattern)
-                : type(type)
-                , pen(penColor,1)
-                , brushDay(brushColor, pattern)
-                , brushNight(brushColor.darker(150), pattern)
-                , labelType(eStandard)
-                , colorLabelDay(Qt::black)
-                , colorLabelNight(Qt::black)
-                , known(true)
-                {}
-
-            quint16 type;
-            QPen    pen;
-            QBrush  brushDay;
-            QBrush  brushNight;
-
-            QMap<int,QString> strings;
-            label_type_e labelType;
-            QColor colorLabelDay;
-            QColor colorLabelNight;
-            bool    known;
-        };
-
-        struct point_property
+        }
+
+        quint16 type;
+
+        QPen penLineDay;
+        QPen penLineNight;
+
+        bool hasBorder;
+        QPen penBorderDay;
+        QPen penBorderNight;
+
+        bool hasPixmap;
+        QImage imgDay;
+        QImage imgNight;
+
+        QMap<int,QString> strings;
+        label_type_e labelType;
+        QColor colorLabelDay;
+        QColor colorLabelNight;
+
+        bool known;
+    };
+
+    struct polygon_property
+    {
+        polygon_property()
+            : type(0)
+            , pen(Qt::magenta)
+            , brushDay(Qt::magenta, Qt::BDiagPattern)
+            , brushNight(Qt::magenta, Qt::BDiagPattern)
+            , labelType(eStandard)
+            , colorLabelDay(Qt::black)
+            , colorLabelNight(Qt::black)
+            , known(false)
         {
-            point_property() : labelType(eStandard){}
-            QImage imgDay;
-            QImage imgNight;
-
-            QMap<int,QString> strings;
-            label_type_e labelType;
-            QColor colorLabelDay;
-            QColor colorLabelNight;
-        };
-
-        /// decode typ file
-        /**
-            This pure virtual function has to be implemented in every subclass. It should
-            be the only public function needed. The typ file is read and it's content is
-            stored in the passed map/list objects.
-
-            @param in input data stream
-            @param polygons reference to polygon properties map
-            @param polylines reference to polyline properties map
-            @param drawOrder reference to list of polygon draw orders
-            @param points reference to point properties map
-
-        */
-        bool decode(const QByteArray& array, QMap<quint32, polygon_property>& polygons, QMap<quint32, polyline_property>& polylines, QList<quint32>& drawOrder, QMap<quint32, point_property>& points);
-
-        QSet<quint8> getLanguages(){return languages;}
-
-        quint16 getFid(){return fid;}
-
-        quint16 getPid(){return pid;}
-
-    protected:
-        virtual bool parseHeader(QDataStream& in);
-        virtual bool parseDrawOrder(QDataStream& in, QList<quint32>& drawOrder);
-        virtual bool parsePolygon(QDataStream& in, QMap<quint32, polygon_property>& polygons);
-        virtual bool parsePolyline(QDataStream& in, QMap<quint32, polyline_property>& polylines);
-        virtual bool parsePoint(QDataStream& in, QMap<quint32, point_property>& points);
-
-        QTextCodec * getCodec(quint16 codepage);
-        void decodeBitmap(QDataStream &in, QImage &img, int w, int h, int bpp);
-        bool decodeBppAndBytes(int ncolors, int w, int flags, int& bpp, int& bytes);
-        bool decodeColorTable(QDataStream& in, QImage& img, int ncolors,  int maxcolor, bool hasAlpha);
-
-
-        struct typ_section_t
+        }
+
+        polygon_property(quint16 type, const Qt::PenStyle pensty, const QColor& brushColor, Qt::BrushStyle pattern)
+            : type(type)
+            , pen(pensty)
+            , brushDay(brushColor, pattern)
+            , brushNight(brushColor.darker(150), pattern)
+            , labelType(eStandard)
+            , colorLabelDay(Qt::black)
+            , colorLabelNight(Qt::black)
+            , known(true)
         {
-            typ_section_t() : dataOffset(0), dataLength(0), arrayOffset(0), arrayModulo(0), arraySize(0){}
-            quint32  dataOffset;
-            quint32  dataLength;
-            quint32  arrayOffset;
-            quint16  arrayModulo;
-            quint32  arraySize;
-        } ;
-
-        quint16 version;
-        quint16 codepage;
-        quint16 year;
-        quint8  month;
-        quint8  day;
-        quint8  hour;
-        quint8  minutes;
-        quint8  seconds;
-
-        quint16 fid;
-        quint16 pid;
-
-        typ_section_t sectPoints;
-        typ_section_t sectPolylines;
-        typ_section_t sectPolygons;
-        typ_section_t sectOrder;
-
-        QSet<quint8> languages;
-
+            pen.setWidth(1);
+        }
+
+        polygon_property(quint16 type, const QColor& penColor, const QColor& brushColor, Qt::BrushStyle pattern)
+            : type(type)
+            , pen(penColor,1)
+            , brushDay(brushColor, pattern)
+            , brushNight(brushColor.darker(150), pattern)
+            , labelType(eStandard)
+            , colorLabelDay(Qt::black)
+            , colorLabelNight(Qt::black)
+            , known(true)
+        {
+        }
+
+        quint16 type;
+        QPen pen;
+        QBrush brushDay;
+        QBrush brushNight;
+
+        QMap<int,QString> strings;
+        label_type_e labelType;
+        QColor colorLabelDay;
+        QColor colorLabelNight;
+        bool known;
+    };
+
+    struct point_property
+    {
+        point_property() : labelType(eStandard)
+        {
+        }
+        QImage imgDay;
+        QImage imgNight;
+
+        QMap<int,QString> strings;
+        label_type_e labelType;
+        QColor colorLabelDay;
+        QColor colorLabelNight;
+    };
+
+    /// decode typ file
+    /**
+        This pure virtual function has to be implemented in every subclass. It should
+        be the only public function needed. The typ file is read and it's content is
+        stored in the passed map/list objects.
+
+        @param in input data stream
+        @param polygons reference to polygon properties map
+        @param polylines reference to polyline properties map
+        @param drawOrder reference to list of polygon draw orders
+        @param points reference to point properties map
+
+     */
+    bool decode(const QByteArray& array, QMap<quint32, polygon_property>& polygons, QMap<quint32, polyline_property>& polylines, QList<quint32>& drawOrder, QMap<quint32, point_property>& points);
+
+    QSet<quint8> getLanguages()
+    {
+        return languages;
+    }
+
+    quint16 getFid()
+    {
+        return fid;
+    }
+
+    quint16 getPid()
+    {
+        return pid;
+    }
+
+protected:
+    virtual bool parseHeader(QDataStream& in);
+    virtual bool parseDrawOrder(QDataStream& in, QList<quint32>& drawOrder);
+    virtual bool parsePolygon(QDataStream& in, QMap<quint32, polygon_property>& polygons);
+    virtual bool parsePolyline(QDataStream& in, QMap<quint32, polyline_property>& polylines);
+    virtual bool parsePoint(QDataStream& in, QMap<quint32, point_property>& points);
+
+    QTextCodec * getCodec(quint16 codepage);
+    void decodeBitmap(QDataStream &in, QImage &img, int w, int h, int bpp);
+    bool decodeBppAndBytes(int ncolors, int w, int flags, int& bpp, int& bytes);
+    bool decodeColorTable(QDataStream& in, QImage& img, int ncolors,  int maxcolor, bool hasAlpha);
+
+
+    struct typ_section_t
+    {
+        typ_section_t() : dataOffset(0), dataLength(0), arrayOffset(0), arrayModulo(0), arraySize(0)
+        {
+        }
+        quint32 dataOffset;
+        quint32 dataLength;
+        quint32 arrayOffset;
+        quint16 arrayModulo;
+        quint32 arraySize;
+    };
+
+    quint16 version;
+    quint16 codepage;
+    quint16 year;
+    quint8 month;
+    quint8 day;
+    quint8 hour;
+    quint8 minutes;
+    quint8 seconds;
+
+    quint16 fid;
+    quint16 pid;
+
+    typ_section_t sectPoints;
+    typ_section_t sectPolylines;
+    typ_section_t sectPolygons;
+    typ_section_t sectOrder;
+
+    QSet<quint8> languages;
 };
 #endif                           //CGARMINTYP_H
diff --git a/src/map/garmin/IGarminStrTbl.cpp b/src/map/garmin/IGarminStrTbl.cpp
index d28e59f..9324c11 100644
--- a/src/map/garmin/IGarminStrTbl.cpp
+++ b/src/map/garmin/IGarminStrTbl.cpp
@@ -16,26 +16,25 @@
 
 **********************************************************************************************/
 
-#include "helpers/Platform.h"
 #include "IGarminStrTbl.h"
 #include "helpers/CFileExt.h"
+#include "helpers/Platform.h"
 
 #include <QtCore>
 
 IGarminStrTbl::IGarminStrTbl(const quint16 codepage, const quint8 mask, QObject * parent)
-: QObject(parent)
-, offsetLBL1(0)
-, offsetLBL6(0)
-, offsetNET1(0)
-, addrshift1(0)
-, addrshift2(0)
-, codepage(codepage)
-, codec(0)
-, mask(mask)
+    : QObject(parent)
+    , offsetLBL1(0)
+    , offsetLBL6(0)
+    , offsetNET1(0)
+    , addrshift1(0)
+    , addrshift2(0)
+    , codepage(codepage)
+    , codec(0)
+    , mask(mask)
 {
     if(codepage != 0)
     {
-
         if(1250 <= codepage && codepage <= 1258)
         {
             char strcp[64];
@@ -72,13 +71,11 @@ IGarminStrTbl::IGarminStrTbl(const quint16 codepage, const quint8 mask, QObject
     mask64   = mask32;
     mask64 <<= 32;
     mask64  |= mask32;
-
 }
 
 
 IGarminStrTbl::~IGarminStrTbl()
 {
-
 }
 
 
diff --git a/src/map/garmin/IGarminStrTbl.h b/src/map/garmin/IGarminStrTbl.h
index 25cc8f8..d82ec61 100644
--- a/src/map/garmin/IGarminStrTbl.h
+++ b/src/map/garmin/IGarminStrTbl.h
@@ -27,38 +27,47 @@ class QStringList;
 
 class IGarminStrTbl : public QObject
 {
-    public:
-        IGarminStrTbl(const quint16 codepage, const quint8 mask, QObject * parent);
-        virtual ~IGarminStrTbl();
+public:
+    IGarminStrTbl(const quint16 codepage, const quint8 mask, QObject * parent);
+    virtual ~IGarminStrTbl();
 
-        enum type_e {norm,poi,net};
+    enum type_e {norm,poi,net};
 
-        void registerLBL1(const quint32 offset, const quint32 size, const quint8 shift){offsetLBL1 = offset; sizeLBL1 = size; addrshift1 = shift;}
-        void registerLBL6(const quint32 offset, const quint32 size){offsetLBL6 = offset; sizeLBL6 = size;}
-        void registerNET1(const quint32 offset, const quint32 size, const quint8 shift){offsetNET1 = offset; sizeNET1 = size; addrshift2 = shift;}
+    void registerLBL1(const quint32 offset, const quint32 size, const quint8 shift)
+    {
+        offsetLBL1 = offset; sizeLBL1 = size; addrshift1 = shift;
+    }
+    void registerLBL6(const quint32 offset, const quint32 size)
+    {
+        offsetLBL6 = offset; sizeLBL6 = size;
+    }
+    void registerNET1(const quint32 offset, const quint32 size, const quint8 shift)
+    {
+        offsetNET1 = offset; sizeNET1 = size; addrshift2 = shift;
+    }
 
-        virtual void get(CFileExt& file, quint32 offset, type_e t, QStringList& info) = 0;
-    protected:
-        void readFile(CFileExt &file, quint32 offset, quint32 size, QByteArray& data);
-        quint32 calcOffset(CFileExt& file, const quint32 offset, type_e t);
+    virtual void get(CFileExt& file, quint32 offset, type_e t, QStringList& info) = 0;
+protected:
+    void readFile(CFileExt &file, quint32 offset, quint32 size, QByteArray& data);
+    quint32 calcOffset(CFileExt& file, const quint32 offset, type_e t);
 
-        quint32 offsetLBL1;
-        quint32 sizeLBL1;
-        quint32 offsetLBL6;
-        quint32 sizeLBL6;
-        quint32 offsetNET1;
-        quint32 sizeNET1;
+    quint32 offsetLBL1;
+    quint32 sizeLBL1;
+    quint32 offsetLBL6;
+    quint32 sizeLBL6;
+    quint32 offsetNET1;
+    quint32 sizeNET1;
 
-        quint8 addrshift1;
-        quint8 addrshift2;
+    quint8 addrshift1;
+    quint8 addrshift2;
 
-        // conversion of strings
-        quint16 codepage;
-        QTextCodec * codec;
-        const quint8 mask;
-        quint32 mask32;
-        quint64 mask64;
+    // conversion of strings
+    quint16 codepage;
+    QTextCodec * codec;
+    const quint8 mask;
+    quint32 mask32;
+    quint64 mask64;
 
-        char buffer[1024];
+    char buffer[1024];
 };
 #endif                           //IGARMINSTRTBL_H
diff --git a/src/map/mapsforge/types.h b/src/map/mapsforge/types.h
index fe33314..1588634 100644
--- a/src/map/mapsforge/types.h
+++ b/src/map/mapsforge/types.h
@@ -23,21 +23,34 @@
 
 struct uintX
 {
-    uintX():val(0){}
-    operator quint64(){return val;}
+    uintX() : val(0)
+    {
+    }
+    operator quint64()
+    {
+        return val;
+    }
     quint64 val;
 };
 
 struct intX
 {
-    intX():val(0){}
-    operator qint64(){return val;}
+    intX() : val(0)
+    {
+    }
+    operator qint64()
+    {
+        return val;
+    }
     qint64 val;
 };
 
 struct utf8
 {
-    operator QString(){return val;}
+    operator QString()
+    {
+        return val;
+    }
     QString val;
 };
 
diff --git a/src/mouse/CMouseEditArea.cpp b/src/mouse/CMouseEditArea.cpp
index 2b34f23..d5f9203 100644
--- a/src/mouse/CMouseEditArea.cpp
+++ b/src/mouse/CMouseEditArea.cpp
@@ -16,10 +16,10 @@
 
 **********************************************************************************************/
 
-#include "mouse/CMouseEditArea.h"
+#include "canvas/CCanvas.h"
 #include "gis/CGisWidget.h"
 #include "gis/ovl/CGisItemOvlArea.h"
-#include "canvas/CCanvas.h"
+#include "mouse/CMouseEditArea.h"
 
 
 #include <QtWidgets>
@@ -27,7 +27,7 @@
 CMouseEditArea::CMouseEditArea(const QPointF& point, CGisDraw * gis, CCanvas * parent)
     : IMouseEditLine(point, gis, parent)
 {
-    cursor = cursor1 = QCursor(QPixmap(":/cursors/cursorMoveArea.png"),0,0);    
+    cursor = cursor1 = QCursor(QPixmap(":/cursors/cursorMoveArea.png"),0,0);
 }
 
 CMouseEditArea::CMouseEditArea(CGisItemOvlArea &area, CGisDraw * gis, CCanvas * parent)
diff --git a/src/mouse/CMouseEditArea.h b/src/mouse/CMouseEditArea.h
index e1cb241..b492660 100644
--- a/src/mouse/CMouseEditArea.h
+++ b/src/mouse/CMouseEditArea.h
@@ -19,32 +19,32 @@
 #ifndef CMOUSEEDITAREA_H
 #define CMOUSEEDITAREA_H
 
-#include "mouse/IMouseEditLine.h"
 #include "gis/IGisItem.h"
+#include "mouse/IMouseEditLine.h"
 
 class CGisItemOvlArea;
 
 class CMouseEditArea : public IMouseEditLine
 {
     Q_OBJECT
-    public:
-        CMouseEditArea(const QPointF& point, CGisDraw * gis, CCanvas * parent);
-        CMouseEditArea(CGisItemOvlArea &area, CGisDraw * gis, CCanvas * parent);
-        virtual ~CMouseEditArea();
+public:
+    CMouseEditArea(const QPointF& point, CGisDraw * gis, CCanvas * parent);
+    CMouseEditArea(CGisItemOvlArea &area, CGisDraw * gis, CCanvas * parent);
+    virtual ~CMouseEditArea();
 
-        void mousePressEvent(QMouseEvent * e);
+    void mousePressEvent(QMouseEvent * e);
 
-    protected slots:
-        void slotAbort();
-        void slotCopyToNew();
-        void slotCopyToOrig();
+protected slots:
+    void slotAbort();
+    void slotCopyToNew();
+    void slotCopyToOrig();
 
-    protected:
-        virtual void drawLine(const QPolygonF& l, QPainter& p);
-        IGisLine * getGisLine();
+protected:
+    virtual void drawLine(const QPolygonF& l, QPainter& p);
+    IGisLine * getGisLine();
 
-    private:
-        IGisItem::key_t key;
+private:
+    IGisItem::key_t key;
 };
 
 #endif //CMOUSEEDITAREA_H
diff --git a/src/mouse/CMouseEditTrk.cpp b/src/mouse/CMouseEditTrk.cpp
index 3ca12d9..d60fe2f 100644
--- a/src/mouse/CMouseEditTrk.cpp
+++ b/src/mouse/CMouseEditTrk.cpp
@@ -16,10 +16,10 @@
 
 **********************************************************************************************/
 
-#include "mouse/CMouseEditTrk.h"
-#include "gis/trk/CGisItemTrk.h"
-#include "gis/CGisWidget.h"
 #include "canvas/CCanvas.h"
+#include "gis/CGisWidget.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "mouse/CMouseEditTrk.h"
 
 #include <QtWidgets>
 
@@ -47,7 +47,7 @@ CMouseEditTrk::CMouseEditTrk(CGisItemTrk &trk, CGisDraw * gis, CCanvas * parent)
     /*
         trigger complete update of GIS components to make sure all changes to
         the originating object are reflected on the canvas
-    */
+     */
     canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
 }
 
@@ -113,5 +113,5 @@ void CMouseEditTrk::slotCopyToNew()
     new CGisItemTrk(coords1,name, project, -1);
 
     canvas->resetMouse();
-    canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);            
+    canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
 }
diff --git a/src/mouse/CMouseEditTrk.h b/src/mouse/CMouseEditTrk.h
index 7331121..bbb5840 100644
--- a/src/mouse/CMouseEditTrk.h
+++ b/src/mouse/CMouseEditTrk.h
@@ -19,32 +19,32 @@
 #ifndef CMOUSEEDITTRK_H
 #define CMOUSEEDITTRK_H
 
-#include "mouse/IMouseEditLine.h"
 #include "gis/IGisItem.h"
+#include "mouse/IMouseEditLine.h"
 
 class CGisItemTrk;
 
 class CMouseEditTrk : public IMouseEditLine
 {
     Q_OBJECT
-    public:
-        CMouseEditTrk(const QPointF& point, CGisDraw * gis, CCanvas * parent);
-        CMouseEditTrk(CGisItemTrk &trk, CGisDraw * gis, CCanvas * parent);
-        virtual ~CMouseEditTrk();
+public:
+    CMouseEditTrk(const QPointF& point, CGisDraw * gis, CCanvas * parent);
+    CMouseEditTrk(CGisItemTrk &trk, CGisDraw * gis, CCanvas * parent);
+    virtual ~CMouseEditTrk();
 
-        void mousePressEvent(QMouseEvent * e);
+    void mousePressEvent(QMouseEvent * e);
 
-    protected slots:        
-        void slotAbort();
-        void slotCopyToNew();
-        void slotCopyToOrig();
+protected slots:
+    void slotAbort();
+    void slotCopyToNew();
+    void slotCopyToOrig();
 
 
-    protected:
-        IGisLine * getGisLine();
+protected:
+    IGisLine * getGisLine();
 
-    private:
-        IGisItem::key_t key;
+private:
+    IGisItem::key_t key;
 };
 
 #endif //CMOUSEEDITTRK_H
diff --git a/src/mouse/CMouseMoveWpt.cpp b/src/mouse/CMouseMoveWpt.cpp
index 22b93b6..6ed543c 100644
--- a/src/mouse/CMouseMoveWpt.cpp
+++ b/src/mouse/CMouseMoveWpt.cpp
@@ -16,14 +16,14 @@
 
 **********************************************************************************************/
 
-#include "mouse/CMouseMoveWpt.h"
-#include "gis/wpt/CGisItemWpt.h"
+#include "GeoMath.h"
+#include "canvas/CCanvas.h"
 #include "gis/CGisDraw.h"
 #include "gis/CGisWidget.h"
 #include "gis/WptIcons.h"
-#include "canvas/CCanvas.h"
+#include "gis/wpt/CGisItemWpt.h"
+#include "mouse/CMouseMoveWpt.h"
 #include "units/IUnit.h"
-#include "GeoMath.h"
 
 #include <QtWidgets>
 #include <proj_api.h>
@@ -39,7 +39,6 @@ CMouseMoveWpt::CMouseMoveWpt(CGisItemWpt &wpt, CGisDraw * gis, CCanvas *parent)
 
 CMouseMoveWpt::~CMouseMoveWpt()
 {
-
 }
 
 void CMouseMoveWpt::draw(QPainter& p,  bool needsRedraw, const QRect &rect)
@@ -84,7 +83,6 @@ void CMouseMoveWpt::draw(QPainter& p,  bool needsRedraw, const QRect &rect)
 
     p.drawPixmap(p1 - focus, icon);
     p.drawPixmap(p2 - focus, icon);
-
 }
 
 void CMouseMoveWpt::slotPanCanvas()
diff --git a/src/mouse/CMouseMoveWpt.h b/src/mouse/CMouseMoveWpt.h
index 041f3f2..b3783be 100644
--- a/src/mouse/CMouseMoveWpt.h
+++ b/src/mouse/CMouseMoveWpt.h
@@ -19,8 +19,8 @@
 #ifndef CMOUSEMOVEWPT_H
 #define CMOUSEMOVEWPT_H
 
-#include "mouse/IMouse.h"
 #include "gis/IGisItem.h"
+#include "mouse/IMouse.h"
 
 #include <QPixmap>
 
@@ -30,26 +30,25 @@ class CGisDraw;
 
 class CMouseMoveWpt : public IMouse
 {
-    public:
-        CMouseMoveWpt(CGisItemWpt& wpt, CGisDraw * gis, CCanvas * parent);
-        virtual ~CMouseMoveWpt();
-
-        void draw(QPainter& p,  bool needsRedraw, const QRect &rect);
-        void mousePressEvent(QMouseEvent * e);
-        void mouseMoveEvent(QMouseEvent * e);
-        void mouseReleaseEvent(QMouseEvent *e);
-        void wheelEvent(QWheelEvent * e);
-
-    protected slots:
-        virtual void slotPanCanvas();
-
-    private:
-        IGisItem::key_t key;
-        QPointF origPos;
-        QPointF newPos;
-        QPointF focus;
-        QPixmap icon;
-
+public:
+    CMouseMoveWpt(CGisItemWpt& wpt, CGisDraw * gis, CCanvas * parent);
+    virtual ~CMouseMoveWpt();
+
+    void draw(QPainter& p,  bool needsRedraw, const QRect &rect);
+    void mousePressEvent(QMouseEvent * e);
+    void mouseMoveEvent(QMouseEvent * e);
+    void mouseReleaseEvent(QMouseEvent *e);
+    void wheelEvent(QWheelEvent * e);
+
+protected slots:
+    virtual void slotPanCanvas();
+
+private:
+    IGisItem::key_t key;
+    QPointF origPos;
+    QPointF newPos;
+    QPointF focus;
+    QPixmap icon;
 };
 
 #endif //CMOUSEMOVEWPT_H
diff --git a/src/mouse/CMouseNormal.cpp b/src/mouse/CMouseNormal.cpp
index 020d185..7e22924 100644
--- a/src/mouse/CMouseNormal.cpp
+++ b/src/mouse/CMouseNormal.cpp
@@ -16,17 +16,17 @@
 
 **********************************************************************************************/
 
-#include "mouse/CMouseNormal.h"
-#include "mouse/CScrOptUnclutter.h"
+#include "GeoMath.h"
 #include "canvas/CCanvas.h"
+#include "gis/CGisDraw.h"
 #include "gis/CGisWidget.h"
-#include "gis/wpt/CGisItemWpt.h"
-#include "gis/trk/CGisItemTrk.h"
-#include "gis/rte/CGisItemRte.h"
 #include "gis/CGisWidget.h"
-#include "gis/CGisDraw.h"
 #include "gis/prj/IGisProject.h"
-#include "GeoMath.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/wpt/CGisItemWpt.h"
+#include "mouse/CMouseNormal.h"
+#include "mouse/CScrOptUnclutter.h"
 
 #include <QtWidgets>
 
@@ -48,7 +48,6 @@ CMouseNormal::CMouseNormal(CGisDraw *gis, CCanvas *canvas)
 
 CMouseNormal::~CMouseNormal()
 {
-
 }
 
 void CMouseNormal::stopTracking()
@@ -62,7 +61,6 @@ void CMouseNormal::stopTracking()
             trk->setMouseFocusByPoint(NOPOINT, CGisItemTrk::eFocusMouseMove);
         }
     }
-
 }
 
 void CMouseNormal::mousePressEvent(QMouseEvent * e)
@@ -80,7 +78,6 @@ void CMouseNormal::mousePressEvent(QMouseEvent * e)
     {
         QPoint p = canvas->mapToGlobal(point);
         menu->exec(p);
-
     }
 }
 
@@ -92,7 +89,7 @@ void CMouseNormal::mouseMoveEvent(QMouseEvent * e)
         screenItemOption->mouseMoveEvent(e);
     }
 
-    point = e->pos();    
+    point = e->pos();
 
     if(mapMove)
     {
@@ -108,25 +105,26 @@ void CMouseNormal::mouseMoveEvent(QMouseEvent * e)
     {
         switch(stateItemSel)
         {
-            case eStateIdle:
-            case eStateHooverSingle:
-            case eStateHooverMultiple:
+        case eStateIdle:
+        case eStateHooverSingle:
+        case eStateHooverMultiple:
+        {
+            const IGisItem::key_t& key = CGisItemTrk::getKeyUserFocus();
+            if(!key.item.isEmpty())
             {
-                const IGisItem::key_t& key = CGisItemTrk::getKeyUserFocus();
-                if(!key.item.isEmpty())
+                CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
+                if(trk != 0)
                 {
-                    CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
-                    if(trk != 0)
-                    {
-                        trk->setMouseFocusByPoint(point, CGisItemTrk::eFocusMouseMove);
-                    }
+                    trk->setMouseFocusByPoint(point, CGisItemTrk::eFocusMouseMove);
                 }
-                break;
             }
-            default:;
+            break;
+        }
+
+        default:;
         }
         canvas->displayInfo(point);
-        canvas->update();                
+        canvas->update();
     }
 }
 
@@ -134,16 +132,50 @@ void CMouseNormal::mouseReleaseEvent(QMouseEvent *e)
 {
     point = e->pos();
     if(e->button() == Qt::LeftButton)
-    {      
+    {
         if(!mapDidMove)
         {
             switch(stateItemSel)
             {
-                case eStateHooverSingle:
+            case eStateHooverSingle:
+            {
+                stateItemSel = eStateIdle;
+
+                IGisItem * item = CGisWidget::self().getItemByKey(screenUnclutter->getItemKey());
+                if(item)
+                {
+                    item->treeWidget()->collapseAll();
+                    item->treeWidget()->setCurrentItem(item);
+                    item->treeWidget()->scrollToItem(item, QAbstractItemView::PositionAtCenter);
+
+                    delete screenItemOption;
+                    screenItemOption = item->getScreenOptions(point, this);
+
+                    if(!screenItemOption.isNull())
+                    {
+                        stateItemSel = eStateShowItemOptions;
+                    }
+                    stopTracking();
+                }
+                break;
+            }
+
+            case eStateHooverMultiple:
+            {
+                screenUnclutter->setOrigin(e->pos());
+                stateItemSel = eStateUnclutterMultiple;
+                stopTracking();
+                break;
+            }
+
+            case eStateUnclutterMultiple:
+            {
+                const CScrOptUnclutter::item_t * scrOpt = screenUnclutter->selectItem(point);
+                if(scrOpt != 0)
                 {
-                    stateItemSel = eStateIdle;
+                    screenUnclutter->clear();
 
-                    IGisItem * item = CGisWidget::self().getItemByKey(screenUnclutter->getItemKey());
+                    IGisItem * item = CGisWidget::self().getItemByKey(scrOpt->key);
                     if(item)
                     {
                         item->treeWidget()->collapseAll();
@@ -151,59 +183,28 @@ void CMouseNormal::mouseReleaseEvent(QMouseEvent *e)
                         item->treeWidget()->scrollToItem(item, QAbstractItemView::PositionAtCenter);
 
                         delete screenItemOption;
-                        screenItemOption = item->getScreenOptions(point, this);
+                        screenItemOption = item->getScreenOptions(screenUnclutter->getOrigin(), this);
 
                         if(!screenItemOption.isNull())
                         {
                             stateItemSel = eStateShowItemOptions;
-
-                        }
-                        stopTracking();
-                    }                    
-                    break;
-                }
-                case eStateHooverMultiple:
-                {
-                    screenUnclutter->setOrigin(e->pos());
-                    stateItemSel = eStateUnclutterMultiple;
-                    stopTracking();
-                    break;
-                }
-                case eStateUnclutterMultiple:
-                {
-                    const CScrOptUnclutter::item_t * scrOpt = screenUnclutter->selectItem(point);
-                    if(scrOpt != 0)
-                    {
-                        screenUnclutter->clear();
-
-                        IGisItem * item = CGisWidget::self().getItemByKey(scrOpt->key);
-                        if(item)
-                        {
-                            item->treeWidget()->collapseAll();
-                            item->treeWidget()->setCurrentItem(item);
-                            item->treeWidget()->scrollToItem(item, QAbstractItemView::PositionAtCenter);
-
-                            delete screenItemOption;
-                            screenItemOption = item->getScreenOptions(screenUnclutter->getOrigin(), this);
-
-                            if(!screenItemOption.isNull())
-                            {
-                                stateItemSel = eStateShowItemOptions;
-                                break;
-                            }
+                            break;
                         }
                     }
-                    screenUnclutter->clear();
-                    stateItemSel = eStateIdle;
-                    break;
-                }
-                case eStateShowItemOptions:
-                {
-                    delete screenItemOption;
-                    stateItemSel = eStateIdle;
-                    break;
                 }
-                default:;
+                screenUnclutter->clear();
+                stateItemSel = eStateIdle;
+                break;
+            }
+
+            case eStateShowItemOptions:
+            {
+                delete screenItemOption;
+                stateItemSel = eStateIdle;
+                break;
+            }
+
+            default:;
             }
             canvas->update();
         }
@@ -239,69 +240,70 @@ void CMouseNormal::draw(QPainter& p, bool needsRedraw, const QRect &rect)
 
     switch(stateItemSel)
     {
-        case eStateIdle:
-        case eStateHooverSingle:
-        case eStateHooverMultiple:
-        {
-
-            /*
-                Collect and draw items close to the last mouse position in the draw method.
-
-                This might be a bit odd but there are two reasons:
-
-                1) Multiple update events are combined by the event loop. Thus multiple mouse move
-                   events are reduced a single paint event. As getItemsByPos() is quite cycle
-                   intense this seems like a good idea.
+    case eStateIdle:
+    case eStateHooverSingle:
+    case eStateHooverMultiple:
+    {
+        /*
+            Collect and draw items close to the last mouse position in the draw method.
 
-                2) The list of items passed back by getItemsByPos() must not be stored. That is why
-                   the list has to be generated within the draw handler to access the item's drawHighlight()
-                   method.
+            This might be a bit odd but there are two reasons:
 
-            */
-            screenUnclutter->clear();
+            1) Multiple update events are combined by the event loop. Thus multiple mouse move
+               events are reduced a single paint event. As getItemsByPos() is quite cycle
+               intense this seems like a good idea.
 
-            QList<IGisItem*> items;
-            CGisWidget::self().getItemsByPos(point, items);
+            2) The list of items passed back by getItemsByPos() must not be stored. That is why
+               the list has to be generated within the draw handler to access the item's drawHighlight()
+               method.
 
-            if(items.empty() || items.size() > 8)
-            {
-                stateItemSel = eStateIdle;
-                break;
-            }
+         */
+        screenUnclutter->clear();
 
-            foreach(IGisItem * item, items)
-            {
-                item->drawHighlight(p);
-                screenUnclutter->addItem(item);
-            }
+        QList<IGisItem*> items;
+        CGisWidget::self().getItemsByPos(point, items);
 
-            stateItemSel = (screenUnclutter->size() == 1) ? eStateHooverSingle : eStateHooverMultiple;
-            break;
-        }
-        case eStateUnclutterMultiple:
+        if(items.empty() || items.size() > 8)
         {
-            screenUnclutter->draw(p);
+            stateItemSel = eStateIdle;
             break;
         }
-        case eStateShowItemOptions:
+
+        foreach(IGisItem * item, items)
         {
-            if(screenItemOption.isNull())
-            {
-                stateItemSel = eStateIdle;
-                break;
-            }
+            item->drawHighlight(p);
+            screenUnclutter->addItem(item);
+        }
+
+        stateItemSel = (screenUnclutter->size() == 1) ? eStateHooverSingle : eStateHooverMultiple;
+        break;
+    }
 
-            screenItemOption->draw(p);
+    case eStateUnclutterMultiple:
+    {
+        screenUnclutter->draw(p);
+        break;
+    }
+
+    case eStateShowItemOptions:
+    {
+        if(screenItemOption.isNull())
+        {
+            stateItemSel = eStateIdle;
             break;
         }
-        default:;
+
+        screenItemOption->draw(p);
+        break;
+    }
+
+    default:;
     }
 }
 
 
 void CMouseNormal::slotAddWpt()
 {
-
     QPointF pt = point;
     gis->convertPx2Rad(pt);
     pt *= RAD_TO_DEG;
@@ -332,7 +334,6 @@ void CMouseNormal::slotAddWpt()
 
     new CGisItemWpt(pt, name, icon, project);
     canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
-
 }
 
 void CMouseNormal::slotAddTrk()
diff --git a/src/mouse/CMouseNormal.h b/src/mouse/CMouseNormal.h
index 0c56b85..d34d985 100644
--- a/src/mouse/CMouseNormal.h
+++ b/src/mouse/CMouseNormal.h
@@ -21,10 +21,10 @@
 
 #include "IMouse.h"
 
-#include <QStringList>
 #include <QPixmap>
-#include <QRect>
 #include <QPointer>
+#include <QRect>
+#include <QStringList>
 
 class CCanvas;
 class IScrOpt;
@@ -34,56 +34,55 @@ class QMenu;
 class CMouseNormal : public IMouse
 {
     Q_OBJECT
-    public:
-        CMouseNormal(CGisDraw * gis, CCanvas *canvas);
-        virtual ~CMouseNormal();
-
-        void draw(QPainter& p,  bool needsRedraw,  const QRect &rect);
-        void mousePressEvent(QMouseEvent * e);
-        void mouseMoveEvent(QMouseEvent * e);
-        void mouseReleaseEvent(QMouseEvent *e);
-        void mouseDoubleClickEvent(QMouseEvent *e);
-        void wheelEvent(QWheelEvent * e);
-
-    private slots:
-        void slotAddWpt();
-        void slotAddTrk();
-        void slotAddArea();
-        void slotCopyPosition();
-
-    protected:
-        void stopTracking();
-
-
-        /// the flag is true if the map moving is in progress
-        bool mapMove;
-        /// the flag is true if the map has been moved actually
-        bool mapDidMove;
-        /// always the last seen mouse cursor position
-        QPoint lastPos;
-
-        enum item_selection_states_e
-        {
-              eStateIdle = 0
-            /// there is only a single item close to the cursor
-            , eStateHooverSingle = 1
-            /// there are multiple items close to the cursor
-            , eStateHooverMultiple = 2
-            /// not a real state, but at this value and above no map move is allowed to take place
-            , eStateNoMapMovePossible = 3
-            /// the user clicked on multiple cluttered items and gets now an uncluttered representation
-            , eStateUnclutterMultiple = 3
-            /// the user has selected a single item, show options how to proceed
-            , eStateShowItemOptions = 4
-        };
-
-        item_selection_states_e stateItemSel;
-
-        CScrOptUnclutter * screenUnclutter;
-        QPointer<IScrOpt>  screenItemOption;
-
-        QMenu * menu;
-
+public:
+    CMouseNormal(CGisDraw * gis, CCanvas *canvas);
+    virtual ~CMouseNormal();
+
+    void draw(QPainter& p,  bool needsRedraw,  const QRect &rect);
+    void mousePressEvent(QMouseEvent * e);
+    void mouseMoveEvent(QMouseEvent * e);
+    void mouseReleaseEvent(QMouseEvent *e);
+    void mouseDoubleClickEvent(QMouseEvent *e);
+    void wheelEvent(QWheelEvent * e);
+
+private slots:
+    void slotAddWpt();
+    void slotAddTrk();
+    void slotAddArea();
+    void slotCopyPosition();
+
+protected:
+    void stopTracking();
+
+
+    /// the flag is true if the map moving is in progress
+    bool mapMove;
+    /// the flag is true if the map has been moved actually
+    bool mapDidMove;
+    /// always the last seen mouse cursor position
+    QPoint lastPos;
+
+    enum item_selection_states_e
+    {
+        eStateIdle = 0
+                     /// there is only a single item close to the cursor
+        , eStateHooverSingle = 1
+                               /// there are multiple items close to the cursor
+        , eStateHooverMultiple = 2
+                                 /// not a real state, but at this value and above no map move is allowed to take place
+        , eStateNoMapMovePossible = 3
+                                    /// the user clicked on multiple cluttered items and gets now an uncluttered representation
+        , eStateUnclutterMultiple = 3
+                                    /// the user has selected a single item, show options how to proceed
+        , eStateShowItemOptions = 4
+    };
+
+    item_selection_states_e stateItemSel;
+
+    CScrOptUnclutter * screenUnclutter;
+    QPointer<IScrOpt>  screenItemOption;
+
+    QMenu * menu;
 };
 
 #endif //CMOUSENORMAL_H
diff --git a/src/mouse/CMouseRangeTrk.cpp b/src/mouse/CMouseRangeTrk.cpp
index a80afd5..77c59bf 100644
--- a/src/mouse/CMouseRangeTrk.cpp
+++ b/src/mouse/CMouseRangeTrk.cpp
@@ -16,12 +16,12 @@
 
 **********************************************************************************************/
 
-#include "mouse/CMouseRangeTrk.h"
-#include "mouse/CScrOptRangeTrk.h"
-#include "gis/trk/CGisItemTrk.h"
+#include "canvas/CCanvas.h"
 #include "gis/CGisDraw.h"
 #include "gis/CGisWidget.h"
-#include "canvas/CCanvas.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "mouse/CMouseRangeTrk.h"
+#include "mouse/CScrOptRangeTrk.h"
 
 #include <QtWidgets>
 
@@ -49,7 +49,7 @@ CMouseRangeTrk::CMouseRangeTrk(CGisItemTrk &trk, CGisDraw *gis, CCanvas *parent)
     /*
         trigger complete update of GIS components to make sure all changes to
         the originating object are reflected on the canvas
-    */
+     */
     canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
 }
 
@@ -74,33 +74,33 @@ void CMouseRangeTrk::draw(QPainter& p,  bool needsRedraw, const QRect &rect)
     {
         switch(state)
         {
-            case eStateIdle:
-            case eStateMoveMap:
-                if(anchor != NOPOINTF)
-                {
-                    p.setPen(Qt::darkBlue);
-                    p.setBrush(QColor(255,255,255,200));
-                    p.drawEllipse(anchor, 6, 6);
-
-                    QPixmap bullet("://icons/8x8/bullet_magenta.png");
-                    p.drawPixmap(anchor.x() - 3, anchor.y() - 3, bullet);
-                }
-                break;
-
-            case eStateSelectRange:
-            case eStateRangeSelected:
-                trk->drawRange(p);
-                if(anchor != NOPOINTF)
-                {
-                    p.setPen(Qt::darkBlue);
-                    p.setBrush(QColor(255,255,255,200));
-                    p.drawEllipse(anchor, 6, 6);
-
-                    QPixmap bullet("://icons/8x8/bullet_magenta.png");
-                    p.drawPixmap(anchor.x() - 3, anchor.y() - 3, bullet);
-                }
-
-                break;
+        case eStateIdle:
+        case eStateMoveMap:
+            if(anchor != NOPOINTF)
+            {
+                p.setPen(Qt::darkBlue);
+                p.setBrush(QColor(255,255,255,200));
+                p.drawEllipse(anchor, 6, 6);
+
+                QPixmap bullet("://icons/8x8/bullet_magenta.png");
+                p.drawPixmap(anchor.x() - 3, anchor.y() - 3, bullet);
+            }
+            break;
+
+        case eStateSelectRange:
+        case eStateRangeSelected:
+            trk->drawRange(p);
+            if(anchor != NOPOINTF)
+            {
+                p.setPen(Qt::darkBlue);
+                p.setBrush(QColor(255,255,255,200));
+                p.drawEllipse(anchor, 6, 6);
+
+                QPixmap bullet("://icons/8x8/bullet_magenta.png");
+                p.drawPixmap(anchor.x() - 3, anchor.y() - 3, bullet);
+            }
+
+            break;
         }
     }
 
@@ -123,55 +123,56 @@ void CMouseRangeTrk::mousePressEvent(QMouseEvent * e)
     {
         switch(state)
         {
-            case eStateIdle:
+        case eStateIdle:
+        {
+            CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
+            if(trk != 0 && anchor != NOPOINTF)
             {
-                CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
-                if(trk != 0 && anchor != NOPOINTF)
-                {
-                    anchor = trk->setMouseFocusByPoint(point, CGisItemTrk::eFocusMouseClick);
-                    state = eStateSelectRange;
-                    canvas->update();
-                }
-                else
-                {
-                    state = eStateMoveMap;
-                }
-                break;
+                anchor = trk->setMouseFocusByPoint(point, CGisItemTrk::eFocusMouseClick);
+                state = eStateSelectRange;
+                canvas->update();
             }
-
-            case eStateSelectRange:
+            else
             {
-                CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
-                if(trk != 0 && anchor != NOPOINTF)
-                {
-                    QPointF pt = trk->setMouseFocusByPoint(point, CGisItemTrk::eFocusMouseMove);
-                    scrOptRange = new CScrOptRangeTrk(pt, trk, canvas);
-                    connect(scrOptRange->toolHidePoints, SIGNAL(clicked()), this, SLOT(slotHidePoints()));
-                    connect(scrOptRange->toolShowPoints, SIGNAL(clicked()), this, SLOT(slotShowPoints()));
-                    connect(scrOptRange->toolCopy, SIGNAL(clicked()), this, SLOT(slotCopy()));
-
-                    state = eStateRangeSelected;
-                    canvas->update();
-                }
-
-                break;
+                state = eStateMoveMap;
             }
-            case eStateRangeSelected:
+            break;
+        }
+
+        case eStateSelectRange:
+        {
+            CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
+            if(trk != 0 && anchor != NOPOINTF)
             {
-                scrOptRange->deleteLater();
-                CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
-                if(trk != 0)
-                {
-                    trk->setMouseFocusByPoint(NOPOINT, CGisItemTrk::eFocusMouseMove);
-                    trk->setMouseFocusByPoint(NOPOINT, CGisItemTrk::eFocusMouseClick);
-                }
-                state = eStateIdle;
+                QPointF pt = trk->setMouseFocusByPoint(point, CGisItemTrk::eFocusMouseMove);
+                scrOptRange = new CScrOptRangeTrk(pt, trk, canvas);
+                connect(scrOptRange->toolHidePoints, SIGNAL(clicked()), this, SLOT(slotHidePoints()));
+                connect(scrOptRange->toolShowPoints, SIGNAL(clicked()), this, SLOT(slotShowPoints()));
+                connect(scrOptRange->toolCopy, SIGNAL(clicked()), this, SLOT(slotCopy()));
+
+                state = eStateRangeSelected;
                 canvas->update();
-                break;
             }
-            default:;
+
+            break;
+        }
+
+        case eStateRangeSelected:
+        {
+            scrOptRange->deleteLater();
+            CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
+            if(trk != 0)
+            {
+                trk->setMouseFocusByPoint(NOPOINT, CGisItemTrk::eFocusMouseMove);
+                trk->setMouseFocusByPoint(NOPOINT, CGisItemTrk::eFocusMouseClick);
+            }
+            state = eStateIdle;
+            canvas->update();
+            break;
         }
 
+        default:;
+        }
     }
 }
 
@@ -181,40 +182,40 @@ void CMouseRangeTrk::mouseMoveEvent(QMouseEvent * e)
 
     switch(state)
     {
-        case eStateIdle:
+    case eStateIdle:
+    {
+        CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
+        if(trk != 0)
         {
-            CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
-            if(trk != 0)
-            {
-                anchor = trk->setMouseFocusByPoint(point, CGisItemTrk::eFocusMouseClick);
-                canvas->update();
-            }
-            break;
+            anchor = trk->setMouseFocusByPoint(point, CGisItemTrk::eFocusMouseClick);
+            canvas->update();
         }
+        break;
+    }
 
-        case eStateMoveMap:
+    case eStateMoveMap:
+    {
+        if(point != lastPoint)
         {
-            if(point != lastPoint)
-            {
-                QPoint delta = point - lastPoint;
-                canvas->moveMap(delta);
-            }
-            break;
+            QPoint delta = point - lastPoint;
+            canvas->moveMap(delta);
         }
+        break;
+    }
 
-        case eStateSelectRange:
+    case eStateSelectRange:
+    {
+        CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
+        if(trk != 0)
         {
-
-            CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
-            if(trk != 0)
-            {
-                anchor = trk->setMouseFocusByPoint(point, CGisItemTrk::eFocusMouseMove);
-                canvas->update();
-            }
-            panCanvas(point);
-            break;
+            anchor = trk->setMouseFocusByPoint(point, CGisItemTrk::eFocusMouseMove);
+            canvas->update();
         }
-        default:;
+        panCanvas(point);
+        break;
+    }
+
+    default:;
     }
 
     lastPoint = point;
@@ -233,7 +234,6 @@ void CMouseRangeTrk::mouseReleaseEvent(QMouseEvent *e)
 
 void CMouseRangeTrk::wheelEvent(QWheelEvent * e)
 {
-
 }
 
 void CMouseRangeTrk::slotHidePoints()
diff --git a/src/mouse/CMouseRangeTrk.h b/src/mouse/CMouseRangeTrk.h
index 095f0ea..bcb4f08 100644
--- a/src/mouse/CMouseRangeTrk.h
+++ b/src/mouse/CMouseRangeTrk.h
@@ -19,8 +19,8 @@
 #ifndef CMOUSERANGETRK_H
 #define CMOUSERANGETRK_H
 
-#include "mouse/IMouse.h"
 #include "gis/IGisItem.h"
+#include "mouse/IMouse.h"
 #include <QPointer>
 
 class CGisItemTrk;
@@ -31,41 +31,39 @@ class CScrOptRangeTrk;
 class CMouseRangeTrk : public IMouse
 {
     Q_OBJECT;
-    public:
-        CMouseRangeTrk(CGisItemTrk& trk, CGisDraw * gis, CCanvas * parent);
-        virtual ~CMouseRangeTrk();
-
-        void draw(QPainter& p,  bool needsRedraw, const QRect &rect);
-        void mousePressEvent(QMouseEvent * e);
-        void mouseMoveEvent(QMouseEvent * e);
-        void mouseReleaseEvent(QMouseEvent *e);
-        void wheelEvent(QWheelEvent * e);
-
-    private slots:
-        void slotHidePoints();
-        void slotShowPoints();
-        void slotCopy();
+public:
+    CMouseRangeTrk(CGisItemTrk& trk, CGisDraw * gis, CCanvas * parent);
+    virtual ~CMouseRangeTrk();
 
-    private:
-        IGisItem::key_t key;
+    void draw(QPainter& p,  bool needsRedraw, const QRect &rect);
+    void mousePressEvent(QMouseEvent * e);
+    void mouseMoveEvent(QMouseEvent * e);
+    void mouseReleaseEvent(QMouseEvent *e);
+    void wheelEvent(QWheelEvent * e);
 
-        enum state_e
-        {
-             eStateIdle
-            ,eStateMoveMap
-            ,eStateSelectRange
-            ,eStateRangeSelected
-        };
+private slots:
+    void slotHidePoints();
+    void slotShowPoints();
+    void slotCopy();
 
-        state_e state;
+private:
+    IGisItem::key_t key;
 
-        QPointF anchor;
+    enum state_e
+    {
+        eStateIdle
+        ,eStateMoveMap
+        ,eStateSelectRange
+        ,eStateRangeSelected
+    };
 
-        QPoint lastPoint;
+    state_e state;
 
-        QPointer<CScrOptRangeTrk> scrOptRange;
+    QPointF anchor;
 
+    QPoint lastPoint;
 
+    QPointer<CScrOptRangeTrk> scrOptRange;
 };
 
 #endif //CMOUSERANGETRK_H
diff --git a/src/mouse/CScrOptEditLine.cpp b/src/mouse/CScrOptEditLine.cpp
index 57b900a..b795628 100644
--- a/src/mouse/CScrOptEditLine.cpp
+++ b/src/mouse/CScrOptEditLine.cpp
@@ -32,6 +32,5 @@ CScrOptEditLine::CScrOptEditLine(QWidget *parent)
 
 CScrOptEditLine::~CScrOptEditLine()
 {
-
 }
 
diff --git a/src/mouse/CScrOptEditLine.h b/src/mouse/CScrOptEditLine.h
index f592922..4325729 100644
--- a/src/mouse/CScrOptEditLine.h
+++ b/src/mouse/CScrOptEditLine.h
@@ -25,12 +25,13 @@
 class CScrOptEditLine : public IScrOpt, public Ui::IScrOptEditLine
 {
     Q_OBJECT
-    public:
-        CScrOptEditLine(QWidget * parent);
-        virtual ~CScrOptEditLine();
-
-        void draw(QPainter& p){}
+public:
+    CScrOptEditLine(QWidget * parent);
+    virtual ~CScrOptEditLine();
 
+    void draw(QPainter& p)
+    {
+    }
 };
 
 #endif //CSCROPTEDITLINE_H
diff --git a/src/mouse/CScrOptPoint.cpp b/src/mouse/CScrOptPoint.cpp
index 4cc2915..9ce3849 100644
--- a/src/mouse/CScrOptPoint.cpp
+++ b/src/mouse/CScrOptPoint.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "mouse/CScrOptPoint.h"
 #include "canvas/CCanvas.h"
+#include "mouse/CScrOptPoint.h"
 
 #include <QtWidgets>
 
@@ -31,12 +31,10 @@ CScrOptPoint::CScrOptPoint(const QPointF &point, QWidget *parent)
 
     move(point.toPoint() + QPoint(-width()/2,SCR_OPT_OFFSET));
     show();
-
 }
 
 CScrOptPoint::~CScrOptPoint()
 {
-
 }
 
 void CScrOptPoint::draw(QPainter& p)
diff --git a/src/mouse/CScrOptPoint.h b/src/mouse/CScrOptPoint.h
index fe2ce99..a77947f 100644
--- a/src/mouse/CScrOptPoint.h
+++ b/src/mouse/CScrOptPoint.h
@@ -24,11 +24,11 @@
 
 class CScrOptPoint : public IScrOpt, public Ui::IScrOptPoint
 {
-    public:
-        CScrOptPoint(const QPointF& point, QWidget * parent);
-        virtual ~CScrOptPoint();
+public:
+    CScrOptPoint(const QPointF& point, QWidget * parent);
+    virtual ~CScrOptPoint();
 
-        void draw(QPainter& p);
+    void draw(QPainter& p);
 };
 
 #endif //CSCROPTPOINT_H
diff --git a/src/mouse/CScrOptRange.cpp b/src/mouse/CScrOptRange.cpp
index 7622d0d..da38781 100644
--- a/src/mouse/CScrOptRange.cpp
+++ b/src/mouse/CScrOptRange.cpp
@@ -34,8 +34,6 @@ CScrOptRange::CScrOptRange(const QPointF &point, QWidget *parent)
 
 CScrOptRange::~CScrOptRange()
 {
-
-
 }
 
 void CScrOptRange::draw(QPainter& p)
diff --git a/src/mouse/CScrOptRange.h b/src/mouse/CScrOptRange.h
index 2d95af6..245b20f 100644
--- a/src/mouse/CScrOptRange.h
+++ b/src/mouse/CScrOptRange.h
@@ -24,11 +24,11 @@
 
 class CScrOptRange : public IScrOpt, public Ui::IScrOptRange
 {
-    public:
-        CScrOptRange(const QPointF& point, QWidget * parent);
-        virtual ~CScrOptRange();
+public:
+    CScrOptRange(const QPointF& point, QWidget * parent);
+    virtual ~CScrOptRange();
 
-        void draw(QPainter& p);
+    void draw(QPainter& p);
 };
 
 #endif //CSCROPTRANGE_H
diff --git a/src/mouse/CScrOptRangeTrk.cpp b/src/mouse/CScrOptRangeTrk.cpp
index 213abfe..5651650 100644
--- a/src/mouse/CScrOptRangeTrk.cpp
+++ b/src/mouse/CScrOptRangeTrk.cpp
@@ -16,16 +16,16 @@
 
 **********************************************************************************************/
 
-#include "mouse/CScrOptRangeTrk.h"
-#include "gis/trk/CGisItemTrk.h"
 #include "CMainWindow.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "mouse/CScrOptRangeTrk.h"
 
 #include <QtWidgets>
 
 CScrOptRangeTrk::CScrOptRangeTrk(const QPointF &point, CGisItemTrk * trk, QWidget *parent)
     : IScrOpt(parent)
 {
-    setupUi(this);    
+    setupUi(this);
     label->setFont(CMainWindow::self().getMapFont());
     label->setText(trk->getInfoRange());
     adjustSize();
@@ -42,7 +42,6 @@ CScrOptRangeTrk::CScrOptRangeTrk(const QPointF &point, CGisItemTrk * trk, QWidge
 
 CScrOptRangeTrk::~CScrOptRangeTrk()
 {
-
 }
 
 void CScrOptRangeTrk::draw(QPainter& p)
diff --git a/src/mouse/CScrOptRangeTrk.h b/src/mouse/CScrOptRangeTrk.h
index ecb0914..337cb34 100644
--- a/src/mouse/CScrOptRangeTrk.h
+++ b/src/mouse/CScrOptRangeTrk.h
@@ -26,11 +26,11 @@ class CGisItemTrk;
 
 class CScrOptRangeTrk : public IScrOpt, public Ui::IScrOptRangeTrk
 {
-    public:
-        CScrOptRangeTrk(const QPointF& point, CGisItemTrk *trk, QWidget * parent);
-        virtual ~CScrOptRangeTrk();
+public:
+    CScrOptRangeTrk(const QPointF& point, CGisItemTrk *trk, QWidget * parent);
+    virtual ~CScrOptRangeTrk();
 
-        void draw(QPainter& p);
+    void draw(QPainter& p);
 };
 
 #endif //CSCROPTRANGETRK_H
diff --git a/src/mouse/CScrOptUnclutter.cpp b/src/mouse/CScrOptUnclutter.cpp
index f28961c..55b4c92 100644
--- a/src/mouse/CScrOptUnclutter.cpp
+++ b/src/mouse/CScrOptUnclutter.cpp
@@ -16,44 +16,43 @@
 
 **********************************************************************************************/
 
-#include "mouse/CScrOptUnclutter.h"
-#include "gis/IGisItem.h"
-#include "gis/trk/CGisItemTrk.h"
 #include "CMainWindow.h"
 #include "canvas/CCanvas.h"
+#include "gis/IGisItem.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "mouse/CScrOptUnclutter.h"
 
 #include <QtWidgets>
 
 const QPoint CScrOptUnclutter::positions[9][8] =
 {
     {
-
     },
 
     {
-          QPoint(-50,-23)
+        QPoint(-50,-23)
     },
 
     {
-          QPoint(-30,0)
+        QPoint(-30,0)
         , QPoint( 30,0)
     },
 
     {
-          QPoint(  0,-30)
+        QPoint(  0,-30)
         , QPoint( 30, 30)
         , QPoint(-30, 30)
     },
 
     {
-          QPoint(-30,-30)
+        QPoint(-30,-30)
         , QPoint( 30,-30)
         , QPoint(-30, 30)
         , QPoint( 30, 30)
     },
 
     {
-          QPoint(-25, 40)
+        QPoint(-25, 40)
         , QPoint( 25, 40)
         , QPoint(-40, -5)
         , QPoint( 40, -5)
@@ -61,7 +60,7 @@ const QPoint CScrOptUnclutter::positions[9][8] =
     },
 
     {
-          QPoint(-40,-22)
+        QPoint(-40,-22)
         , QPoint( 40,-22)
         , QPoint(-40, 22)
         , QPoint( 40, 22)
@@ -70,7 +69,7 @@ const QPoint CScrOptUnclutter::positions[9][8] =
     },
 
     {
-          QPoint(-50,-23)
+        QPoint(-50,-23)
         , QPoint( 50,-23)
         , QPoint(-45, 21)
         , QPoint( 45, 21)
@@ -80,7 +79,7 @@ const QPoint CScrOptUnclutter::positions[9][8] =
     },
 
     {
-          QPoint(-50,-23)
+        QPoint(-50,-23)
         , QPoint( 50,-23)
         , QPoint(-50, 23)
         , QPoint( 50, 23)
@@ -89,7 +88,6 @@ const QPoint CScrOptUnclutter::positions[9][8] =
         , QPoint(-22, 55)
         , QPoint( 22, 55)
     }
-
 };
 
 
@@ -97,12 +95,10 @@ CScrOptUnclutter::CScrOptUnclutter(QWidget *parent)
     : IScrOpt(parent)
     , doSpecialCursor(false)
 {
-
 }
 
 CScrOptUnclutter::~CScrOptUnclutter()
 {
-
 }
 
 void CScrOptUnclutter::clear()
@@ -119,7 +115,7 @@ void CScrOptUnclutter::mouseMoveEvent(QMouseEvent * e)
 {
     IScrOpt::mouseMoveEvent(e);
 
-    foreach(const item_t& item, items)
+    foreach(const item_t &item, items)
     {
         if(item.active.contains(mousePos))
         {
@@ -164,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)
+    foreach(const item_t &item, items)
     {
         if(item.active.contains(point))
         {
@@ -184,7 +180,6 @@ void CScrOptUnclutter::draw(QPainter& p)
 
         if(item.text.isNull())
         {
-
             item.area.moveCenter(origin + positions[N][cnt]);
             item.active.moveCenter(item.area.center());
             item.text = fm.boundingRect(item.name);
@@ -200,11 +195,11 @@ void CScrOptUnclutter::draw(QPainter& p)
         }
     }
 
-    foreach(const item_t& item, items)
+    foreach(const item_t &item, items)
     {
         p.setPen(Qt::NoPen);
         p.setBrush(QColor(255,255,255,255));
-        p.drawEllipse(item.area.center(), 20,20);        
+        p.drawEllipse(item.area.center(), 20,20);
         p.drawRoundedRect(item.text, 3, 3);
 
         p.setPen(QPen(item.hasUserFocus ? Qt::red : Qt::lightGray,2));
diff --git a/src/mouse/CScrOptUnclutter.h b/src/mouse/CScrOptUnclutter.h
index bcfcdee..fd8e17a 100644
--- a/src/mouse/CScrOptUnclutter.h
+++ b/src/mouse/CScrOptUnclutter.h
@@ -19,43 +19,44 @@
 #ifndef CSCROPTUNCLUTTER_H
 #define CSCROPTUNCLUTTER_H
 
-#include "mouse/IScrOpt.h"
 #include "gis/IGisItem.h"
+#include "mouse/IScrOpt.h"
 
 
 class CScrOptUnclutter : public IScrOpt
 {
-    public:
-        CScrOptUnclutter(QWidget *parent);
-        virtual ~CScrOptUnclutter();
-
-        struct item_t
-        {
-            bool    hasUserFocus;
-            QString name;
-            IGisItem::key_t key;
-            QPixmap icon;
-            QRect   area;
-            QRect   text;
-            QRect   active;
-        };
-
-        virtual void clear();
-        virtual int  size(){return items.size();}
-
-        void addItem(IGisItem * gisItem);
-        IGisItem::key_t getItemKey(int index = 0);
-        const item_t *selectItem(const QPoint& point);
-
-        void draw(QPainter& p);
-        void mouseMoveEvent(QMouseEvent * e);
-
-    private:
-        static const QPoint positions[9][8];
-        QList<item_t> items;
-        bool doSpecialCursor;
-
-
+public:
+    CScrOptUnclutter(QWidget *parent);
+    virtual ~CScrOptUnclutter();
+
+    struct item_t
+    {
+        bool hasUserFocus;
+        QString name;
+        IGisItem::key_t key;
+        QPixmap icon;
+        QRect area;
+        QRect text;
+        QRect active;
+    };
+
+    virtual void clear();
+    virtual int  size()
+    {
+        return items.size();
+    }
+
+    void addItem(IGisItem * gisItem);
+    IGisItem::key_t getItemKey(int index = 0);
+    const item_t *selectItem(const QPoint& point);
+
+    void draw(QPainter& p);
+    void mouseMoveEvent(QMouseEvent * e);
+
+private:
+    static const QPoint positions[9][8];
+    QList<item_t> items;
+    bool doSpecialCursor;
 };
 
 #endif //CSCROPTUNCLUTTER_H
diff --git a/src/mouse/IMouse.cpp b/src/mouse/IMouse.cpp
index c1bb0c6..611d7c2 100644
--- a/src/mouse/IMouse.cpp
+++ b/src/mouse/IMouse.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "mouse/IMouse.h"
 #include "canvas/CCanvas.h"
+#include "mouse/IMouse.h"
 #include <gis/CGisDraw.h>
 
 #include <QtWidgets>
@@ -36,7 +36,6 @@ IMouse::IMouse(CGisDraw *gis, CCanvas *canvas)
 
 IMouse::~IMouse()
 {
-
 }
 
 void IMouse::setMouseTracking(bool enabled)
@@ -59,7 +58,7 @@ void IMouse::panCanvas(const QPoint& pos)
     if(pos.x() < SENSITIVE_FRAME)
     {
         int d = SENSITIVE_FRAME - pos.x();
-        canvas->moveMap(QPointF(d/2 , 0));
+        canvas->moveMap(QPointF(d/2, 0));
         timer->start();
     }
     else if(pos.x() > canvas->width() - SENSITIVE_FRAME)
@@ -86,5 +85,4 @@ void IMouse::panCanvas(const QPoint& pos)
     }
 
     canvas->update();
-
 }
diff --git a/src/mouse/IMouse.h b/src/mouse/IMouse.h
index 9349619..b217abd 100644
--- a/src/mouse/IMouse.h
+++ b/src/mouse/IMouse.h
@@ -19,8 +19,8 @@
 #ifndef IMOUSE_H
 #define IMOUSE_H
 
-#include <QObject>
 #include <QCursor>
+#include <QObject>
 #include <QPointer>
 
 class QMouseEvent;
@@ -33,47 +33,54 @@ class CGisDraw;
 class IMouse : public QObject
 {
     Q_OBJECT
-    public:
-        IMouse(CGisDraw * gis, CCanvas * canvas);
-        virtual ~IMouse();
-
-        enum type_e
-        {
-            eNormal
-        };
-
-        virtual void draw(QPainter& p, bool needsRedraw, const QRect &rect) = 0;
-        virtual void mousePressEvent(QMouseEvent * e) = 0;
-        virtual void mouseMoveEvent(QMouseEvent * e) = 0;
-        virtual void mouseReleaseEvent(QMouseEvent *e) = 0;
-        virtual void mouseDoubleClickEvent(QMouseEvent *e){}
-        virtual void wheelEvent(QWheelEvent * e) = 0;
-        /// the current mouse cursor
-        /**
-            Each mouse function is represented by a special cursor. The main
-            widget uses this method to query the current cursor.
-        */
-        operator const QCursor&(){return cursor;}
-        CCanvas * getCanvas(){return canvas;}
-
-        virtual void setMouseTracking(bool enabled);
-
-    protected slots:
-        virtual void slotPanCanvas();
-
-    protected:
-        void panCanvas(const QPoint& pos);
-        /// the functions mouse icon
-        QCursor cursor;
-
-        QPointer<CGisDraw> gis;
-
-        QPointer<CCanvas>  canvas;
-        // the current point reported by the mouse events
-        QPoint point;
-
-        QTimer * timer;
-
+public:
+    IMouse(CGisDraw * gis, CCanvas * canvas);
+    virtual ~IMouse();
+
+    enum type_e
+    {
+        eNormal
+    };
+
+    virtual void draw(QPainter& p, bool needsRedraw, const QRect &rect) = 0;
+    virtual void mousePressEvent(QMouseEvent * e) = 0;
+    virtual void mouseMoveEvent(QMouseEvent * e) = 0;
+    virtual void mouseReleaseEvent(QMouseEvent *e) = 0;
+    virtual void mouseDoubleClickEvent(QMouseEvent *e)
+    {
+    }
+    virtual void wheelEvent(QWheelEvent * e) = 0;
+    /// the current mouse cursor
+    /**
+        Each mouse function is represented by a special cursor. The main
+        widget uses this method to query the current cursor.
+     */
+    operator const QCursor&()
+    {
+        return cursor;
+    }
+    CCanvas * getCanvas()
+    {
+        return canvas;
+    }
+
+    virtual void setMouseTracking(bool enabled);
+
+protected slots:
+    virtual void slotPanCanvas();
+
+protected:
+    void panCanvas(const QPoint& pos);
+    /// the functions mouse icon
+    QCursor cursor;
+
+    QPointer<CGisDraw> gis;
+
+    QPointer<CCanvas>  canvas;
+    // the current point reported by the mouse events
+    QPoint point;
+
+    QTimer * timer;
 };
 
 #endif //IMOUSE_H
diff --git a/src/mouse/IMouseEditLine.cpp b/src/mouse/IMouseEditLine.cpp
index 088c226..7b15c3f 100644
--- a/src/mouse/IMouseEditLine.cpp
+++ b/src/mouse/IMouseEditLine.cpp
@@ -16,22 +16,22 @@
 
 **********************************************************************************************/
 
-#include "mouse/IMouseEditLine.h"
-#include "mouse/CScrOptPoint.h"
-#include "mouse/CScrOptEditLine.h"
-#include "mouse/CScrOptRange.h"
-#include "gis/IGisLine.h"
+#include "GeoMath.h"
+#include "canvas/CCanvas.h"
 #include "gis/CGisDraw.h"
 #include "gis/CGisWidget.h"
-#include "canvas/CCanvas.h"
+#include "gis/IGisLine.h"
+#include "mouse/CScrOptEditLine.h"
+#include "mouse/CScrOptPoint.h"
+#include "mouse/CScrOptRange.h"
+#include "mouse/IMouseEditLine.h"
 #include "units/IUnit.h"
-#include "GeoMath.h"
 
 
 #include <QtWidgets>
 
 IMouseEditLine::IMouseEditLine(const QPointF& point, CGisDraw * gis, CCanvas * parent)
-    : IMouse(gis, parent)    
+    : IMouse(gis, parent)
     , state(eStateAddPointFwd)
     , idxFocus(0)
     , idxStart(-1)
@@ -39,7 +39,7 @@ IMouseEditLine::IMouseEditLine(const QPointF& point, CGisDraw * gis, CCanvas * p
 {
     // create a single point line
     coords1 << point;
-    line    << point;
+    line << point;
     gis->convertRad2Px(line);
 
     // start with adding trackpints imediately
@@ -58,8 +58,7 @@ IMouseEditLine::IMouseEditLine(IGisLine &src, CGisDraw *gis, CCanvas *parent)
     , idxFocus(-1)
     , idxStart(-1)
     , idxStop(-1)
-{        
-
+{
     src.getPolylineFromData(coords1);
     // calculate a pixel polyline from track coordinates
     line = coords1;
@@ -105,7 +104,7 @@ void IMouseEditLine::drawPointOfFocus(QPainter& p)
 void IMouseEditLine::drawBullets(const QPolygonF &l, QPainter& p)
 {
     QPixmap bullet("://icons/8x8/bullet_magenta.png");
-    foreach(const QPointF& pt, l)
+    foreach(const QPointF &pt, l)
     {
         p.drawPixmap(pt.x() - 3, pt.y() - 3, bullet);
     }
@@ -153,11 +152,11 @@ void IMouseEditLine::drawArrows(const QPolygonF &l, QPainter& p)
         QPointF( 0.0, 19.0)      //lower tail
     };
 
-    QPointF  pt, pt1, ptt;
+    QPointF pt, pt1, ptt;
 
     // draw direction arrows
-    bool    start = true;
-    qreal  heading;
+    bool start = true;
+    qreal heading;
 
     //generate arrow pic on-the-fly
     QImage arrow_pic(25,20, QImage::Format_ARGB32);
@@ -202,7 +201,6 @@ void IMouseEditLine::drawArrows(const QPolygonF &l, QPainter& p)
         }
         pt1 = pt;
     }
-
 }
 
 void IMouseEditLine::drawLeadLine(const QPolygonF &l, QPainter& p)
@@ -223,73 +221,75 @@ void IMouseEditLine::draw(QPainter& p, bool needsRedraw, const QRect &rect)
 
     switch(state)
     {
-        case eStateMoveMap:
-        case eStateIdle:
-        case eStatePointSelected:
-            drawArrows(line, p);
-            drawLine(line, p);            
-            drawBullets(line, p);
-            drawPointOfFocus(p);
-            break;
-
-        case eStateSelectRange:
-            drawArrows(line, p);
-            drawLine(line, p);            
-            drawHighlight1(p);
-            drawBullets(line, p);
-            drawPointOfFocus(p);
-            break;
-
-        case eStateRangeSelected:
-            drawArrows(line, p);
-            drawLine(line, p);            
-            drawHighlight2(p);
-            drawBullets(line, p);
-            drawPointOfFocus(p);
-            break;
-
-        case eStateMovePoint:
-            drawArrows(line, p);
-            drawLine(line, p);
-            drawBullets(line, p);
-            drawPointOfFocus(p);
-            break;
+    case eStateMoveMap:
+    case eStateIdle:
+    case eStatePointSelected:
+        drawArrows(line, p);
+        drawLine(line, p);
+        drawBullets(line, p);
+        drawPointOfFocus(p);
+        break;
+
+    case eStateSelectRange:
+        drawArrows(line, p);
+        drawLine(line, p);
+        drawHighlight1(p);
+        drawBullets(line, p);
+        drawPointOfFocus(p);
+        break;
+
+    case eStateRangeSelected:
+        drawArrows(line, p);
+        drawLine(line, p);
+        drawHighlight2(p);
+        drawBullets(line, p);
+        drawPointOfFocus(p);
+        break;
+
+    case eStateMovePoint:
+        drawArrows(line, p);
+        drawLine(line, p);
+        drawBullets(line, p);
+        drawPointOfFocus(p);
+        break;
+
+    case eStateAddPointFwd:
+    {
+        QPolygonF l;
+        if(subLinePixel.isEmpty())
+        {
+            l = line.mid(0, idxStart) + newLine + line.mid(idxStop, -1);
+        }
+        else
+        {
+            l = line.mid(0, idxStart) + newLine.mid(0, newLine.size() - 2) + subLinePixel + line.mid(idxStop, -1);
+        }
+        drawLeadLine(leadLinePixel, p);
+        drawArrows(l, p);
+        drawLine(l, p);
+        drawBullets(l, p);
+        break;
+    }
 
-        case eStateAddPointFwd:
+    case eStateAddPointBwd:
+    {
+        QPolygonF l;
+        if(subLinePixel.isEmpty())
         {
-            QPolygonF l;
-            if(subLinePixel.isEmpty())
-            {
-                l = line.mid(0, idxStart) + newLine + line.mid(idxStop, -1);
-            }
-            else
-            {
-                l = line.mid(0, idxStart) + newLine.mid(0, newLine.size() - 2) + subLinePixel + line.mid(idxStop, -1);
-            }
-            drawLeadLine(leadLinePixel, p);
-            drawArrows(l, p);
-            drawLine(l, p);            
-            drawBullets(l, p);
-            break;
+            l = line.mid(0, idxStart + 1) + newLine + line.mid(idxStop + 1, -1);
         }
-        case eStateAddPointBwd:
+        else
         {
-            QPolygonF l;
-            if(subLinePixel.isEmpty())
-            {
-                l = line.mid(0, idxStart + 1) + newLine + line.mid(idxStop + 1, -1);
-            }
-            else
-            {
-                l = line.mid(0, idxStart + 1) + subLinePixel + newLine.mid(2, -1) + line.mid(idxStop + 1, -1);
-            }
-            drawLeadLine(leadLinePixel, p);
-            drawArrows(l, p);
-            drawLine(l, p);
-            drawBullets(l, p);
-            break;
+            l = line.mid(0, idxStart + 1) + subLinePixel + newLine.mid(2, -1) + line.mid(idxStop + 1, -1);
         }
-        default:;
+        drawLeadLine(leadLinePixel, p);
+        drawArrows(l, p);
+        drawLine(l, p);
+        drawBullets(l, p);
+        break;
+    }
+
+    default:;
     }
 
 
@@ -310,366 +310,369 @@ void IMouseEditLine::mousePressEvent(QMouseEvent * e)
     {
         switch(state)
         {
+        case eStateSelectRange:
+            cursor  = cursor1;
+            QApplication::restoreOverrideCursor();
+            QApplication::setOverrideCursor(cursor);
+        //break; no break fall thru
 
-            case eStateSelectRange:                
-                cursor  = cursor1;
-                QApplication::restoreOverrideCursor();
-                QApplication::setOverrideCursor(cursor);
-                //break; no break fall thru
-
-            case eStateRangeSelected:
-                delete scrOptRange;
-
-                state       = eStateIdle;
-                idxFocus    = -1;
-                idxStart    = -1;
-                idxStop     = -1;
-                break;
-
-            case eStateMovePoint:
-                state       = eStateIdle;
-                idxFocus    = -1;
-                coords1     = save;
-                line        = coords1;
-                gis->convertRad2Px(line);
-                break;
+        case eStateRangeSelected:
+            delete scrOptRange;
 
-            case eStateAddPointBwd:
-            case eStateAddPointFwd:
-                if(QMessageBox::question(canvas, tr("Add points?"), tr("Add points to temporary line?"), QMessageBox::Yes|QMessageBox::No) == QMessageBox::Yes)
-                {
-                    if(state == eStateAddPointBwd)
-                    {
-                        // remove first point, which is the current moving point
-                        newCoords.pop_front();
-                        save = coords1.mid(0, idxStart + 1) + newCoords + coords1.mid(idxStop + 1, -1);
-                    }
+            state       = eStateIdle;
+            idxFocus    = -1;
+            idxStart    = -1;
+            idxStop     = -1;
+            break;
 
-                    if(state == eStateAddPointFwd)
-                    {
-                        // remove last point, which is the current moving point
-                        newCoords.pop_back();
-                        save = coords1.mid(0, idxStart) + newCoords + coords1.mid(idxStop, -1);
-                    }
+        case eStateMovePoint:
+            state       = eStateIdle;
+            idxFocus    = -1;
+            coords1     = save;
+            line        = coords1;
+            gis->convertRad2Px(line);
+            break;
 
+        case eStateAddPointBwd:
+        case eStateAddPointFwd:
+            if(QMessageBox::question(canvas, tr("Add points?"), tr("Add points to temporary line?"), QMessageBox::Yes|QMessageBox::No) == QMessageBox::Yes)
+            {
+                if(state == eStateAddPointBwd)
+                {
+                    // remove first point, which is the current moving point
+                    newCoords.pop_front();
+                    save = coords1.mid(0, idxStart + 1) + newCoords + coords1.mid(idxStop + 1, -1);
+                }
 
-                    coords1 = save;
-                    line    = coords1;
-                    gis->convertRad2Px(line);
+                if(state == eStateAddPointFwd)
+                {
+                    // remove last point, which is the current moving point
+                    newCoords.pop_back();
+                    save = coords1.mid(0, idxStart) + newCoords + coords1.mid(idxStop, -1);
                 }
 
-                state       = eStateIdle;
-                idxFocus    = -1;
-                idxStart    = -1;
-                idxStop     = -1;
 
-                cursor  = cursor1;
-                QApplication::restoreOverrideCursor();
-                QApplication::setOverrideCursor(cursor);
-                break;
+                coords1 = save;
+                line    = coords1;
+                gis->convertRad2Px(line);
+            }
+
+            state       = eStateIdle;
+            idxFocus    = -1;
+            idxStart    = -1;
+            idxStop     = -1;
+
+            cursor  = cursor1;
+            QApplication::restoreOverrideCursor();
+            QApplication::setOverrideCursor(cursor);
+            break;
 
-            default:
-                delete scrOptPoint;
-                delete scrOptRange;
+        default:
+            delete scrOptPoint;
+            delete scrOptRange;
 
-                state       = eStateIdle;
-                idxFocus    = -1;
-                idxStart    = -1;
-                idxStop     = -1;
-        }        
+            state       = eStateIdle;
+            idxFocus    = -1;
+            idxStart    = -1;
+            idxStop     = -1;
+        }
     }
     else if(e->button() == Qt::LeftButton)
     {
         switch(state)
         {
-            case eStateIdle:
+        case eStateIdle:
+        {
+            if(idxFocus >= 0)
             {
-                if(idxFocus >= 0)
-                {
-                    scrOptPoint = new CScrOptPoint(line[idxFocus], canvas);
+                scrOptPoint = new CScrOptPoint(line[idxFocus], canvas);
 
-                    // set icon for add points towards start (backward/eStateAddPointBwd)
-                    if(idxFocus == 0)
+                // set icon for add points towards start (backward/eStateAddPointBwd)
+                if(idxFocus == 0)
+                {
+                    // point is first of line
+                    qreal a1, a2;
+                    if(coords1.size() > 1)
                     {
-                        // point is first of line
-                        qreal a1, a2;
-                        if(coords1.size() > 1)
-                        {
-                            const QPointF& pt1 = coords1[idxFocus];
-                            const QPointF& pt2 = coords1[idxFocus + 1];
-                            GPS_Math_Distance(pt1.x(), pt1.y(), pt2.x(), pt2.y(), a1, a2);
-                        }
-                        else
-                        {
-                            // only one point in the line
-                            a1 = 90;
-                        }
-
-                        QPixmap pix("://icons/32x32/ToTop.png");
-                        QTransform trans;
-                        trans.rotate(a1 + 180);
-
-                        pix = pix.transformed(trans, Qt::SmoothTransformation);
-
-                        scrOptPoint->toolAdd1->setIcon(pix);
+                        const QPointF& pt1 = coords1[idxFocus];
+                        const QPointF& pt2 = coords1[idxFocus + 1];
+                        GPS_Math_Distance(pt1.x(), pt1.y(), pt2.x(), pt2.y(), a1, a2);
                     }
                     else
                     {
-                        // point in the middle of the line
-                        qreal a1, a2;
-                        const QPointF& pt1 = coords1[idxFocus];
-                        const QPointF& pt2 = coords1[idxFocus - 1];
-                        GPS_Math_Distance(pt1.x(), pt1.y(), pt2.x(), pt2.y(), a1, a2);
-
-                        QPixmap pix("://icons/32x32/Up.png");
-                        QTransform trans;
-                        trans.rotate(a1);
-
-                        pix = pix.transformed(trans, Qt::SmoothTransformation);
-
-                        scrOptPoint->toolAdd1->setIcon(pix);
+                        // only one point in the line
+                        a1 = 90;
                     }
 
-                    // set icon for add points towards end (forward/eStateAddPointFwd)
-                    if(idxFocus == (line.size() - 1))
-                    {
-                        // point is last of line
-                        qreal a1, a2;
-                        if(coords1.size() > 1)
-                        {
-                            const QPointF& pt1 = coords1[idxFocus];
-                            const QPointF& pt2 = coords1[idxFocus - 1];
-                            GPS_Math_Distance(pt1.x(), pt1.y(), pt2.x(), pt2.y(), a1, a2);
-                        }
-                        else
-                        {
-                            // only one point in the line
-                            a1 = -90;
-                        }
+                    QPixmap pix("://icons/32x32/ToTop.png");
+                    QTransform trans;
+                    trans.rotate(a1 + 180);
 
-                        QPixmap pix("://icons/32x32/ToTop.png");
-                        QTransform trans;
-                        trans.rotate(a1 + 180);
+                    pix = pix.transformed(trans, Qt::SmoothTransformation);
 
-                        pix = pix.transformed(trans, Qt::SmoothTransformation);
+                    scrOptPoint->toolAdd1->setIcon(pix);
+                }
+                else
+                {
+                    // point in the middle of the line
+                    qreal a1, a2;
+                    const QPointF& pt1 = coords1[idxFocus];
+                    const QPointF& pt2 = coords1[idxFocus - 1];
+                    GPS_Math_Distance(pt1.x(), pt1.y(), pt2.x(), pt2.y(), a1, a2);
 
-                        scrOptPoint->toolAdd2->setIcon(pix);
+                    QPixmap pix("://icons/32x32/Up.png");
+                    QTransform trans;
+                    trans.rotate(a1);
 
+                    pix = pix.transformed(trans, Qt::SmoothTransformation);
 
-                    }
-                    else
+                    scrOptPoint->toolAdd1->setIcon(pix);
+                }
+
+                // set icon for add points towards end (forward/eStateAddPointFwd)
+                if(idxFocus == (line.size() - 1))
+                {
+                    // point is last of line
+                    qreal a1, a2;
+                    if(coords1.size() > 1)
                     {
-                        // point in the middle of the line
-                        qreal a1, a2;
                         const QPointF& pt1 = coords1[idxFocus];
-                        const QPointF& pt2 = coords1[idxFocus + 1];
+                        const QPointF& pt2 = coords1[idxFocus - 1];
                         GPS_Math_Distance(pt1.x(), pt1.y(), pt2.x(), pt2.y(), a1, a2);
-
-                        QPixmap pix("://icons/32x32/Up.png");
-                        QTransform trans;
-                        trans.rotate(a1);
-
-                        pix = pix.transformed(trans, Qt::SmoothTransformation);
-
-                        scrOptPoint->toolAdd2->setIcon(pix);
-
                     }
+                    else
+                    {
+                        // only one point in the line
+                        a1 = -90;
+                    }
+
+                    QPixmap pix("://icons/32x32/ToTop.png");
+                    QTransform trans;
+                    trans.rotate(a1 + 180);
 
-                    connect(scrOptPoint->toolDelete, SIGNAL(clicked()), this, SLOT(slotDeletePoint()));
-                    connect(scrOptPoint->toolSelectRange, SIGNAL(clicked()), this, SLOT(slotSelectRange()));
-                    connect(scrOptPoint->toolMove, SIGNAL(clicked()), this, SLOT(slotMovePoint()));
-                    connect(scrOptPoint->toolAdd1, SIGNAL(clicked()), this, SLOT(slotAddPoint1()));
-                    connect(scrOptPoint->toolAdd2, SIGNAL(clicked()), this, SLOT(slotAddPoint2()));
+                    pix = pix.transformed(trans, Qt::SmoothTransformation);
 
-                    state = eStatePointSelected;
+                    scrOptPoint->toolAdd2->setIcon(pix);
                 }
                 else
                 {
-                    state = eStateMoveMap;
-                }
-                break;
-            }
-            case eStateSelectRange:
-            {
-                state   = eStateRangeSelected;
-                idxStop = idxFocus;
+                    // point in the middle of the line
+                    qreal a1, a2;
+                    const QPointF& pt1 = coords1[idxFocus];
+                    const QPointF& pt2 = coords1[idxFocus + 1];
+                    GPS_Math_Distance(pt1.x(), pt1.y(), pt2.x(), pt2.y(), a1, a2);
 
-                scrOptRange = new CScrOptRange(line[idxStop], canvas);
-                connect(scrOptRange->toolDelete, SIGNAL(clicked()), this, SLOT(slotDeleteRange()));
+                    QPixmap pix("://icons/32x32/Up.png");
+                    QTransform trans;
+                    trans.rotate(a1);
 
-                cursor  = cursor1;
-                QApplication::restoreOverrideCursor();
-                QApplication::setOverrideCursor(cursor);
-                break;
-            }
-            case eStateAddPointFwd:
-            {
-                if(!subLineCoord.isEmpty())
-                {
-                    newLine.pop_back();
-                    newLine.pop_back();
-                    newLine     = newLine + subLinePixel;
-                    newCoords.pop_back();
-                    newCoords.pop_back();
-                    newCoords   = newCoords + subLineCoord;
+                    pix = pix.transformed(trans, Qt::SmoothTransformation);
 
-                    subLineCoord.clear();
-                    subLinePixel.clear();
+                    scrOptPoint->toolAdd2->setIcon(pix);
                 }
-                newLine.append(newLine.last());
-                newCoords.append(newCoords.last());
-                idxFocus = newLine.size() - 1;
-                break;
-            }
-            case eStateAddPointBwd:
-            {
-                if(!subLineCoord.isEmpty())
-                {
-                    newLine.pop_front();
-                    newLine.pop_front();
-                    newLine = subLinePixel + newLine;
-                    newCoords.pop_front();
-                    newCoords.pop_front();
-                    newCoords = subLineCoord + newCoords;
 
-                    subLineCoord.clear();
-                    subLinePixel.clear();
-                }
+                connect(scrOptPoint->toolDelete, SIGNAL(clicked()), this, SLOT(slotDeletePoint()));
+                connect(scrOptPoint->toolSelectRange, SIGNAL(clicked()), this, SLOT(slotSelectRange()));
+                connect(scrOptPoint->toolMove, SIGNAL(clicked()), this, SLOT(slotMovePoint()));
+                connect(scrOptPoint->toolAdd1, SIGNAL(clicked()), this, SLOT(slotAddPoint1()));
+                connect(scrOptPoint->toolAdd2, SIGNAL(clicked()), this, SLOT(slotAddPoint2()));
 
-                newLine.prepend(newLine.first());
-                newCoords.prepend(newCoords.first());
-                idxFocus = 0;
-                break;
+                state = eStatePointSelected;
             }
-            default:
+            else
             {
-                delete scrOptPoint;
-                delete scrOptRange;
-
-                state       = eStateIdle;
-                idxFocus    = -1;
-                idxStart    = -1;
-                idxStop     = -1;
+                state = eStateMoveMap;
             }
+            break;
         }
-    }
-    canvas->update();
-}
-
-void IMouseEditLine::mouseMoveEvent(QMouseEvent * e)
-{
-    point  = e->pos();    
 
-    switch(state)
-    {
-        case eStateIdle:
+        case eStateSelectRange:
         {
-            int old = idxFocus;
-            idxFocus = getPointCloseBy(point);
-            if(old != idxFocus)
-            {
-                canvas->update();
-            }
+            state   = eStateRangeSelected;
+            idxStop = idxFocus;
+
+            scrOptRange = new CScrOptRange(line[idxStop], canvas);
+            connect(scrOptRange->toolDelete, SIGNAL(clicked()), this, SLOT(slotDeleteRange()));
+
+            cursor  = cursor1;
+            QApplication::restoreOverrideCursor();
+            QApplication::setOverrideCursor(cursor);
             break;
         }
-        case eStateSelectRange:
+
+        case eStateAddPointFwd:
         {
-            if(!scrOptEditLine->rect().contains(point))
+            if(!subLineCoord.isEmpty())
             {
-                panCanvas(point);
+                newLine.pop_back();
+                newLine.pop_back();
+                newLine     = newLine + subLinePixel;
+                newCoords.pop_back();
+                newCoords.pop_back();
+                newCoords   = newCoords + subLineCoord;
+
+                subLineCoord.clear();
+                subLinePixel.clear();
             }
+            newLine.append(newLine.last());
+            newCoords.append(newCoords.last());
+            idxFocus = newLine.size() - 1;
+            break;
+        }
 
-            int old = idxFocus;
-            idxFocus = getPointCloseBy(point);
-
-            if(idxFocus < 0)
+        case eStateAddPointBwd:
+        {
+            if(!subLineCoord.isEmpty())
             {
-                idxFocus = old;
+                newLine.pop_front();
+                newLine.pop_front();
+                newLine = subLinePixel + newLine;
+                newCoords.pop_front();
+                newCoords.pop_front();
+                newCoords = subLineCoord + newCoords;
+
+                subLineCoord.clear();
+                subLinePixel.clear();
             }
 
-            if(old != idxFocus)
-            {
-                canvas->update();
-            }
+            newLine.prepend(newLine.first());
+            newCoords.prepend(newCoords.first());
+            idxFocus = 0;
             break;
         }
-        case eStateMovePoint:
+
+        default:
         {
-            panCanvas(point);
+            delete scrOptPoint;
+            delete scrOptRange;
 
-            QPointF pt      = point;
-            line[idxFocus]  = pt;
-            gis->convertPx2Rad(pt);
-            coords1[idxFocus]  = pt;
+            state       = eStateIdle;
+            idxFocus    = -1;
+            idxStart    = -1;
+            idxStop     = -1;
+        }
+        }
+    }
+    canvas->update();
+}
 
+void IMouseEditLine::mouseMoveEvent(QMouseEvent * e)
+{
+    point  = e->pos();
+
+    switch(state)
+    {
+    case eStateIdle:
+    {
+        int old = idxFocus;
+        idxFocus = getPointCloseBy(point);
+        if(old != idxFocus)
+        {
             canvas->update();
-            break;
         }
-        case eStateAddPointBwd:
-        case eStateAddPointFwd:
+        break;
+    }
+
+    case eStateSelectRange:
+    {
+        if(!scrOptEditLine->rect().contains(point))
         {
             panCanvas(point);
+        }
 
-            QPointF pt          = point;
-            newLine[idxFocus]   = pt;
-            gis->convertPx2Rad(pt);
-            newCoords[idxFocus] = pt;
+        int old = idxFocus;
+        idxFocus = getPointCloseBy(point);
 
+        if(idxFocus < 0)
+        {
+            idxFocus = old;
+        }
 
-            leadLineCoord.clear();
-            leadLinePixel.clear();
-            subLinePixel.clear();
-            subLineCoord.clear();
+        if(old != idxFocus)
+        {
+            canvas->update();
+        }
+        break;
+    }
 
+    case eStateMovePoint:
+    {
+        panCanvas(point);
 
-            // find polyline to snap
-            QPointF px1;
-            QPointF px2;
-            if(newLine.size() > 1)
-            {                
-                px1 = state == eStateAddPointFwd ? newLine[idxFocus - 1] : newLine[1];
-                px2 = newLine[idxFocus];
-            }
+        QPointF pt      = point;
+        line[idxFocus]  = pt;
+        gis->convertPx2Rad(pt);
+        coords1[idxFocus]  = pt;
 
-            if(canvas->findPolylineCloseBy(px2, px2, 10, leadLineCoord))
-            {
+        canvas->update();
+        break;
+    }
 
-                leadLinePixel = leadLineCoord;
-                gis->convertRad2Px(leadLinePixel);
+    case eStateAddPointBwd:
+    case eStateAddPointFwd:
+    {
+        panCanvas(point);
 
-                segment_t result;
-                GPS_Math_SubPolyline(px1, px2, 10, leadLinePixel, result);
-                result.apply(leadLineCoord, leadLinePixel, subLineCoord, subLinePixel, gis);
+        QPointF pt          = point;
+        newLine[idxFocus]   = pt;
+        gis->convertPx2Rad(pt);
+        newCoords[idxFocus] = pt;
 
-                if(state == eStateAddPointBwd)
-                {
-                    QPolygonF tmp1;
-                    QPolygonF tmp2;
-                    for(int i = 0; i < subLineCoord.size(); i++)
-                    {
-                        tmp1.push_front(subLineCoord[i]);
-                        tmp2.push_front(subLinePixel[i]);
-                    }
-                    subLineCoord = tmp1;
-                    subLinePixel = tmp2;
-                }
-            }
 
+        leadLineCoord.clear();
+        leadLinePixel.clear();
+        subLinePixel.clear();
+        subLineCoord.clear();
 
-            canvas->update();
-            break;
 
+        // find polyline to snap
+        QPointF px1;
+        QPointF px2;
+        if(newLine.size() > 1)
+        {
+            px1 = state == eStateAddPointFwd ? newLine[idxFocus - 1] : newLine[1];
+            px2 = newLine[idxFocus];
         }
-        case eStateMoveMap:
+
+        if(canvas->findPolylineCloseBy(px2, px2, 10, leadLineCoord))
         {
-            if(point != lastPoint)
+            leadLinePixel = leadLineCoord;
+            gis->convertRad2Px(leadLinePixel);
+
+            segment_t result;
+            GPS_Math_SubPolyline(px1, px2, 10, leadLinePixel, result);
+            result.apply(leadLineCoord, leadLinePixel, subLineCoord, subLinePixel, gis);
+
+            if(state == eStateAddPointBwd)
             {
-                QPoint delta = point - lastPoint;
-                canvas->moveMap(delta);
+                QPolygonF tmp1;
+                QPolygonF tmp2;
+                for(int i = 0; i < subLineCoord.size(); i++)
+                {
+                    tmp1.push_front(subLineCoord[i]);
+                    tmp2.push_front(subLinePixel[i]);
+                }
+                subLineCoord = tmp1;
+                subLinePixel = tmp2;
             }
-            break;
         }
-        default:;
+
+
+        canvas->update();
+        break;
+    }
+
+    case eStateMoveMap:
+    {
+        if(point != lastPoint)
+        {
+            QPoint delta = point - lastPoint;
+            canvas->moveMap(delta);
+        }
+        break;
+    }
+
+    default:;
     }
 
     lastPoint = point;
@@ -696,8 +699,8 @@ int IMouseEditLine::getPointCloseBy(const QPoint& screenPos)
 {
     qint32 i    = 0;
     qint32 idx  = -1;
-    qint32  d   = NOINT;
-    foreach(const QPointF& point, line)
+    qint32 d   = NOINT;
+    foreach(const QPointF &point, line)
     {
         int tmp = (screenPos - point).manhattanLength();
         if(tmp < d)
@@ -708,7 +711,10 @@ int IMouseEditLine::getPointCloseBy(const QPoint& screenPos)
         i++;
     }
 
-    if(d > 40) idx = -1;
+    if(d > 40)
+    {
+        idx = -1;
+    }
 
     return idx;
 }
@@ -744,7 +750,6 @@ void IMouseEditLine::slotSelectRange()
     cursor  = QCursor(QPixmap(":/cursors/cursorSelectRange.png"),0,0);
     QApplication::restoreOverrideCursor();
     QApplication::setOverrideCursor(cursor);
-
 }
 
 void IMouseEditLine::slotDeleteRange()
@@ -800,9 +805,9 @@ void IMouseEditLine::slotAddPoint1()
         added twice. The first time as fixed starting point of the tmeporary
         newLine. And the second time as initial point to be moved by the mouse.
 
-    */
+     */
     newCoords << coords1[idxFocus]  << coords1[idxFocus];
-    newLine   << line[idxFocus]     << line[idxFocus];
+    newLine << line[idxFocus]     << line[idxFocus];
 
     // mark gap to insert points
     idxStart = idxFocus - 1;
@@ -840,9 +845,9 @@ void IMouseEditLine::slotAddPoint2()
         added twice. The first time as fixed starting point of the tmeporary
         newLine. And the second time as initial point to be moved by the mouse.
 
-    */
+     */
     newCoords << coords1[idxFocus]  << coords1[idxFocus];
-    newLine   << line[idxFocus]     << line[idxFocus];
+    newLine << line[idxFocus]     << line[idxFocus];
 
     // mark gap to insert points
     idxStart = idxFocus;
@@ -867,7 +872,7 @@ void IMouseEditLine::slotAbort()
 }
 
 void IMouseEditLine::slotCopyToOrig()
-{    
+{
     if(coords1.size() < 2)
     {
         return;
diff --git a/src/mouse/IMouseEditLine.h b/src/mouse/IMouseEditLine.h
index 03c698a..17793af 100644
--- a/src/mouse/IMouseEditLine.h
+++ b/src/mouse/IMouseEditLine.h
@@ -20,8 +20,8 @@
 #define IMOUSEEDITLINE_H
 
 #include "mouse/IMouse.h"
-#include <QPolygonF>
 #include <QPointer>
+#include <QPolygonF>
 
 class CGisDraw;
 class CCanvas;
@@ -30,122 +30,121 @@ class CScrOptPoint;
 class CScrOptEditLine;
 class CScrOptRange;
 
-class IMouseEditLine  : public IMouse
+class IMouseEditLine : public IMouse
 {
     Q_OBJECT
-    public:
-        /**
-           @brief Start to create a new track with given point as first track point
-           @param point     the starting point
-           @param gis       the draw context to use
-           @param parent    the canvas to use
-         */
-        IMouseEditLine(const QPointF& point, CGisDraw * gis, CCanvas * parent);
-        /**
-           @brief Edit an existing track
-           @param trk       the track to edit
-           @param gis       the draw context to use
-           @param parent    the canvas to use
-         */
-        IMouseEditLine(IGisLine &src, CGisDraw * gis, CCanvas * parent);
-        virtual ~IMouseEditLine();
-
-        void draw(QPainter& p,  bool needsRedraw, const QRect &rect);
-        void mousePressEvent(QMouseEvent * e);
-        void mouseMoveEvent(QMouseEvent * e);
-        void mouseReleaseEvent(QMouseEvent *e);
-        void wheelEvent(QWheelEvent * e);
-
-    protected slots:
-        /**
-           @brief Delete the selected point
-         */
-        void slotDeletePoint();
-        /**
-           @brief Start to select a range of points
-         */
-        void slotSelectRange();
-        /**
-           @brief Delete selected range of points
-         */
-        void slotDeleteRange();
-        /**
-           @brief Move selected point
-         */
-        void slotMovePoint();
-        /**
-           @brief Add points in direction start of track (eStateAddPointBwd)
-         */
-        void slotAddPoint1();
-        /**
-           @brief Add points in direction end of track (eStateAddPointFwd)
-         */
-        void slotAddPoint2();
-
-
-        virtual void slotAbort();
-        virtual void slotCopyToOrig();
-        virtual void slotCopyToNew() = 0;
-
-    protected:
-        virtual void drawLine(const QPolygonF& l, QPainter& p);
-        /**
-           @brief Get access to the IGisLine object a subclass of IMouseEditLine is handling.
-           @return A valid pointer or 0.
-         */
-        virtual IGisLine * getGisLine() = 0;
-        /// shadow cursor needed to restore cursor after some actions providing their own cursor.
-        QCursor     cursor1;
-        /// the line's coordinates in [rad]
-        QPolygonF   coords1;
-
-    private:        
-        void drawPointOfFocus(QPainter& p);
-        void drawBullets(const QPolygonF& l, QPainter& p);
-        void drawHighlight1(QPainter& p);
-        void drawHighlight2(QPainter& p);
-        void drawArrows(const QPolygonF &l, QPainter& p);
-        void drawLeadLine(const QPolygonF &l, QPainter& p);
-        int getPointCloseBy(const QPoint& screenPos);
-
-        /// backup for coord1
-        QPolygonF   save;
-        /// the line's coordinates in [pixel]
-        QPolygonF   line;
-
-        /// the temporary line of new point to add [rad]
-        QPolygonF   newCoords;
-        /// the temporary line of new point to add [pixel]
-        QPolygonF   newLine;
-
-        enum state_e
-        {
-             eStateIdle
-            ,eStatePointSelected
-            ,eStateSelectRange
-            ,eStateRangeSelected
-            ,eStateMovePoint
-            ,eStateAddPointBwd
-            ,eStateAddPointFwd
-            ,eStateMoveMap
-
-        };
-
-        state_e state;
-        qint32 idxFocus;
-        qint32 idxStart;
-        qint32 idxStop;
-
-        QPointer<CScrOptPoint> scrOptPoint;
-        QPointer<CScrOptRange> scrOptRange;
-        CScrOptEditLine * scrOptEditLine;
-
-        QPoint lastPoint;
-
-        QPolygonF leadLineCoord;
-        QPolygonF leadLinePixel;
-        QPolygonF subLineCoord;
-        QPolygonF subLinePixel;
+public:
+    /**
+       @brief Start to create a new track with given point as first track point
+       @param point     the starting point
+       @param gis       the draw context to use
+       @param parent    the canvas to use
+     */
+    IMouseEditLine(const QPointF& point, CGisDraw * gis, CCanvas * parent);
+    /**
+       @brief Edit an existing track
+       @param trk       the track to edit
+       @param gis       the draw context to use
+       @param parent    the canvas to use
+     */
+    IMouseEditLine(IGisLine &src, CGisDraw * gis, CCanvas * parent);
+    virtual ~IMouseEditLine();
+
+    void draw(QPainter& p,  bool needsRedraw, const QRect &rect);
+    void mousePressEvent(QMouseEvent * e);
+    void mouseMoveEvent(QMouseEvent * e);
+    void mouseReleaseEvent(QMouseEvent *e);
+    void wheelEvent(QWheelEvent * e);
+
+protected slots:
+    /**
+       @brief Delete the selected point
+     */
+    void slotDeletePoint();
+    /**
+       @brief Start to select a range of points
+     */
+    void slotSelectRange();
+    /**
+       @brief Delete selected range of points
+     */
+    void slotDeleteRange();
+    /**
+       @brief Move selected point
+     */
+    void slotMovePoint();
+    /**
+       @brief Add points in direction start of track (eStateAddPointBwd)
+     */
+    void slotAddPoint1();
+    /**
+       @brief Add points in direction end of track (eStateAddPointFwd)
+     */
+    void slotAddPoint2();
+
+
+    virtual void slotAbort();
+    virtual void slotCopyToOrig();
+    virtual void slotCopyToNew() = 0;
+
+protected:
+    virtual void drawLine(const QPolygonF& l, QPainter& p);
+    /**
+       @brief Get access to the IGisLine object a subclass of IMouseEditLine is handling.
+       @return A valid pointer or 0.
+     */
+    virtual IGisLine * getGisLine() = 0;
+    /// shadow cursor needed to restore cursor after some actions providing their own cursor.
+    QCursor cursor1;
+    /// the line's coordinates in [rad]
+    QPolygonF coords1;
+
+private:
+    void drawPointOfFocus(QPainter& p);
+    void drawBullets(const QPolygonF& l, QPainter& p);
+    void drawHighlight1(QPainter& p);
+    void drawHighlight2(QPainter& p);
+    void drawArrows(const QPolygonF &l, QPainter& p);
+    void drawLeadLine(const QPolygonF &l, QPainter& p);
+    int getPointCloseBy(const QPoint& screenPos);
+
+    /// backup for coord1
+    QPolygonF save;
+    /// the line's coordinates in [pixel]
+    QPolygonF line;
+
+    /// the temporary line of new point to add [rad]
+    QPolygonF newCoords;
+    /// the temporary line of new point to add [pixel]
+    QPolygonF newLine;
+
+    enum state_e
+    {
+        eStateIdle
+        ,eStatePointSelected
+        ,eStateSelectRange
+        ,eStateRangeSelected
+        ,eStateMovePoint
+        ,eStateAddPointBwd
+        ,eStateAddPointFwd
+        ,eStateMoveMap
+    };
+
+    state_e state;
+    qint32 idxFocus;
+    qint32 idxStart;
+    qint32 idxStop;
+
+    QPointer<CScrOptPoint> scrOptPoint;
+    QPointer<CScrOptRange> scrOptRange;
+    CScrOptEditLine * scrOptEditLine;
+
+    QPoint lastPoint;
+
+    QPolygonF leadLineCoord;
+    QPolygonF leadLinePixel;
+    QPolygonF subLineCoord;
+    QPolygonF subLinePixel;
 };
 
 #endif //IMOUSEEDITLINE_H
diff --git a/src/mouse/IScrOpt.cpp b/src/mouse/IScrOpt.cpp
index e3b4eb0..d0bc7ab 100644
--- a/src/mouse/IScrOpt.cpp
+++ b/src/mouse/IScrOpt.cpp
@@ -16,8 +16,8 @@
 
 **********************************************************************************************/
 
-#include "mouse/IScrOpt.h"
 #include "canvas/CCanvas.h"
+#include "mouse/IScrOpt.h"
 #include "units/IUnit.h"
 #include <QtWidgets>
 
@@ -25,12 +25,10 @@
 IScrOpt::IScrOpt(QWidget *parent)
     : QWidget(parent)
 {
-
 }
 
 IScrOpt::~IScrOpt()
 {
-
 }
 
 
diff --git a/src/mouse/IScrOpt.h b/src/mouse/IScrOpt.h
index c9579c1..664a76d 100644
--- a/src/mouse/IScrOpt.h
+++ b/src/mouse/IScrOpt.h
@@ -19,9 +19,9 @@
 #ifndef ISCROPT_H
 #define ISCROPT_H
 
-#include <QWidget>
 #include <QPixmap>
 #include <QRect>
+#include <QWidget>
 
 class QMouseEvent;
 
@@ -29,26 +29,30 @@ class QMouseEvent;
 
 class IScrOpt : public QWidget
 {
-    public:
-        IScrOpt(QWidget * parent);
-        virtual ~IScrOpt();
-
-
-        void setOrigin(const QPoint& pos){origin = pos;}
-        const QPoint& getOrigin(){return origin;}
+public:
+    IScrOpt(QWidget * parent);
+    virtual ~IScrOpt();
 
-        virtual void draw(QPainter& p) = 0;
-        virtual void mouseMoveEvent(QMouseEvent *);
 
-    protected:
-        void drawBubble1(const QPointF &pt, QPainter& p);
-        void drawBubble2(const QPointF &pt, QPainter& p);
+    void setOrigin(const QPoint& pos)
+    {
+        origin = pos;
+    }
+    const QPoint& getOrigin()
+    {
+        return origin;
+    }
 
-        QPoint origin;
+    virtual void draw(QPainter& p) = 0;
+    virtual void mouseMoveEvent(QMouseEvent *);
 
-        QPoint mousePos;
+protected:
+    void drawBubble1(const QPointF &pt, QPainter& p);
+    void drawBubble2(const QPointF &pt, QPainter& p);
 
+    QPoint origin;
 
+    QPoint mousePos;
 };
 
 #endif //ISCROPT_H
diff --git a/src/plot/CPlotAxis.cpp b/src/plot/CPlotAxis.cpp
index 3a40852..e358199 100644
--- a/src/plot/CPlotAxis.cpp
+++ b/src/plot/CPlotAxis.cpp
@@ -20,28 +20,33 @@
 
 #include <QtWidgets>
 
-inline qreal qLog10(qreal x){return qLn(x)/qLn(10);}
+inline qreal qLog10(qreal x)
+{
+    return qLn(x)/qLn(10);
+}
 
 CPlotAxis::CPlotAxis( QObject * parent )
-: QObject( parent )
-, initialized( false )
-, autoscale( false )
-, scale( 1.0 )
-, usedMin( 0.0 )
-, usedMax( 0.0 )
-, limitMin( 0.0 )
-, limitMax( 0.0 )
-, interval( 0.0 )
-, ticStart( 0 )
-, scaleWidth( 0 )
-, ticType( eTicNorm )
-, firstTic( false )
-, lastTic( false )
-, points(0)
-{}
+    : QObject( parent )
+    , initialized( false )
+    , autoscale( false )
+    , scale( 1.0 )
+    , usedMin( 0.0 )
+    , usedMax( 0.0 )
+    , limitMin( 0.0 )
+    , limitMax( 0.0 )
+    , interval( 0.0 )
+    , ticStart( 0 )
+    , scaleWidth( 0 )
+    , ticType( eTicNorm )
+    , firstTic( false )
+    , lastTic( false )
+    , points(0)
+{
+}
 
 CPlotAxis::~CPlotAxis()
-{}
+{
+}
 
 void CPlotAxis::setLimits(qreal min, qreal max)
 {
@@ -81,7 +86,6 @@ void CPlotAxis::setMinMax( qreal givenMin, qreal givenMax )
     calc();
 
     initialized = true;
-
 }
 
 
@@ -94,19 +98,33 @@ void CPlotAxis::calc()
     qreal residue = tmp - exponent;
 
     if ( residue < 0 && residue <= qLog10( 0.1 ) )
+    {
         residue = qLog10( 0.1 );
+    }
     else if ( residue > qLog10( 0.1 ) && residue <= qLog10( 0.2 ) )
+    {
         residue = qLog10( 0.2 );
+    }
     else if ( residue > qLog10( 0.2 ) && residue <= qLog10( 0.5 ) )
+    {
         residue = qLog10( 0.5 );
+    }
     else if ( residue > qLog10( 0.5 ) && residue <= qLog10( 1.0 ) )
+    {
         residue = qLog10( 1.0 );
+    }
     else if ( residue > qLog10( 1.0 ) && residue <= qLog10( 2.0 ) )
+    {
         residue = qLog10( 2.0 );
+    }
     else if ( residue > qLog10( 2.0 ) && residue <= qLog10( 5.0 ) )
+    {
         residue = qLog10( 5.0 );
+    }
     else if ( residue > qLog10( 5.0 ) && residue <= qLog10( 10. ) )
+    {
         residue = qLog10( 10. );
+    }
 
     interval = exponent + residue;
     interval = qPow( 10, interval );
@@ -140,7 +158,10 @@ const QString CPlotAxis::fmtsgl( qreal val )
 
     if ( val != 0 )
     {
-        if ( val < 0 ) val = -val;
+        if ( val < 0 )
+        {
+            val = -val;
+        }
         tmp = qLog10( val );
         exponent = ( int ) tmp;
         residue = tmp - exponent;
@@ -160,8 +181,14 @@ const QString CPlotAxis::fmtsgl( qreal val )
         if ( exponent >= 0 )
         {
             f = "%" + QString( "%1" ).arg( ( int ) ( exponent + 1 ) );
-            if ( ( exponent == 0 ) && ( residue < 0 ) ) f += ".1f";
-            else f += ".0f";
+            if ( ( exponent == 0 ) && ( residue < 0 ) )
+            {
+                f += ".1f";
+            }
+            else
+            {
+                f += ".0f";
+            }
         }
         else
         {
@@ -174,21 +201,21 @@ const QString CPlotAxis::fmtsgl( qreal val )
 
 
 /**
-  Generates a sprintf style format string for a given value.
-  <pre>
-  0.001   -> "%1.4f"
-  0.01    -> "%1.3f"
-  0.1     -> "%1.2f"
-  1       -> "%1.1f"
-  10      -> "%2.1f"
-  >10000 scientific notation "%1.3e"
-  </pre>
+   Generates a sprintf style format string for a given value.
+   <pre>
+   0.001   -> "%1.4f"
+   0.01    -> "%1.3f"
+   0.1     -> "%1.2f"
+   1       -> "%1.1f"
+   10      -> "%2.1f"
+   >10000 scientific notation "%1.3e"
+   </pre>
 
-  @param val value to calculate the string on
+   @param val value to calculate the string on
 
-  @return a zero terminated format string
+   @return a zero terminated format string
 
-*/
+ */
 const QString CPlotAxis::fmtdbl( qreal val )
 {
     static QString f;
@@ -198,7 +225,10 @@ const QString CPlotAxis::fmtdbl( qreal val )
 
     if ( val != 0 )
     {
-        if ( val < 0 ) val = -val;
+        if ( val < 0 )
+        {
+            val = -val;
+        }
         tmp = qLog10( val );
         exponent = ( int ) tmp;
         residue = tmp - exponent;
@@ -218,8 +248,14 @@ const QString CPlotAxis::fmtdbl( qreal val )
         if ( exponent >= 0 )
         {
             f = "%" + QString( "%1" ).arg( ( int ) ( exponent + 1 ) );
-            if ( ( exponent == 0 ) && ( residue < 0 ) ) f += ".2f";
-            else f += ".1f";
+            if ( ( exponent == 0 ) && ( residue < 0 ) )
+            {
+                f += ".2f";
+            }
+            else
+            {
+                f += ".1f";
+            }
         }
         else
         {
@@ -232,8 +268,10 @@ const QString CPlotAxis::fmtdbl( qreal val )
 
 int CPlotAxis::getScaleWidth( const QFontMetrics& m )
 {
-
-    if ( scaleWidth > 0 ) return scaleWidth * m.width( " " );
+    if ( scaleWidth > 0 )
+    {
+        return scaleWidth * m.width( " " );
+    }
 
     int width = 0;
     int tmp;
@@ -243,7 +281,10 @@ int CPlotAxis::getScaleWidth( const QFontMetrics& m )
     while ( t )
     {
         tmp = m.width( QString().sprintf( format_single_prec.toLatin1().data(), t->val ) );
-        if ( tmp > width ) width = tmp;
+        if ( tmp > width )
+        {
+            width = tmp;
+        }
         t = ticmark( t );
     }
     return width;
@@ -265,73 +306,73 @@ const CPlotAxis::tic_t* CPlotAxis::ticmark( const tic_t * t )
 
     switch ( ticType )
     {
-        case eNoTic:
-            return 0;
-            break;
+    case eNoTic:
+        return 0;
+        break;
 
-        case eTicMinMax:
-            if ( t == NULL )
-            {
-                tic.val = usedMin;
-                firstTic = true;
-            }
-            else if ( firstTic == true )
-            {
-                tic.val = usedMax;
-                firstTic = false;
-            }
-            else
-            {
-                return 0;
-            }
-            break;
+    case eTicMinMax:
+        if ( t == NULL )
+        {
+            tic.val = usedMin;
+            firstTic = true;
+        }
+        else if ( firstTic == true )
+        {
+            tic.val = usedMax;
+            firstTic = false;
+        }
+        else
+        {
+            return 0;
+        }
+        break;
 
-        case eTicNorm:
-            if ( interval == 0 )
+    case eTicNorm:
+        if ( interval == 0 )
+        {
+            //qWarning() << "CPlotAxis::ticmark() mode 'norm': interval == 0";
+            return 0;
+        }
+        if ( t == NULL )
+        {
+            tic.val = ticStart;
+        }
+        else
+        {
+            tic.val += interval;
+            if ( ( tic.val - usedMax ) > interval / 20 )
             {
-                //qWarning() << "CPlotAxis::ticmark() mode 'norm': interval == 0";
                 return 0;
             }
-            if ( t == NULL )
-            {
-                tic.val = ticStart;
-            }
-            else
-            {
-                tic.val += interval;
-                if ( ( tic.val - usedMax ) > interval / 20 )
-                {
-                    return 0;
-                }
-            }
-            break;
+        }
+        break;
 
-        case eTicFull:
-            if ( t == NULL )
-            {
-                tic.val = usedMin;
-                firstTic = true;
-            }
-            else if ( firstTic == true )
-            {
-                tic.val = ticStart;
-                firstTic = false;
-            }
-            else if ( lastTic == true )
-            {
-                lastTic = false;
-                return 0;
-            }
-            else
+    case eTicFull:
+        if ( t == NULL )
+        {
+            tic.val = usedMin;
+            firstTic = true;
+        }
+        else if ( firstTic == true )
+        {
+            tic.val = ticStart;
+            firstTic = false;
+        }
+        else if ( lastTic == true )
+        {
+            lastTic = false;
+            return 0;
+        }
+        else
+        {
+            tic.val += interval;
+            if ( ( tic.val - usedMax ) > interval / 20 )
             {
-                tic.val += interval;
-                if ( ( tic.val - usedMax ) > interval / 20 )
-                {
-                    tic.val = usedMax;
-                    lastTic = true;
-                }
+                tic.val = usedMax;
+                lastTic = true;
             }
-            break;
+        }
+        break;
     }
 
     tic.lbl.sprintf( format_single_prec.toLatin1(), tic.val );
@@ -359,9 +400,13 @@ void CPlotAxis::zoom(bool in, int point)
 {
     qreal min, p, d, factor;
     if (in)
+    {
         factor = 1/1.1;
+    }
     else
+    {
         factor = 1.1;
+    }
 
     p = pt2val(point);
     min = (p - usedMin) * (1 - factor) + usedMin;
@@ -375,7 +420,7 @@ void CPlotAxis::zoom(bool in, int point)
 void CPlotAxis::move(int delta_pt)
 {
     qreal delta_val = pt2val(delta_pt) - pt2val(0);
-    bool f = ! (usedMax - usedMin < limitMax - limitMin);
+    bool f = !(usedMax - usedMin < limitMax - limitMin);
     if (f ^ (usedMin + delta_val < limitMin))
     {
         delta_val = (limitMin - usedMin);
diff --git a/src/plot/CPlotAxis.h b/src/plot/CPlotAxis.h
index 59fb590..7533faf 100644
--- a/src/plot/CPlotAxis.h
+++ b/src/plot/CPlotAxis.h
@@ -26,125 +26,139 @@ class QFontMetrics;
 class CPlotAxis : public QObject
 {
     Q_OBJECT
-        public:
-        CPlotAxis(QObject * parent);
-        virtual ~CPlotAxis();
-
-        /// tic mark information structure
-        struct tic_t
-        {
-            tic_t(){val=0;lbl="";}
-            qreal val;
-            QString lbl;
-        };
-
-        ///tic type
-        enum tictype_e
+public:
+    CPlotAxis(QObject * parent);
+    virtual ~CPlotAxis();
+
+    /// tic mark information structure
+    struct tic_t
+    {
+        tic_t()
         {
-            eNoTic,               /**< no tics are produced*/
-            eTicMinMax,           /**< only min max tics are produced*/
-            eTicNorm,             /**< tics by interval*/
-            eTicFull              /**< minmax && norm*/
-        };
-
-        ///zoom in/out with a given point as static
-        virtual void zoom(bool in, int point);
-        ///set the desired minimum and maximum value equal to limit values
-        virtual void resetZoom();
-        ///add delta_pt to min and max values
-        virtual void move(int delta);
-        ///set the desired minimum and maximum value
-        virtual void setMinMax(qreal givenMin, qreal givenMax);
-        ///set the limit minimum and maximum value
-        virtual void setLimits(qreal min, qreal max);
-        ///set the scale factor for a given size in points
-        virtual void setScale(const unsigned int pts);
-        ///calculate format for the given value
-        virtual const QString fmtsgl(qreal val);
-        ///calculate format for the given value
-        virtual const QString fmtdbl(qreal val);
-        ///get the maximum width of a scale with provided fontmetrics
-        virtual int getScaleWidth(const QFontMetrics& m);
-        ///get a new ticmark object
-        virtual const tic_t* ticmark(const tic_t * t = NULL);
-        /// get the total limits and the used ones
-        virtual void getLimits(qreal& limMin, qreal& limMax, qreal& useMin, qreal& useMax);
-
-        inline int val2pt( qreal val )
-        {
-            if ( scale == 0 )
-            {
-                return 0;
-            }
-            return ( int ) ( ( val - usedMin ) * scale + 0.5 );
+            val=0; lbl="";
         }
-
-        inline qreal pt2val( int pt )
+        qreal val;
+        QString lbl;
+    };
+
+    ///tic type
+    enum tictype_e
+    {
+        eNoTic,                   /**< no tics are produced*/
+        eTicMinMax,               /**< only min max tics are produced*/
+        eTicNorm,                 /**< tics by interval*/
+        eTicFull                  /**< minmax && norm*/
+    };
+
+    ///zoom in/out with a given point as static
+    virtual void zoom(bool in, int point);
+    ///set the desired minimum and maximum value equal to limit values
+    virtual void resetZoom();
+    ///add delta_pt to min and max values
+    virtual void move(int delta);
+    ///set the desired minimum and maximum value
+    virtual void setMinMax(qreal givenMin, qreal givenMax);
+    ///set the limit minimum and maximum value
+    virtual void setLimits(qreal min, qreal max);
+    ///set the scale factor for a given size in points
+    virtual void setScale(const unsigned int pts);
+    ///calculate format for the given value
+    virtual const QString fmtsgl(qreal val);
+    ///calculate format for the given value
+    virtual const QString fmtdbl(qreal val);
+    ///get the maximum width of a scale with provided fontmetrics
+    virtual int getScaleWidth(const QFontMetrics& m);
+    ///get a new ticmark object
+    virtual const tic_t* ticmark(const tic_t * t = NULL);
+    /// get the total limits and the used ones
+    virtual void getLimits(qreal& limMin, qreal& limMax, qreal& useMin, qreal& useMax);
+
+    inline int val2pt( qreal val )
+    {
+        if ( scale == 0 )
         {
-            if ( scale == 0 )
-            {
-                return 0;
-            }
-            return ( qreal ) ( ( (qreal)pt - 0.5 ) / scale + usedMin );
+            return 0;
         }
+        return ( int ) ( ( val - usedMin ) * scale + 0.5 );
+    }
 
-        void setAutoscale(bool on){autoscale = on;}
-
-        inline tictype_e getTicType(){return ticType;}
-        inline tictype_e setTicType(tictype_e t)
+    inline qreal pt2val( int pt )
+    {
+        if ( scale == 0 )
         {
-            tictype_e old = ticType;
-            ticType = t;
-            return old;
+            return 0;
         }
-
-        qreal min(){return usedMin;}
-        qreal max(){return usedMax;}
-
-    protected:
-        virtual void calc();
-
-        ///true if axis has been initialized
-        bool initialized;
-        ///true if autoscaling
-        bool autoscale;
-
-        ///scalefactor
-        qreal scale;
-
-        ///the actual applied min value
-        qreal usedMin;
-        ///the actual applied max value
-        qreal usedMax;
-
-        qreal limitMin;
-        qreal limitMax;
-
-        ///the intervall of the ticmarks
-        qreal interval;
-
-        ///start value of the tic marks
-        qreal ticStart;
-
-        /// this is set to -1 by default
-        /**
-            a value > 0 will override the dynamic value in getScaleWidth();
-        */
-        qint32 scaleWidth;
-
-        ///the ticmark generation type
-        tictype_e ticType;
-        ///local copy of the last ticmark object
-        tic_t tic;
-
-        /// used by ticmark()
-        bool firstTic;
-        /// used by ticmark()
-        bool lastTic;
-
-        ///points of dimension
-        quint32 points;
-
+        return ( qreal ) ( ( (qreal)pt - 0.5 ) / scale + usedMin );
+    }
+
+    void setAutoscale(bool on)
+    {
+        autoscale = on;
+    }
+
+    inline tictype_e getTicType()
+    {
+        return ticType;
+    }
+    inline tictype_e setTicType(tictype_e t)
+    {
+        tictype_e old = ticType;
+        ticType = t;
+        return old;
+    }
+
+    qreal min()
+    {
+        return usedMin;
+    }
+    qreal max()
+    {
+        return usedMax;
+    }
+
+protected:
+    virtual void calc();
+
+    ///true if axis has been initialized
+    bool initialized;
+    ///true if autoscaling
+    bool autoscale;
+
+    ///scalefactor
+    qreal scale;
+
+    ///the actual applied min value
+    qreal usedMin;
+    ///the actual applied max value
+    qreal usedMax;
+
+    qreal limitMin;
+    qreal limitMax;
+
+    ///the intervall of the ticmarks
+    qreal interval;
+
+    ///start value of the tic marks
+    qreal ticStart;
+
+    /// this is set to -1 by default
+    /**
+        a value > 0 will override the dynamic value in getScaleWidth();
+     */
+    qint32 scaleWidth;
+
+    ///the ticmark generation type
+    tictype_e ticType;
+    ///local copy of the last ticmark object
+    tic_t tic;
+
+    /// used by ticmark()
+    bool firstTic;
+    /// used by ticmark()
+    bool lastTic;
+
+    ///points of dimension
+    quint32 points;
 };
 
 #endif //CPLOTAXIS_H
diff --git a/src/plot/CPlotAxisTime.cpp b/src/plot/CPlotAxisTime.cpp
index 01d3852..01d5284 100644
--- a/src/plot/CPlotAxisTime.cpp
+++ b/src/plot/CPlotAxisTime.cpp
@@ -21,21 +21,18 @@
 #include <QtWidgets>
 
 CPlotAxisTime::CPlotAxisTime(QObject * parent)
-: CPlotAxis(parent)
+    : CPlotAxis(parent)
 {
-
 }
 
 
 CPlotAxisTime::~CPlotAxisTime()
 {
-
 }
 
 
 void CPlotAxisTime::calc()
 {
-
     int dSec    = usedMax - usedMin;
     ticStart    = usedMin;
     strFormat   = "hh:mm:ss";
@@ -112,7 +109,6 @@ void CPlotAxisTime::calc()
     {
         ticStart += interval;
     }
-
 }
 
 
diff --git a/src/plot/CPlotAxisTime.h b/src/plot/CPlotAxisTime.h
index 80dfdf5..9a86b56 100644
--- a/src/plot/CPlotAxisTime.h
+++ b/src/plot/CPlotAxisTime.h
@@ -24,20 +24,26 @@
 class CPlotAxisTime : public CPlotAxis
 {
     Q_OBJECT
-    public:
-        CPlotAxisTime(QObject * parent);
-        virtual ~CPlotAxisTime();
-
-        ///calculate format for the given value
-        const QString fmtsgl(qreal /*val*/){return strFormat;}
-        ///calculate format for the given value
-        const QString fmtdbl(qreal /*val*/){return strFormat;}
-
-        const tic_t* ticmark( const tic_t * t );
-    protected:
-        void calc();
-
-        QString strFormat;
+public:
+    CPlotAxisTime(QObject * parent);
+    virtual ~CPlotAxisTime();
+
+    ///calculate format for the given value
+    const QString fmtsgl(qreal /*val*/)
+    {
+        return strFormat;
+    }
+    ///calculate format for the given value
+    const QString fmtdbl(qreal /*val*/)
+    {
+        return strFormat;
+    }
+
+    const tic_t* ticmark( const tic_t * t );
+protected:
+    void calc();
+
+    QString strFormat;
 };
 
 #endif //CPLOTAXISTIME_H
diff --git a/src/plot/CPlotData.cpp b/src/plot/CPlotData.cpp
index 35aa6a2..36160b8 100644
--- a/src/plot/CPlotData.cpp
+++ b/src/plot/CPlotData.cpp
@@ -16,20 +16,20 @@
 
 **********************************************************************************************/
 
-#include "plot/CPlotData.h"
 #include "plot/CPlotAxis.h"
 #include "plot/CPlotAxisTime.h"
+#include "plot/CPlotData.h"
 #include "units/IUnit.h"
 
 CPlotData::CPlotData(axistype_e type, QObject * parent)
-: QObject(parent)
-, grid(true)
-, badData(true)
-, axisType(type)
-, xmin(0)
-, xmax(0)
-, ymin(0)
-, ymax(0)
+    : QObject(parent)
+    , grid(true)
+    , badData(true)
+    , axisType(type)
+    , xmin(0)
+    , xmax(0)
+    , ymin(0)
+    , ymax(0)
 {
     if(type == eAxisLinear)
     {
@@ -46,7 +46,6 @@ CPlotData::CPlotData(axistype_e type, QObject * parent)
 
 CPlotData::~CPlotData()
 {
-
 }
 
 
@@ -58,7 +57,10 @@ void CPlotData::setLimits()
     }
 
     QList<line_t>::const_iterator line  = lines.begin();
-    if(line == lines.end()) return;
+    if(line == lines.end())
+    {
+        return;
+    }
     QPolygonF::const_iterator p         = line->points.begin();
 
     xmin = p->x();
@@ -73,11 +75,22 @@ void CPlotData::setLimits()
         {
             if(p->y() != NOFLOAT)
             {
-
-                if(p->x() > xmax) xmax = p->x();
-                if(p->x() < xmin) xmin = p->x();
-                if(p->y() > ymax) ymax = p->y();
-                if(p->y() < ymin) ymin = p->y();
+                if(p->x() > xmax)
+                {
+                    xmax = p->x();
+                }
+                if(p->x() < xmin)
+                {
+                    xmin = p->x();
+                }
+                if(p->y() > ymax)
+                {
+                    ymax = p->y();
+                }
+                if(p->y() < ymin)
+                {
+                    ymin = p->y();
+                }
             }
             ++p;
         }
diff --git a/src/plot/CPlotData.h b/src/plot/CPlotData.h
index 4e6bf27..3b921bb 100644
--- a/src/plot/CPlotData.h
+++ b/src/plot/CPlotData.h
@@ -20,73 +20,79 @@
 #define CPLOTDATA_H
 
 
-#include <QObject>
 #include <QColor>
-#include <QPolygonF>
+#include <QObject>
 #include <QPixmap>
+#include <QPolygonF>
 
 class CPlotAxis;
 
 class CPlotData : public QObject
 {
-    public:
-        enum axistype_e {eAxisLinear, eAxisTime};
-
-        CPlotData(axistype_e type, QObject * parent);
-        virtual ~CPlotData();
-
-        ///get a reference to the x axis
-        CPlotAxis& x(){return *xaxis;}
-        ///get a reference to the y axis
-        CPlotAxis& y(){return *yaxis;}
-
-        /// setup all internal data to fit the dynamic range of all data points
-        void setLimits();
-
-        struct line_t
-        {
-            QString label;
-            QColor color;
-            QPolygonF points;
-        };
-
-        /// text shown below the x axis
-        QString xlabel;
-        /// text shown left of the y axis
-        QString ylabel;
-        /// set true for grid
-        bool grid;
-
-        /// list of plot lines
-        QList<line_t> lines;
-        /// marks on line1
-        line_t marks;
-
-        struct point_t
-        {
-            QColor color;
-            QPointF point;
-            QPixmap icon;
-            QString label;
-        };
-
-        QList<QPointF> focus;
-
-        /// vector of plot tags such as waypoints
-        QVector<point_t> tags;
-
-        bool badData;
-
-        axistype_e axisType;
-
-        qreal xmin;
-        qreal xmax;
-        qreal ymin;
-        qreal ymax;
-
-    protected:
-        CPlotAxis * xaxis;
-        CPlotAxis * yaxis;
+public:
+    enum axistype_e {eAxisLinear, eAxisTime};
+
+    CPlotData(axistype_e type, QObject * parent);
+    virtual ~CPlotData();
+
+    ///get a reference to the x axis
+    CPlotAxis& x()
+    {
+        return *xaxis;
+    }
+    ///get a reference to the y axis
+    CPlotAxis& y()
+    {
+        return *yaxis;
+    }
+
+    /// setup all internal data to fit the dynamic range of all data points
+    void setLimits();
+
+    struct line_t
+    {
+        QString label;
+        QColor color;
+        QPolygonF points;
+    };
+
+    /// text shown below the x axis
+    QString xlabel;
+    /// text shown left of the y axis
+    QString ylabel;
+    /// set true for grid
+    bool grid;
+
+    /// list of plot lines
+    QList<line_t> lines;
+    /// marks on line1
+    line_t marks;
+
+    struct point_t
+    {
+        QColor color;
+        QPointF point;
+        QPixmap icon;
+        QString label;
+    };
+
+    QList<QPointF> focus;
+
+    /// vector of plot tags such as waypoints
+    QVector<point_t> tags;
+
+    bool badData;
+
+    axistype_e axisType;
+
+    qreal xmin;
+    qreal xmax;
+    qreal ymin;
+    qreal ymax;
+
+protected:
+    CPlotAxis * xaxis;
+    CPlotAxis * yaxis;
 };
 
 #endif //CPLOTDATA_H
diff --git a/src/plot/CPlotDistance.cpp b/src/plot/CPlotDistance.cpp
index b722b5c..f1ad12b 100644
--- a/src/plot/CPlotDistance.cpp
+++ b/src/plot/CPlotDistance.cpp
@@ -16,18 +16,16 @@
 
 **********************************************************************************************/
 
-#include "plot/CPlotDistance.h"
 #include "plot/CPlotAxisTime.h"
+#include "plot/CPlotDistance.h"
 
 CPlotDistance::CPlotDistance(QWidget *parent)
     : IPlot(0, CPlotData::eAxisTime, eModeNormal, parent)
 {
-
 }
 
 CPlotDistance::~CPlotDistance()
 {
-
 }
 
 void CPlotDistance::setTrack(CGisItemTrk * track)
@@ -40,7 +38,7 @@ void CPlotDistance::setTrack(CGisItemTrk * track)
 
 
 void CPlotDistance::updateData()
-{       
+{
     CPlotData::axistype_e type = data->axisType;
 
     if(mode == eModeIcon)
@@ -56,7 +54,7 @@ void CPlotDistance::updateData()
         }
         else
         {
-            setXLabel(tr("time [h]"));
+            setXLabel(tr("time"));
         }
         setYLabel(tr("distance. [%1]").arg(IUnit::self().baseunit));
     }
@@ -92,7 +90,6 @@ void CPlotDistance::updateData()
     newLine(lineDist, "GPS");
     setLimits();
     resetZoom();
-
 }
 
 void CPlotDistance::setMouseMoveFocus(const CGisItemTrk::trkpt_t * pt)
@@ -116,5 +113,4 @@ void CPlotDistance::setMouseMoveFocus(const CGisItemTrk::trkpt_t * pt)
         posMouse.ry() = top  +  data->y().val2pt(pt->distance);
     }
     update();
-
 }
diff --git a/src/plot/CPlotDistance.h b/src/plot/CPlotDistance.h
index 4922a2a..ca6464f 100644
--- a/src/plot/CPlotDistance.h
+++ b/src/plot/CPlotDistance.h
@@ -24,14 +24,13 @@
 class CPlotDistance : public IPlot
 {
     Q_OBJECT
-    public:
-        CPlotDistance(QWidget * parent);
-        virtual ~CPlotDistance();
-
-        void setTrack(CGisItemTrk * track);
-        void updateData();
-        void setMouseMoveFocus(const CGisItemTrk::trkpt_t * pt);
+public:
+    CPlotDistance(QWidget * parent);
+    virtual ~CPlotDistance();
 
+    void setTrack(CGisItemTrk * track);
+    void updateData();
+    void setMouseMoveFocus(const CGisItemTrk::trkpt_t * pt);
 };
 
 #endif //CPLOTDISTANCE_H
diff --git a/src/plot/CPlotProfile.cpp b/src/plot/CPlotProfile.cpp
index 1854c39..f500363 100644
--- a/src/plot/CPlotProfile.cpp
+++ b/src/plot/CPlotProfile.cpp
@@ -16,31 +16,27 @@
 
 **********************************************************************************************/
 
-#include "plot/CPlotProfile.h"
+#include "CMainWindow.h"
+#include "gis/trk/CGisItemTrk.h"
 #include "plot/CPlotAxis.h"
+#include "plot/CPlotProfile.h"
 #include "units/IUnit.h"
-#include "gis/trk/CGisItemTrk.h"
-#include "CMainWindow.h"
 
 #include <proj_api.h>
 
 CPlotProfile::CPlotProfile(QWidget * parent)
     : IPlot(0, CPlotData::eAxisLinear, eModeNormal, parent)
 {
-
 }
 
 CPlotProfile::CPlotProfile(CGisItemTrk *trk, mode_e mode, QWidget *parent)
     : IPlot(trk, CPlotData::eAxisLinear, mode, parent)
 {
-
-
     updateData();
 }
 
 CPlotProfile::~CPlotProfile()
 {
-
 }
 
 void CPlotProfile::setTrack(CGisItemTrk * track)
@@ -91,7 +87,7 @@ void CPlotProfile::updateData()
             if(trkpt.ele != NOINT)
             {
                 lineEle << QPointF(type == CPlotData::eAxisLinear ? trkpt.distance : (qreal)trkpt.time.toTime_t(), trkpt.ele * basefactor);
-                coords  << QPointF(trkpt.lon * DEG_TO_RAD, trkpt.lat * DEG_TO_RAD);
+                coords << QPointF(trkpt.lon * DEG_TO_RAD, trkpt.lat * DEG_TO_RAD);
                 lineDem << QPointF(type == CPlotData::eAxisLinear ? trkpt.distance : (qreal)trkpt.time.toTime_t(), NOFLOAT);
             }
         }
@@ -107,7 +103,6 @@ void CPlotProfile::updateData()
     }
     setLimits();
     resetZoom();
-
 }
 
 void CPlotProfile::setMouseMoveFocus(const CGisItemTrk::trkpt_t * pt)
diff --git a/src/plot/CPlotProfile.h b/src/plot/CPlotProfile.h
index 3ce827e..f9f45cc 100644
--- a/src/plot/CPlotProfile.h
+++ b/src/plot/CPlotProfile.h
@@ -25,14 +25,14 @@
 class CPlotProfile : public IPlot
 {
     Q_OBJECT
-    public:
-        CPlotProfile(QWidget * parent);
-        CPlotProfile(CGisItemTrk * trk, mode_e mode, QWidget * parent);
-        virtual ~CPlotProfile();
-
-        void setTrack(CGisItemTrk * track);
-        void updateData();
-        void setMouseMoveFocus(const CGisItemTrk::trkpt_t * pt);
+public:
+    CPlotProfile(QWidget * parent);
+    CPlotProfile(CGisItemTrk * trk, mode_e mode, QWidget * parent);
+    virtual ~CPlotProfile();
+
+    void setTrack(CGisItemTrk * track);
+    void updateData();
+    void setMouseMoveFocus(const CGisItemTrk::trkpt_t * pt);
 };
 
 #endif //CPLOTPROFILE_H
diff --git a/src/plot/CPlotSpeed.cpp b/src/plot/CPlotSpeed.cpp
index 83dc7cc..2dc5696 100644
--- a/src/plot/CPlotSpeed.cpp
+++ b/src/plot/CPlotSpeed.cpp
@@ -16,18 +16,16 @@
 
 **********************************************************************************************/
 
-#include "plot/CPlotSpeed.h"
 #include "plot/CPlotAxis.h"
+#include "plot/CPlotSpeed.h"
 
 CPlotSpeed::CPlotSpeed(QWidget *parent)
     : IPlot(0, CPlotData::eAxisLinear, eModeNormal, parent)
 {
-
 }
 
 CPlotSpeed::~CPlotSpeed()
 {
-
 }
 
 void CPlotSpeed::setTrack(CGisItemTrk * track)
diff --git a/src/plot/CPlotSpeed.h b/src/plot/CPlotSpeed.h
index 4f55d9b..a932294 100644
--- a/src/plot/CPlotSpeed.h
+++ b/src/plot/CPlotSpeed.h
@@ -24,14 +24,13 @@
 class CPlotSpeed : public IPlot
 {
     Q_OBJECT
-    public:
-        CPlotSpeed(QWidget * parent);
-        virtual ~CPlotSpeed();
-
-        void setTrack(CGisItemTrk * track);
-        void updateData();
-        void setMouseMoveFocus(const CGisItemTrk::trkpt_t * pt);
+public:
+    CPlotSpeed(QWidget * parent);
+    virtual ~CPlotSpeed();
 
+    void setTrack(CGisItemTrk * track);
+    void updateData();
+    void setMouseMoveFocus(const CGisItemTrk::trkpt_t * pt);
 };
 
 #endif //CPLOTSPEED_H
diff --git a/src/plot/CPlotTrack.cpp b/src/plot/CPlotTrack.cpp
index 84b78b8..fa75f3d 100644
--- a/src/plot/CPlotTrack.cpp
+++ b/src/plot/CPlotTrack.cpp
@@ -16,124 +16,26 @@
 
 **********************************************************************************************/
 
-#include "plot/CPlotTrack.h"
-#include "gis/trk/CGisItemTrk.h"
 #include "canvas/IDrawContext.h"
+#include "plot/CPlotTrack.h"
 
 #include <QtWidgets>
-#include <proj_api.h>
 
 CPlotTrack::CPlotTrack(QWidget *parent)
     : QWidget(parent)
-    , pjsrc(0)
-    , pjtar(0)
-    , needsRedraw(true)
-    , trk(0)
-    , xoff(0)
-    , yoff(0)
     , pos(NOPOINTF)
 {
-    pjtar = pj_init_plus("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs");
-}
-
-CPlotTrack::~CPlotTrack()
-{
-    if(pjtar) pj_free(pjtar);
-    if(pjsrc) pj_free(pjsrc);
-
-}
-
-void CPlotTrack::setTrack(CGisItemTrk * track, const QString& proj)
-{
-    trk = track;
-    pjsrc = pj_init_plus(proj.toLatin1());
-
-    updateData();
 }
 
-void CPlotTrack::setTrack(const QPolygonF& track, const QString &proj)
+CPlotTrack::CPlotTrack(CGisItemTrk * trk, QWidget * parent)
+    : QWidget(parent)
+    , pos(NOPOINTF)
 {
-    coords = track;
-    pjsrc = pj_init_plus(proj.toLatin1());
-
-    updateData();
+    setTrack(trk);
 }
 
-void CPlotTrack::updateData()
+CPlotTrack::~CPlotTrack()
 {
-    if(trk == 0 && coords.isEmpty())
-    {
-        return;
-    }
-
-    QRectF boundingRect;
-    if(trk)
-    {
-        coords.clear();
-        const CGisItemTrk::trk_t& t = trk->getTrackData();
-        foreach (const CGisItemTrk::trkseg_t& seg, t.segs)
-        {
-            foreach(const CGisItemTrk::trkpt_t& trkpt, seg.pts)
-            {
-                if(trkpt.flags & CGisItemTrk::trkpt_t::eHidden)
-                {
-                    continue;
-                }
-
-                coords << QPointF(trkpt.lon * DEG_TO_RAD, trkpt.lat * DEG_TO_RAD);
-            }
-        }
-    }
-
-    qreal north = -90 * DEG_TO_RAD;
-    qreal east  = -180 * DEG_TO_RAD;
-    qreal south =  90 * DEG_TO_RAD;
-    qreal west  =  180 * DEG_TO_RAD;
-
-    foreach(const QPointF& trkpt, coords)
-    {
-        if(trkpt.x() < west)  west    = trkpt.x();
-        if(trkpt.x() > east)  east    = trkpt.x();
-        if(trkpt.y() < south) south   = trkpt.y();
-        if(trkpt.y() > north) north   = trkpt.y();
-    }
-
-
-    QRectF r = buffer.rect();
-    r.adjust(5,5,-5,-5);
-
-    pt1 = QPointF(west, north);
-    pt2 = QPointF(east, south);
-
-    pj_transform(pjtar, pjsrc, 1, 0, &pt1.rx(), &pt1.ry(), 0);
-    pj_transform(pjtar, pjsrc, 1, 0, &pt2.rx(), &pt2.ry(), 0);
-
-    qreal w = pt2.x() - pt1.x();
-    qreal h = pt2.y() - pt1.y();
-
-    if(qAbs(w) > qAbs(h))
-    {
-        scale.rx() = r.width() / w;
-        scale.ry() = -scale.x();
-    }
-    else
-    {
-        scale.ry() = r.height() / h;
-        scale.rx() = -scale.y();
-    }
-
-    line.clear();
-    foreach(const QPointF& trkpt, coords)
-    {
-        QPointF pt(trkpt.x(), trkpt.y());
-        pj_transform(pjtar, pjsrc, 1, 0, &pt.rx(), &pt.ry(), 0);
-        line << (pt - pt1) * scale;
-    }
-
-    xoff = qRound((buffer.width()  - w * scale.x()) / 2);
-    yoff = qRound((buffer.height() - h * scale.y()) / 2);
-
-    needsRedraw = true;
 }
 
 void CPlotTrack::setMouseMoveFocus(qreal lon, qreal lat)
@@ -142,7 +44,7 @@ void CPlotTrack::setMouseMoveFocus(qreal lon, qreal lat)
     pos.ry() = lat * DEG_TO_RAD;
 
     pj_transform(pjtar, pjsrc, 1, 0, &pos.rx(), &pos.ry(), 0);
-    pos = (pos - pt1) * scale;
+
     update();
 }
 
@@ -150,10 +52,7 @@ void CPlotTrack::resizeEvent(QResizeEvent * e)
 {
     QSize s = e->size();
     setMinimumWidth(s.height());
-
-    buffer = QImage(s.height(), s.height(), QImage::Format_ARGB32);
-
-    updateData();
+    setSize(s.height(), s.height());
 }
 
 void CPlotTrack::paintEvent(QPaintEvent * e)
@@ -161,28 +60,12 @@ void CPlotTrack::paintEvent(QPaintEvent * e)
     QPainter p(this);
     USE_ANTI_ALIASING(p, true);
 
-    if(needsRedraw)
-    {
-        draw();
-        needsRedraw = false;
-    }
+    draw(p);
 
-    p.drawImage(0,0,buffer);
-    p.translate(xoff, yoff);
     p.setPen(Qt::red);
     p.setBrush(Qt::red);
-    p.drawEllipse(pos,5,5);
+    p.scale(scale.x(), scale.y());
+    p.translate(-xoff, -yoff);
+    p.drawEllipse(pos,5/scale.x(),5/scale.x());
 }
 
-void CPlotTrack::draw()
-{
-    QPainter p(&buffer);
-    USE_ANTI_ALIASING(p, true);
-    p.setPen(Qt::black);
-    p.setBrush(Qt::white);
-    p.drawRect(buffer.rect());
-
-    p.translate(xoff,yoff);
-    p.setPen(QPen(Qt::darkBlue,2));
-    p.drawPolyline(line);
-}
diff --git a/src/plot/CPlotTrack.h b/src/plot/CPlotTrack.h
index 42bb596..5416419 100644
--- a/src/plot/CPlotTrack.h
+++ b/src/plot/CPlotTrack.h
@@ -19,48 +19,27 @@
 #ifndef CPLOTTRACK_H
 #define CPLOTTRACK_H
 
+#include "plot/ITrack.h"
 #include <QWidget>
-#include <proj_api.h>
 
 class CGisItemTrk;
 
-class CPlotTrack : public QWidget
+class CPlotTrack : public QWidget, public ITrack
 {
-    public:
-        CPlotTrack(QWidget * parent);
-        virtual ~CPlotTrack();
+public:
+    CPlotTrack(QWidget * parent);
+    CPlotTrack(CGisItemTrk * trk, QWidget * parent);
+    virtual ~CPlotTrack();
 
-        void setTrack(CGisItemTrk * track, const QString &proj = "+init=epsg:3857");
-        void setTrack(const QPolygonF &track, const QString &proj = "+init=epsg:3857");
-        void updateData();
-        void setMouseMoveFocus(qreal lon, qreal lat);
+    void setMouseMoveFocus(qreal lon, qreal lat);
 
-    protected:
-        void resizeEvent(QResizeEvent * e);
-        void paintEvent(QPaintEvent * e);
+protected:
+    void resizeEvent(QResizeEvent * e);
+    void paintEvent(QPaintEvent * e);
 
+private:
 
-    private:
-        void draw();
-
-        projPJ  pjsrc;
-        projPJ  pjtar;
-
-        bool needsRedraw;
-        CGisItemTrk * trk;
-        QPolygonF coords;
-
-        QImage buffer;
-
-        QPointF pt1;
-        QPointF pt2;
-        QPointF scale;
-        QPolygonF line;
-
-        qint32 xoff;
-        qint32 yoff;
-
-        QPointF pos;
+    QPointF pos;
 };
 
 #endif //CPLOTTRACK_H
diff --git a/src/plot/IPlot.cpp b/src/plot/IPlot.cpp
index dfd7ec1..7c23735 100644
--- a/src/plot/IPlot.cpp
+++ b/src/plot/IPlot.cpp
@@ -16,11 +16,11 @@
 
 **********************************************************************************************/
 
-#include "plot/IPlot.h"
 #include "plot/CPlotAxis.h"
+#include "plot/IPlot.h"
 
-#include "canvas/CCanvas.h"
 #include "CMainWindow.h"
+#include "canvas/CCanvas.h"
 
 #include <QtWidgets>
 
@@ -30,7 +30,6 @@ QPen IPlot::pens[] =
     , QPen(QColor("#C00000"),3,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
     , QPen(Qt::yellow,3,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
     , QPen(Qt::green,3,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
-
 };
 
 QPen IPlot::pensThin[] =
@@ -39,7 +38,6 @@ QPen IPlot::pensThin[] =
     , QPen(Qt::darkRed,2,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
     , QPen(Qt::darkYellow,2,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
     , QPen(Qt::darkGreen,2,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
-
 };
 
 QColor IPlot::colors[] =
@@ -48,7 +46,6 @@ QColor IPlot::colors[] =
     , QColor(0,0,0,0)
     , QColor(0,0,0,0)
     , QColor(0,0,0,0)
-
 };
 
 
@@ -58,6 +55,7 @@ IPlot::IPlot(CGisItemTrk *trk, CPlotData::axistype_e type, mode_e mode, QWidget
     , needsRedraw(true)
     , showScale(true)
     , thinLine(false)
+    , solid(false)
     , posMouse(NOPOINT)
     , trk(trk)
     , fm(font())
@@ -75,7 +73,10 @@ IPlot::IPlot(CGisItemTrk *trk, CPlotData::axistype_e type, mode_e mode, QWidget
 {
     setMouseTracking(true);
 
-    if(trk) trk->registerPlot(this);
+    if(trk)
+    {
+        trk->registerPlot(this);
+    }
 
     data = new CPlotData(type, this);
 
@@ -84,12 +85,14 @@ IPlot::IPlot(CGisItemTrk *trk, CPlotData::axistype_e type, mode_e mode, QWidget
         showScale = false;
         thinLine = true;
     }
-
 }
 
 IPlot::~IPlot()
 {
-    if(trk) trk->unregisterPlot(this);
+    if(trk)
+    {
+        trk->unregisterPlot(this);
+    }
 }
 
 void IPlot::clear()
@@ -141,7 +144,6 @@ void IPlot::newLine(const QPolygonF& line, const QString& label)
 
     needsRedraw = true;
     update();
-
 }
 
 void IPlot::addLine(const QPolygonF& line, const QString& label)
@@ -209,7 +211,10 @@ void IPlot::leaveEvent(QEvent * e)
     needsRedraw = true;
     posMouse    = NOPOINT;
 
-    if(trk) trk->setMouseFocusByDistance(NOFLOAT, CGisItemTrk::eFocusMouseMove, this);
+    if(trk)
+    {
+        trk->setMouseFocusByDistance(NOFLOAT, CGisItemTrk::eFocusMouseMove, this);
+    }
 
     QApplication::restoreOverrideCursor();
     update();
@@ -247,11 +252,17 @@ void IPlot::mouseMoveEvent(QMouseEvent * e)
         qreal x = data->x().pt2val(posMouse.x() - left);
         if(data->axisType == CPlotData::eAxisLinear)
         {
-            if(trk) trk->setMouseFocusByDistance(x, CGisItemTrk::eFocusMouseMove, this);
+            if(trk)
+            {
+                trk->setMouseFocusByDistance(x, CGisItemTrk::eFocusMouseMove, this);
+            }
         }
         else if(data->axisType == CPlotData::eAxisTime)
         {
-            if(trk) trk->setMouseFocusByTime(x, CGisItemTrk::eFocusMouseMove, this);
+            if(trk)
+            {
+                trk->setMouseFocusByTime(x, CGisItemTrk::eFocusMouseMove, this);
+            }
         }
 
         // update canvas if visible
@@ -282,11 +293,17 @@ void IPlot::mousePressEvent(QMouseEvent * e)
             qreal x = data->x().pt2val(posMouse.x() - left);
             if(data->axisType == CPlotData::eAxisLinear)
             {
-                if(trk) trk->setMouseFocusByDistance(x, CGisItemTrk::eFocusMouseClick, this);
+                if(trk)
+                {
+                    trk->setMouseFocusByDistance(x, CGisItemTrk::eFocusMouseClick, this);
+                }
             }
             else if(data->axisType == CPlotData::eAxisTime)
             {
-                if(trk) trk->setMouseFocusByTime(x, CGisItemTrk::eFocusMouseClick, this);
+                if(trk)
+                {
+                    trk->setMouseFocusByTime(x, CGisItemTrk::eFocusMouseClick, this);
+                }
             }
 
             // update canvas if visible
@@ -322,7 +339,6 @@ void IPlot::setSizes()
     setSizeYLabel();
     setSizeTrackInfo();
     setSizeDrawArea();
-
 }
 
 void IPlot::setLRTB()
@@ -445,9 +461,9 @@ void IPlot::draw()
     {
         QRect r = rect();
         r.adjust(2,2,-2,-2);
-        if(underMouse() || posMouse != NOPOINT)
+        if(underMouse() || posMouse != NOPOINT || solid)
         {
-            p.setPen(CCanvas::penBorderBlue);
+            p.setPen(solid ? CCanvas::penBorderBlack : CCanvas::penBorderBlue);
             p.setOpacity(1.0);
         }
         else
@@ -582,7 +598,7 @@ void IPlot::drawXScale( QPainter &p )
 
     if ( data->x().getTicType() == CPlotAxis::eNoTic )
     {
-        return ;
+        return;
     }
 
     p.setPen(Qt::darkBlue);
@@ -610,7 +626,10 @@ void IPlot::drawXScale( QPainter &p )
     qreal limMin, limMax, useMin, useMax;
     data->x().getLimits(limMin, limMax, useMin, useMax);
 
-    if((limMax - limMin) <= (useMax - useMin)) return;
+    if((limMax - limMin) <= (useMax - useMin))
+    {
+        return;
+    }
 
     qreal scale = (right - left) / (limMax - limMin);
     //     qreal val   = data->x().pt2val(0);
@@ -621,7 +640,6 @@ void IPlot::drawXScale( QPainter &p )
 
     p.setPen(QPen(Qt::red,3));
     p.drawLine(x,y, x + w, y);
-
 }
 
 
@@ -630,7 +648,9 @@ void IPlot::drawYScale( QPainter &p )
     QString format_single_prec;
     QRect recText;
     if ( data->y().getTicType() == CPlotAxis::eNoTic )
-        return ;
+    {
+        return;
+    }
 
     p.setPen(Qt::darkBlue);
     recText.setHeight( fontHeight );
@@ -681,7 +701,10 @@ void IPlot::drawYScale( QPainter &p )
         t = data->y().ticmark( t );
     }
 
-    if((limMax - limMin) <= (useMax - useMin)) return;
+    if((limMax - limMin) <= (useMax - useMin))
+    {
+        return;
+    }
 
     qreal scale = (top - bottom) / (limMax - limMin);
     //     qreal val   = data->y().pt2val(0);
@@ -692,7 +715,6 @@ void IPlot::drawYScale( QPainter &p )
 
     p.setPen(QPen(Qt::red,3));
     p.drawLine(x,y, x, y + h);
-
 }
 
 
@@ -799,7 +821,10 @@ void IPlot::drawYTic( QPainter &p )
 
 void IPlot::drawLegend(QPainter& p)
 {
-    if(data->lines.size() < 2) return;
+    if((data->lines.size() < 2) || (mode == eModeIcon))
+    {
+        return;
+    }
 
     int penIdx = 0;
     QFontMetrics fm(p.font());
@@ -814,19 +839,17 @@ void IPlot::drawLegend(QPainter& p)
     while(line != lines.end())
     {
         p.setPen(Qt::black);
-        p.drawText(x + 30 ,y,line->label);
+        p.drawText(x + 30,y,line->label);
         p.setPen(pens[penIdx++]);
         p.drawLine(x, y, x + 20, y);
 
         y += fm.height();
         ++line;
     }
-
 }
 
 void IPlot::drawDecoration( QPainter &p )
 {
-
     if(posMouse != NOPOINT)
     {
         p.setPen(QPen(Qt::red,2));
@@ -834,3 +857,11 @@ void IPlot::drawDecoration( QPainter &p )
     }
 }
 
+void IPlot::save(QImage& image)
+{
+    resize(image.size());
+    setSizes();
+    buffer = QImage(image.size(), QImage::Format_ARGB32);
+    draw();
+    image = buffer;
+}
diff --git a/src/plot/IPlot.h b/src/plot/IPlot.h
index 6160548..db9675a 100644
--- a/src/plot/IPlot.h
+++ b/src/plot/IPlot.h
@@ -19,109 +19,114 @@
 #ifndef IPLOT_H
 #define IPLOT_H
 
-#include <QWidget>
-#include "plot/CPlotData.h"
 #include "gis/trk/CGisItemTrk.h"
+#include "plot/CPlotData.h"
+#include <QWidget>
 
 class IPlot : public QWidget
 {
     Q_OBJECT
-    public:
-        enum mode_e {eModeNormal, eModeIcon};
-
-        IPlot(CGisItemTrk * trk, CPlotData::axistype_e type, mode_e mode, QWidget * parent);
-        virtual ~IPlot();
-
-        virtual void updateData() = 0;
-        virtual void setMouseMoveFocus(const CGisItemTrk::trkpt_t * pt) = 0;
-
-    protected:
-        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();
-        void resetZoom();
-
-        void paintEvent(QPaintEvent * e);
-        void resizeEvent(QResizeEvent * e);
-        void leaveEvent(QEvent * e);
-        void enterEvent(QEvent * e);
-        void mouseMoveEvent(QMouseEvent * e);
-        void mousePressEvent(QMouseEvent * e);
-
-
-        void setSizes();
-        void setLRTB();
-        void setSizeIconArea();
-        void setSizeXLabel();
-        void setSizeYLabel();
-        void setSizeTrackInfo();
-        void setSizeDrawArea();
-
-        void draw(QPainter& p);
-        void draw();
-        void drawData(QPainter& p);
-        void drawLabels( QPainter &p );
-        void drawXScale( QPainter &p );
-        void drawYScale( QPainter &p );
-        void drawGridX( QPainter &p );
-        void drawGridY( QPainter &p );
-        void drawXTic( QPainter &p );
-        void drawYTic( QPainter &p );
-        void drawLegend(QPainter& p);
-        void drawDecoration( QPainter &p );
-
-        // different draw modes
-        mode_e mode;
-        // buffer needs update
-        bool needsRedraw;
-
-        bool showScale;
-        bool thinLine;
-
-        QImage buffer;
-        QPoint posMouse;
-
-        /**
-           @brief The track this plot is attached to
-
-           @note It is save to store the pointer to the track item because
-                 the plot objects registers/unregisters with the track during
-                 construction and destruction.
-
-                 See CGisItem::registeredPlots for details.
-         */
-        CGisItemTrk * trk;
-        CPlotData * data;
-
-        QFontMetrics fm;
-
-        int left;
-        int right;
-        int top;
-        int bottom;
-
-        int deadAreaX;
-        int deadAreaY;
-
-        int fontWidth;
-        int fontHeight;
-        int scaleWidthX1;
-        int scaleWidthY1;
-
-        QRect rectX1Label;
-        QRect rectY1Label;
-        QRect rectGraphArea;
-        QRect rectIconArea;
-        QRect rectTrackInfo;
-
-        static QPen pens[];
-        static QPen pensThin[];
-        static QColor colors[];
-
-
+public:
+    enum mode_e {eModeNormal, eModeIcon};
+
+    IPlot(CGisItemTrk * trk, CPlotData::axistype_e type, mode_e mode, QWidget * parent);
+    virtual ~IPlot();
+
+    virtual void updateData() = 0;
+    virtual void setMouseMoveFocus(const CGisItemTrk::trkpt_t * pt) = 0;
+
+    void save(QImage& image);
+    void setSolid(bool yes)
+    {
+        solid = yes;
+    }
+
+protected:
+    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();
+    void resetZoom();
+
+    void paintEvent(QPaintEvent * e);
+    void resizeEvent(QResizeEvent * e);
+    void leaveEvent(QEvent * e);
+    void enterEvent(QEvent * e);
+    void mouseMoveEvent(QMouseEvent * e);
+    void mousePressEvent(QMouseEvent * e);
+
+
+    void setSizes();
+    void setLRTB();
+    void setSizeIconArea();
+    void setSizeXLabel();
+    void setSizeYLabel();
+    void setSizeTrackInfo();
+    void setSizeDrawArea();
+
+    void draw(QPainter& p);
+    void draw();
+    void drawData(QPainter& p);
+    void drawLabels( QPainter &p );
+    void drawXScale( QPainter &p );
+    void drawYScale( QPainter &p );
+    void drawGridX( QPainter &p );
+    void drawGridY( QPainter &p );
+    void drawXTic( QPainter &p );
+    void drawYTic( QPainter &p );
+    void drawLegend(QPainter& p);
+    void drawDecoration( QPainter &p );
+
+    // different draw modes
+    mode_e mode;
+    // buffer needs update
+    bool needsRedraw;
+
+    bool showScale;
+    bool thinLine;
+    bool solid;
+
+    QImage buffer;
+    QPoint posMouse;
+
+    /**
+       @brief The track this plot is attached to
+
+       @note It is save to store the pointer to the track item because
+             the plot objects registers/unregisters with the track during
+             construction and destruction.
+
+             See CGisItem::registeredPlots for details.
+     */
+    CGisItemTrk * trk;
+    CPlotData * data;
+
+    QFontMetrics fm;
+
+    int left;
+    int right;
+    int top;
+    int bottom;
+
+    int deadAreaX;
+    int deadAreaY;
+
+    int fontWidth;
+    int fontHeight;
+    int scaleWidthX1;
+    int scaleWidthY1;
+
+    QRect rectX1Label;
+    QRect rectY1Label;
+    QRect rectGraphArea;
+    QRect rectIconArea;
+    QRect rectTrackInfo;
+
+    static QPen pens[];
+    static QPen pensThin[];
+    static QColor colors[];
 };
 
 #endif //IPLOT_H
diff --git a/src/plot/ITrack.cpp b/src/plot/ITrack.cpp
new file mode 100644
index 0000000..0c63683
--- /dev/null
+++ b/src/plot/ITrack.cpp
@@ -0,0 +1,190 @@
+/**********************************************************************************************
+    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 "canvas/IDrawContext.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "plot/ITrack.h"
+
+#include <QtWidgets>
+
+ITrack::ITrack()
+    : pjsrc(0)
+    , pjtar(0)
+    , needsRedraw(true)
+    , trk(0)
+    , xoff(0)
+    , yoff(0)
+{
+    pjtar = pj_init_plus("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs");
+}
+
+ITrack::~ITrack()
+{
+    if(pjtar)
+    {
+        pj_free(pjtar);
+    }
+    if(pjsrc)
+    {
+        pj_free(pjsrc);
+    }
+}
+
+void ITrack::save(QImage& image)
+{
+    setSize(image.width(), image.height());
+    draw();
+    image = buffer;
+}
+
+void ITrack::setSize(int w, int h)
+{
+    buffer = QImage(w, h, QImage::Format_ARGB32);
+    updateData();
+}
+
+void ITrack::setupProjection(const QRectF& boundingBox)
+{
+    if(pjsrc)
+    {
+        pj_free(pjsrc);
+        pjsrc = 0;
+    }
+
+    if(boundingBox.top() > (60*DEG_TO_RAD))
+    {
+        pjsrc =  pj_init_plus("+init=epsg:32661");
+    }
+    else if(boundingBox.bottom() < (-60*DEG_TO_RAD))
+    {
+        pjsrc =  pj_init_plus("+init=epsg:32761");
+    }
+    else
+    {
+        pjsrc =  pj_init_plus("+init=epsg:3857");
+    }
+}
+
+void ITrack::setTrack(CGisItemTrk * track)
+{
+    trk = track;
+
+    setupProjection(trk->getBoundingRect());
+
+    updateData();
+}
+
+void ITrack::setTrack(const QPolygonF& track)
+{
+    coords = track;
+
+    setupProjection(coords.boundingRect());
+
+    updateData();
+}
+
+void ITrack::updateData()
+{
+    if((pjsrc == 0) || (trk == 0 && coords.isEmpty()))
+    {
+        return;
+    }
+
+    if(trk)
+    {
+        coords.clear();
+        const CGisItemTrk::trk_t& t = trk->getTrackData();
+        foreach (const CGisItemTrk::trkseg_t& seg, t.segs)
+        {
+            foreach(const CGisItemTrk::trkpt_t& trkpt, seg.pts)
+            {
+                if(trkpt.flags & CGisItemTrk::trkpt_t::eHidden)
+                {
+                    continue;
+                }
+
+                coords << QPointF(trkpt.lon * DEG_TO_RAD, trkpt.lat * DEG_TO_RAD);
+            }
+        }
+    }
+
+    line.clear();
+    foreach(const QPointF &trkpt, coords)
+    {
+        QPointF pt(trkpt.x(), trkpt.y());
+        pj_transform(pjtar, pjsrc, 1, 0, &pt.rx(), &pt.ry(), 0);
+        line << pt;
+    }
+
+    QRectF r1 = line.boundingRect();
+    qreal w1 = r1.width();
+    qreal h1 = r1.height();
+
+    QRectF r2 = buffer.rect();
+    qreal w2 = r2.width();
+    qreal h2 = r2.height();
+
+    if(qAbs(w1) > qAbs(h1))
+    {
+        scale.rx() = (w2 - 10) / w1;
+        scale.ry() = -scale.x();
+        xoff = 0;
+        yoff = -((h2 - 10)/scale.y() + h1) / 2;
+    }
+    else
+    {
+        scale.ry() = (-h2 + 10) / h1;
+        scale.rx() = -scale.y();
+        xoff = -((w2 - 10)/scale.x() - w1) / 2;
+        yoff = 0;
+    }
+
+    xoff += r1.left()   - 5/scale.x();
+    yoff += r1.bottom() - 5/scale.y();
+
+    needsRedraw = true;
+}
+
+
+void ITrack::draw(QPainter& p)
+{
+    if(needsRedraw)
+    {
+        draw();
+        needsRedraw = false;
+    }
+
+    p.drawImage(0,0,buffer);
+}
+
+void ITrack::draw()
+{
+    buffer.fill(Qt::transparent);
+    QPainter p(&buffer);
+    USE_ANTI_ALIASING(p, true);
+
+
+    p.setPen(CCanvas::penBorderBlack);
+    p.setBrush(QColor(255,255,255,255));
+    PAINT_ROUNDED_RECT(p,buffer.rect().adjusted(1,1,-1,-1));
+
+    p.setPen(QPen(Qt::darkBlue,2/scale.x()));
+    p.scale(scale.x(), scale.y());
+    p.translate(-xoff,-yoff);
+    p.drawPolyline(line);
+}
diff --git a/src/qlgt/IQlgtOverlay.h b/src/plot/ITrack.h
similarity index 58%
copy from src/qlgt/IQlgtOverlay.h
copy to src/plot/ITrack.h
index 56f3c83..09fd3b8 100644
--- a/src/qlgt/IQlgtOverlay.h
+++ b/src/plot/ITrack.h
@@ -16,39 +16,49 @@
 
 **********************************************************************************************/
 
-#ifndef IQLGTOVERLAY_H
-#define IQLGTOVERLAY_H
+#ifndef ITRACK_H
+#define ITRACK_H
 
-#include <QObject>
+#include <QImage>
+#include <QPolygonF>
 #include <proj_api.h>
-#include "qlgt/IItem.h"
 
-class IQlgtOverlay : public QObject, public IItem
+class QRectF;
+class QPainter;
+class CGisItemTrk;
+
+class ITrack
 {
-    public:
-        IQlgtOverlay(quint64 id, QObject * parent);
-        virtual ~IQlgtOverlay();
+public:
+    ITrack();
+    virtual ~ITrack();
 
-        enum type_e {eEnd,eBase};
+    void setSize(int w, int h);
+    void setTrack(CGisItemTrk * track);
+    void setTrack(const QPolygonF &track);
 
-        struct pt_t : public projXY
-        {
-            int idx;
-        };
+    void save(QImage& image);
 
+protected:
+    void setupProjection(const QRectF &boundingBox);
+    void updateData();
+    void draw(QPainter& p);
+    void draw();
 
-        QString type;
-        QColor color;
-        QList<pt_t> points;
-        qint32 style;
-        quint32 width;
-        quint8 opacity;
+    projPJ pjsrc;
+    projPJ pjtar;
 
-};
+    bool needsRedraw;
+    CGisItemTrk * trk;
+    QPolygonF coords;
+    QPolygonF line;
 
-QDataStream& operator >>(QDataStream& s, IQlgtOverlay& ovl);
-QDataStream& operator <<(QDataStream& s, IQlgtOverlay& ovl);
+    QImage buffer;
 
+    QPointF scale;
+    qint32 xoff;
+    qint32 yoff;
+};
 
-#endif //IQLGTOVERLAY_H
+#endif //ITRACK_H
 
diff --git a/src/qlgt/CImportDatabase.cpp b/src/qlgt/CImportDatabase.cpp
index a67cf75..0a9fc5a 100644
--- a/src/qlgt/CImportDatabase.cpp
+++ b/src/qlgt/CImportDatabase.cpp
@@ -16,9 +16,9 @@
 
 **********************************************************************************************/
 
+#include "helpers/CSettings.h"
 #include "qlgt/CImportDatabase.h"
 #include "qlgt/CQlgtDb.h"
-#include "helpers/CSettings.h"
 
 #include <QtWidgets>
 
@@ -50,7 +50,6 @@ CImportDatabase::~CImportDatabase()
     SETTINGS;
     cfg.setValue("ConvertDB/source", labelSource->text());
     cfg.setValue("ConvertDB/target", labelTarget->text());
-
 }
 
 void CImportDatabase::stdOut(const QString& str)
@@ -85,7 +84,6 @@ void CImportDatabase::slotSelectSource()
     delete dbQlgt;
     textBrowser->clear();
     dbQlgt = new CQlgtDb(filename, this);
-
 }
 
 void CImportDatabase::slotSelectTarget()
diff --git a/src/qlgt/CImportDatabase.h b/src/qlgt/CImportDatabase.h
index 38faf8f..72b034f 100644
--- a/src/qlgt/CImportDatabase.h
+++ b/src/qlgt/CImportDatabase.h
@@ -19,31 +19,30 @@
 #ifndef CIMPORTDATABASE_H
 #define CIMPORTDATABASE_H
 
-#include <QWidget>
-#include <QPointer>
 #include "ui_IImportDatabase.h"
+#include <QPointer>
+#include <QWidget>
 
 class CQlgtDb;
 
 class CImportDatabase : public QWidget, private Ui::IImportDatabase
 {
     Q_OBJECT
-    public:
-        CImportDatabase(QWidget * parent);
-        virtual ~CImportDatabase();
-
-        void stdOut(const QString& str);
-        void stdErr(const QString& str);
+public:
+    CImportDatabase(QWidget * parent);
+    virtual ~CImportDatabase();
 
-    private slots:
-        void slotSelectSource();
-        void slotSelectTarget();
-        void slotStart();
+    void stdOut(const QString& str);
+    void stdErr(const QString& str);
 
+private slots:
+    void slotSelectSource();
+    void slotSelectTarget();
+    void slotStart();
 
-    private:
-        QPointer<CQlgtDb> dbQlgt;
 
+private:
+    QPointer<CQlgtDb> dbQlgt;
 };
 
 #endif //CIMPORTDATABASE_H
diff --git a/src/qlgt/CQlb.cpp b/src/qlgt/CQlb.cpp
index 995eca0..9e1a7f2 100644
--- a/src/qlgt/CQlb.cpp
+++ b/src/qlgt/CQlb.cpp
@@ -17,25 +17,23 @@
 **********************************************************************************************/
 
 #include "CQlb.h"
-#include "qlgt/CQlgtWpt.h"
-#include "qlgt/CQlgtTrack.h"
-#include "qlgt/CQlgtRoute.h"
 #include "qlgt/CQlgtDiary.h"
+#include "qlgt/CQlgtRoute.h"
+#include "qlgt/CQlgtTrack.h"
+#include "qlgt/CQlgtWpt.h"
 #include "qlgt/IQlgtOverlay.h"
 
 
 #include <QtCore>
 
 CQlb::CQlb(QObject * parent)
-: QObject(parent)
+    : QObject(parent)
 {
-
 }
 
 
 CQlb::~CQlb()
 {
-
 }
 
 
@@ -109,37 +107,35 @@ void CQlb::load(QIODevice* ioDevice)
     stream >> type;
     while(type != eEnd)
     {
-
         switch(type)
         {
+        case eWpt:
+            stream >> wpts;
+            break;
 
-            case eWpt:
-                stream >> wpts;
-                break;
-
-            case eTrack:
-                stream >> trks;
-                break;
+        case eTrack:
+            stream >> trks;
+            break;
 
-            case eDiary:
-                stream >> drys;
-                break;
+        case eDiary:
+            stream >> drys;
+            break;
 
-            case eOverlay:
-                stream >> ovls;
-                break;
+        case eOverlay:
+            stream >> ovls;
+            break;
 
-            case eRoute:
-                stream >> rtes;
-                break;
+        case eRoute:
+            stream >> rtes;
+            break;
 
-            case eMapSel:
-                stream >> sels;
-                break;
+        case eMapSel:
+            stream >> sels;
+            break;
 
-            default:
-                ioDevice->close();
-                return;
+        default:
+            ioDevice->close();
+            return;
         }
 
         stream >> type;
diff --git a/src/qlgt/CQlb.h b/src/qlgt/CQlb.h
index 4f61d9e..d5f154f 100644
--- a/src/qlgt/CQlb.h
+++ b/src/qlgt/CQlb.h
@@ -18,9 +18,9 @@
 #ifndef CQLB_H
 #define CQLB_H
 
-#include <QObject>
-#include <QIODevice>
 #include <QByteArray>
+#include <QIODevice>
+#include <QObject>
 
 class CQlgtWpt;
 class CQlgtTrack;
@@ -37,63 +37,80 @@ class IQlgtOverlay;
     ...
     qint32 eEnd
 
-*/
+ */
 class CQlb : public QObject
 {
     Q_OBJECT
-    public:
-        CQlb(QObject * parent);
-        virtual ~CQlb();
-
-        enum type_e {eEnd, eWpt, eTrack, eDiary, eOverlay, eRoute, eMapSel};
-
-        /// collect wapoint data
-        /**
-            This will serialize the waypoint object to wpts
-        */
-        CQlb& operator <<(CQlgtWpt &wpt);
-
-        CQlb& operator <<(CQlgtTrack &trk);
-
-        CQlb& operator <<(CQlgtDiary &dry);
-
-        CQlb& operator <<(IQlgtOverlay &ovl);
-
-        CQlb& operator <<(CQlgtRoute &rte);
-
-
-        /// get access to stored waypoint data
-        QByteArray& waypoints(){return wpts;}
-        /// get access to stored track data
-        QByteArray& tracks(){return trks;}
-        /// get access to stored diary data
-        QByteArray& diary(){return drys;}
-        /// get access to stored overlay data
-        QByteArray& overlays(){return ovls;}
-        /// get access to stored route data
-        QByteArray& routes(){return rtes;}
-        /// get access to stored map selection data
-        QByteArray& mapsels(){return sels;}
-        /// write collected data to file
-        void save(const QString& filename);
-        void save(QIODevice *ioDevice);
-        /// read file and store elements in their designated byte arrays
-        void load(const QString& filename);
-        void load(QIODevice *ioDevice);
-
-    private:
-        /// byte array to hold all waypoints
-        QByteArray wpts;
-        /// byte array to hold all tracks
-        QByteArray trks;
-        /// byte array to hold all routes
-        QByteArray rtes;
-        /// byte array to hold diary
-        QByteArray drys;
-        /// byte array to hold overlays
-        QByteArray ovls;
-        /// byte array to hold map selections
-        QByteArray sels;
-
+public:
+    CQlb(QObject * parent);
+    virtual ~CQlb();
+
+    enum type_e {eEnd, eWpt, eTrack, eDiary, eOverlay, eRoute, eMapSel};
+
+    /// collect wapoint data
+    /**
+        This will serialize the waypoint object to wpts
+     */
+    CQlb& operator <<(CQlgtWpt &wpt);
+
+    CQlb& operator <<(CQlgtTrack &trk);
+
+    CQlb& operator <<(CQlgtDiary &dry);
+
+    CQlb& operator <<(IQlgtOverlay &ovl);
+
+    CQlb& operator <<(CQlgtRoute &rte);
+
+
+    /// get access to stored waypoint data
+    QByteArray& waypoints()
+    {
+        return wpts;
+    }
+    /// get access to stored track data
+    QByteArray& tracks()
+    {
+        return trks;
+    }
+    /// get access to stored diary data
+    QByteArray& diary()
+    {
+        return drys;
+    }
+    /// get access to stored overlay data
+    QByteArray& overlays()
+    {
+        return ovls;
+    }
+    /// get access to stored route data
+    QByteArray& routes()
+    {
+        return rtes;
+    }
+    /// get access to stored map selection data
+    QByteArray& mapsels()
+    {
+        return sels;
+    }
+    /// write collected data to file
+    void save(const QString& filename);
+    void save(QIODevice *ioDevice);
+    /// read file and store elements in their designated byte arrays
+    void load(const QString& filename);
+    void load(QIODevice *ioDevice);
+
+private:
+    /// byte array to hold all waypoints
+    QByteArray wpts;
+    /// byte array to hold all tracks
+    QByteArray trks;
+    /// byte array to hold all routes
+    QByteArray rtes;
+    /// byte array to hold diary
+    QByteArray drys;
+    /// byte array to hold overlays
+    QByteArray ovls;
+    /// byte array to hold map selections
+    QByteArray sels;
 };
 #endif                           //CQLB_H
diff --git a/src/qlgt/CQlgtDb.cpp b/src/qlgt/CQlgtDb.cpp
index bc4f8ea..4f9e4c1 100644
--- a/src/qlgt/CQlgtDb.cpp
+++ b/src/qlgt/CQlgtDb.cpp
@@ -16,22 +16,22 @@
 
 **********************************************************************************************/
 
-#include "qlgt/CQlgtDb.h"
-#include "qlgt/CQmsDb.h"
+#include "qlgt/CImportDatabase.h"
 #include "qlgt/CQlb.h"
+#include "qlgt/CQlgtDb.h"
 #include "qlgt/CQlgtFolder.h"
-#include "qlgt/CQlgtWpt.h"
-#include "qlgt/CQlgtTrack.h"
 #include "qlgt/CQlgtRoute.h"
+#include "qlgt/CQlgtTrack.h"
+#include "qlgt/CQlgtWpt.h"
+#include "qlgt/CQmsDb.h"
 #include "qlgt/IQlgtOverlay.h"
-#include "qlgt/CImportDatabase.h"
 
-#include "gis/db/macros.h"
 #include "gis/WptIcons.h"
-#include "gis/wpt/CGisItemWpt.h"
-#include "gis/trk/CGisItemTrk.h"
-#include "gis/rte/CGisItemRte.h"
+#include "gis/db/macros.h"
 #include "gis/ovl/CGisItemOvlArea.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/wpt/CGisItemWpt.h"
 
 #include <QtSql>
 #include <QtWidgets>
@@ -606,7 +606,7 @@ void CQlgtDb::start(const QString& filename)
 
     QSqlQuery query(db);
     query.prepare("Select parent, child FROM folder2folder");
-    QUERY_EXEC(return;);
+    QUERY_EXEC(return; );
     while(query.next())
     {
         quint64 idParent    = query.value(0).toULongLong();
@@ -615,7 +615,7 @@ void CQlgtDb::start(const QString& filename)
     }
 
     query.prepare("Select parent, child FROM folder2item");
-    QUERY_EXEC(return;);
+    QUERY_EXEC(return; );
     while(query.next())
     {
         quint64 idParent    = query.value(0).toULongLong();
@@ -625,7 +625,6 @@ void CQlgtDb::start(const QString& filename)
 
     delete dbQms;
     gui->stdOut(tr("------ Done ------"));
-
 }
 
 void CQlgtDb::xferFolders()
@@ -638,10 +637,10 @@ void CQlgtDb::xferFolders()
 
     QSqlQuery query(db);
     query.prepare("SELECT id FROM folders");
-    QUERY_EXEC(return;);
+    QUERY_EXEC(return; );
     while(query.next())
     {
-        progress.setValue(cnt++ * 100 / nFolders);
+        progress.setValue(cnt++ *100 / nFolders);
         if (progress.wasCanceled())
         {
             break;
@@ -677,11 +676,10 @@ void CQlgtDb::xferItems()
 
     QSqlQuery query(db);
     query.prepare("SELECT id FROM items");
-    QUERY_EXEC(return;);
+    QUERY_EXEC(return; );
     while(query.next())
     {
-
-        progress.setValue(cnt++ * 100 / nItems);
+        progress.setValue(cnt++ *100 / nItems);
         if (progress.wasCanceled())
         {
             break;
@@ -695,7 +693,7 @@ void CQlgtDb::xferItems()
     gui->stdOut(tr("Import folders..."));
 
     query.prepare("SELECT id FROM folders");
-    QUERY_EXEC(return;);
+    QUERY_EXEC(return; );
 }
 
 void CQlgtDb::xferItem(quint64 id)
@@ -703,7 +701,7 @@ void CQlgtDb::xferItem(quint64 id)
     QSqlQuery query(db);
     query.prepare("SELECT type, data FROM items WHERE id=:id");
     query.bindValue(":id", id);
-    QUERY_EXEC(return;);
+    QUERY_EXEC(return; );
 
     if(query.next())
     {
@@ -722,6 +720,7 @@ void CQlgtDb::xferItem(quint64 id)
             nWpt++;
             break;
         }
+
         case eTrk:
         {
             CQlgtTrack trk1(id, 0);
@@ -730,6 +729,7 @@ void CQlgtDb::xferItem(quint64 id)
             nTrk++;
             break;
         }
+
         case eRte:
         {
             CQlgtRoute rte1(id, 0);
@@ -738,6 +738,7 @@ void CQlgtDb::xferItem(quint64 id)
             nRte++;
             break;
         }
+
         case eOvl:
         {
             IQlgtOverlay ovl1(id, 0);
@@ -752,6 +753,5 @@ void CQlgtDb::xferItem(quint64 id)
             break;
         }
         }
-
     }
 }
diff --git a/src/qlgt/CQlgtDb.h b/src/qlgt/CQlgtDb.h
index deb55f6..b1439d2 100644
--- a/src/qlgt/CQlgtDb.h
+++ b/src/qlgt/CQlgtDb.h
@@ -19,61 +19,61 @@
 #ifndef CQLGTDB_H
 #define CQLGTDB_H
 
+#include <QDir>
 #include <QObject>
+#include <QPointer>
 #include <QSqlDatabase>
 #include <QTreeWidgetItem>
-#include <QDir>
-#include <QPointer>
 
 class CImportDatabase;
 class CQmsDb;
 
 class CQlgtDb : public QObject
 {
-    public:
-        enum EntryType_e
-        {
-            eWpt        = QTreeWidgetItem::UserType + 3,
-            eTrk        = QTreeWidgetItem::UserType + 4,
-            eRte        = QTreeWidgetItem::UserType + 5,
-            eOvl        = QTreeWidgetItem::UserType + 6,
-            eMap        = QTreeWidgetItem::UserType + 7,
-            eDry        = QTreeWidgetItem::UserType + 8,
-
-            eFolder0    = QTreeWidgetItem::UserType + 100,
-            eFolderT    = QTreeWidgetItem::UserType + 101,
-            eFolder1    = QTreeWidgetItem::UserType + 102,
-            eFolder2    = QTreeWidgetItem::UserType + 103,
-            eFolderN    = QTreeWidgetItem::UserType + 104
-        };
-
-        CQlgtDb(const QString& filename, CImportDatabase * parent);
-        virtual ~CQlgtDb();
-
-        void start(const QString& filename);
-
-    private:
-        void initDB();
-        void migrateDB(int version);
-        void printStatistic();
-        void xferFolders();
-        void xferItems();
-        void xferItem(quint64 id);
-        QSqlDatabase db;
-        QDir        path;
-        QString     name;
-
-        CImportDatabase * gui;
-
-        QPointer<CQmsDb> dbQms;
-
-        quint32 nItems;
-        quint32 nFolders;
-        quint32 nWpt;
-        quint32 nTrk;
-        quint32 nRte;
-        quint32 nOvl;
-        quint32 nDiary;
+public:
+    enum EntryType_e
+    {
+        eWpt        = QTreeWidgetItem::UserType + 3,
+        eTrk        = QTreeWidgetItem::UserType + 4,
+        eRte        = QTreeWidgetItem::UserType + 5,
+        eOvl        = QTreeWidgetItem::UserType + 6,
+        eMap        = QTreeWidgetItem::UserType + 7,
+        eDry        = QTreeWidgetItem::UserType + 8,
+
+        eFolder0    = QTreeWidgetItem::UserType + 100,
+        eFolderT    = QTreeWidgetItem::UserType + 101,
+        eFolder1    = QTreeWidgetItem::UserType + 102,
+        eFolder2    = QTreeWidgetItem::UserType + 103,
+        eFolderN    = QTreeWidgetItem::UserType + 104
+    };
+
+    CQlgtDb(const QString& filename, CImportDatabase * parent);
+    virtual ~CQlgtDb();
+
+    void start(const QString& filename);
+
+private:
+    void initDB();
+    void migrateDB(int version);
+    void printStatistic();
+    void xferFolders();
+    void xferItems();
+    void xferItem(quint64 id);
+    QSqlDatabase db;
+    QDir path;
+    QString name;
+
+    CImportDatabase * gui;
+
+    QPointer<CQmsDb> dbQms;
+
+    quint32 nItems;
+    quint32 nFolders;
+    quint32 nWpt;
+    quint32 nTrk;
+    quint32 nRte;
+    quint32 nOvl;
+    quint32 nDiary;
 };
 
 #endif //CQLGTDB_H
diff --git a/src/qlgt/CQlgtDiary.cpp b/src/qlgt/CQlgtDiary.cpp
index 89409cb..d208a41 100644
--- a/src/qlgt/CQlgtDiary.cpp
+++ b/src/qlgt/CQlgtDiary.cpp
@@ -20,17 +20,19 @@
 
 struct diary_head_entry_t
 {
-    diary_head_entry_t() : type(CQlgtDiary::eEnd), offset(0) {}
-    qint32      type;
-    quint32     offset;
-    QByteArray  data;
+    diary_head_entry_t() : type(CQlgtDiary::eEnd), offset(0)
+    {
+    }
+    qint32 type;
+    quint32 offset;
+    QByteArray data;
 };
 
 
 QDataStream& operator >>(QDataStream& s, CQlgtDiary& diary)
 {
     QIODevice * dev = s.device();
-    qint64      pos = dev->pos();
+    qint64 pos = dev->pos();
 
     char magic[9];
     s.readRawData(magic,9);
@@ -48,7 +50,10 @@ QDataStream& operator >>(QDataStream& s, CQlgtDiary& diary)
         diary_head_entry_t entry;
         s >> entry.type >> entry.offset;
         entries << entry;
-        if(entry.type == CQlgtDiary::eEnd) break;
+        if(entry.type == CQlgtDiary::eEnd)
+        {
+            break;
+        }
     }
 
     QList<diary_head_entry_t>::iterator entry = entries.begin();
@@ -59,20 +64,20 @@ QDataStream& operator >>(QDataStream& s, CQlgtDiary& diary)
         s >> entry->data;
         switch(entry->type)
         {
-            case CQlgtDiary::eBase:
-            {
-                QString comment, name,key;
-                QDataStream s1(&entry->data, QIODevice::ReadOnly);
-                s1.setVersion(QDataStream::Qt_4_5);
-
-                s1 >> diary.timestamp;
-                s1 >> diary.comment;
-                s1 >> diary.name;
-                s1 >> diary.keyProjectGeoDB;
-                s1 >> diary.key;
-
-                break;
-            }
+        case CQlgtDiary::eBase:
+        {
+            QString comment, name,key;
+            QDataStream s1(&entry->data, QIODevice::ReadOnly);
+            s1.setVersion(QDataStream::Qt_4_5);
+
+            s1 >> diary.timestamp;
+            s1 >> diary.comment;
+            s1 >> diary.name;
+            s1 >> diary.keyProjectGeoDB;
+            s1 >> diary.key;
+
+            break;
+        }
 //            case CQlgtDiary::eWpt:
 //            {
 //                int cnt;
@@ -122,7 +127,7 @@ QDataStream& operator >>(QDataStream& s, CQlgtDiary& diary)
 //                break;
 
 //            }
-            default:;
+        default:;
         }
 
         ++entry;
@@ -248,11 +253,9 @@ CQlgtDiary::CQlgtDiary(quint64 id, QObject *parent)
     : QObject(parent)
     , IItem(id)
 {
-
 }
 
 CQlgtDiary::~CQlgtDiary()
 {
-
 }
 
diff --git a/src/qlgt/CQlgtDiary.h b/src/qlgt/CQlgtDiary.h
index dae7045..f8e1d77 100644
--- a/src/qlgt/CQlgtDiary.h
+++ b/src/qlgt/CQlgtDiary.h
@@ -19,18 +19,18 @@
 #ifndef CQLGTDIARY_H
 #define CQLGTDIARY_H
 
-#include <QObject>
 #include "qlgt/IItem.h"
+#include <QObject>
 
 class CQlgtDiary : public QObject, public IItem
 {
-    public:
-        CQlgtDiary(quint64 id, QObject * parent);
-        virtual ~CQlgtDiary();
+public:
+    CQlgtDiary(quint64 id, QObject * parent);
+    virtual ~CQlgtDiary();
 
-        enum type_e {eEnd,eBase, eWpt, eTrk, eRte};
+    enum type_e {eEnd,eBase, eWpt, eTrk, eRte};
 
-        quint64 keyProjectGeoDB;
+    quint64 keyProjectGeoDB;
 };
 
 QDataStream& operator >>(QDataStream& s, CQlgtDiary& diary);
diff --git a/src/qlgt/CQlgtFolder.cpp b/src/qlgt/CQlgtFolder.cpp
index 67244e9..5a88e40 100644
--- a/src/qlgt/CQlgtFolder.cpp
+++ b/src/qlgt/CQlgtFolder.cpp
@@ -16,10 +16,10 @@
 
 **********************************************************************************************/
 
-#include "qlgt/CQlgtFolder.h"
+#include "gis/db/macros.h"
 #include "qlgt/CQlgtDb.h"
 #include "qlgt/CQlgtDiary.h"
-#include "gis/db/macros.h"
+#include "qlgt/CQlgtFolder.h"
 
 #include <QtSql>
 
@@ -33,7 +33,7 @@ CQlgtFolder::CQlgtFolder(quint64 id, QSqlDatabase &db)
 
     query.prepare("SELECT type, name, comment, locked FROM folders WHERE id=:id");
     query.bindValue(":id", id);
-    QUERY_EXEC(return;);
+    QUERY_EXEC(return; );
 
     if(query.next())
     {
@@ -45,7 +45,7 @@ CQlgtFolder::CQlgtFolder(quint64 id, QSqlDatabase &db)
 
     query.prepare("SELECT id, data FROM diarys WHERE parent=:id");
     query.bindValue(":id", id);
-    QUERY_EXEC(return;);
+    QUERY_EXEC(return; );
 
     if(query.next())
     {
@@ -60,7 +60,7 @@ CQlgtFolder::CQlgtFolder(quint64 id, QSqlDatabase &db)
 
     query.prepare("SELECT child FROM folder2item WHERE parent=:folder");
     query.bindValue(":folder", id);
-    QUERY_EXEC(return;);
+    QUERY_EXEC(return; );
     while(query.next())
     {
         items << query.value(0).toULongLong();
@@ -69,6 +69,5 @@ CQlgtFolder::CQlgtFolder(quint64 id, QSqlDatabase &db)
 
 CQlgtFolder::~CQlgtFolder()
 {
-
 }
 
diff --git a/src/qlgt/CQlgtFolder.h b/src/qlgt/CQlgtFolder.h
index e0489f4..92c1213 100644
--- a/src/qlgt/CQlgtFolder.h
+++ b/src/qlgt/CQlgtFolder.h
@@ -27,19 +27,19 @@ class CQlgtDiary;
 
 class CQlgtFolder : public QObject
 {
-    public:
-        CQlgtFolder(quint64 id, QSqlDatabase& db);
-        virtual ~CQlgtFolder();
+public:
+    CQlgtFolder(quint64 id, QSqlDatabase& db);
+    virtual ~CQlgtFolder();
 
-        qint32 type;
-        QString name;
-        QString comment;
-        bool locked;
+    qint32 type;
+    QString name;
+    QString comment;
+    bool locked;
 
-        CQlgtDiary * diary;
+    CQlgtDiary * diary;
 
-        quint64 id;
-        QSet<quint64> items;
+    quint64 id;
+    QSet<quint64> items;
 };
 
 #endif //CQLGTFOLDER_H
diff --git a/src/qlgt/CQlgtRoute.cpp b/src/qlgt/CQlgtRoute.cpp
index 622fbcc..a3aeb5a 100644
--- a/src/qlgt/CQlgtRoute.cpp
+++ b/src/qlgt/CQlgtRoute.cpp
@@ -20,10 +20,12 @@
 
 struct rte_head_entry_t
 {
-    rte_head_entry_t() : type(CQlgtRoute::eEnd), offset(0) {}
-    qint32      type;
-    quint32     offset;
-    QByteArray  data;
+    rte_head_entry_t() : type(CQlgtRoute::eEnd), offset(0)
+    {
+    }
+    qint32 type;
+    quint32 offset;
+    QByteArray data;
 };
 
 
@@ -31,7 +33,7 @@ QDataStream& operator >>(QDataStream& s, CQlgtRoute& route)
 {
     quint32 nRtePts = 0;
     QIODevice * dev = s.device();
-    qint64      pos = dev->pos();
+    qint64 pos = dev->pos();
 
     char magic[9];
     s.readRawData(magic,9);
@@ -49,7 +51,10 @@ QDataStream& operator >>(QDataStream& s, CQlgtRoute& route)
         rte_head_entry_t entry;
         s >> entry.type >> entry.offset;
         entries << entry;
-        if(entry.type == CQlgtRoute::eEnd) break;
+        if(entry.type == CQlgtRoute::eEnd)
+        {
+            break;
+        }
     }
 
     QList<rte_head_entry_t>::iterator entry = entries.begin();
@@ -61,48 +66,47 @@ QDataStream& operator >>(QDataStream& s, CQlgtRoute& route)
 
         switch(entry->type)
         {
-            case CQlgtRoute::eBase:
-            {
+        case CQlgtRoute::eBase:
+        {
+            QDataStream s1(&entry->data, QIODevice::ReadOnly);
+            s1.setVersion(QDataStream::Qt_4_5);
 
-                QDataStream s1(&entry->data, QIODevice::ReadOnly);
-                s1.setVersion(QDataStream::Qt_4_5);
+            s1 >> route.key;
+            s1 >> route.timestamp;
+            s1 >> route.name;
+            s1 >> route.iconString;
+            s1 >> route.ttime;
+            s1 >> route.parentWpt;
 
-                s1 >> route.key;
-                s1 >> route.timestamp;
-                s1 >> route.name;
-                s1 >> route.iconString;
-                s1 >> route.ttime;
-                s1 >> route.parentWpt;
+            break;
+        }
 
-                break;
-            }
+        case CQlgtRoute::eRtePts:
+        {
+            QDataStream s1(&entry->data, QIODevice::ReadOnly);
+            s1.setVersion(QDataStream::Qt_4_5);
+            quint32 n;
+
+            route.priRoute.clear();
+            s1 >> nRtePts;
 
-            case CQlgtRoute::eRtePts:
+            for(n = 0; n < nRtePts; ++n)
             {
-                QDataStream s1(&entry->data, QIODevice::ReadOnly);
-                s1.setVersion(QDataStream::Qt_4_5);
-                quint32 n;
-
-                route.priRoute.clear();
-                s1 >> nRtePts;
-
-                for(n = 0; n < nRtePts; ++n)
-                {
-                    CQlgtRoute::pt_t rtept;
-                    float u, v;
-                    QString action;
-
-                    s1 >> u;
-                    s1 >> v;
-                    s1 >> action;
-
-                    rtept.lon = u;
-                    rtept.lat = v;
-                    rtept.action = action;
-                    route.priRoute << rtept;
-                }
-                break;
+                CQlgtRoute::pt_t rtept;
+                float u, v;
+                QString action;
+
+                s1 >> u;
+                s1 >> v;
+                s1 >> action;
+
+                rtept.lon = u;
+                rtept.lat = v;
+                rtept.action = action;
+                route.priRoute << rtept;
             }
+            break;
+        }
 //            case CQlgtRoute::eRteSec:
 //            {
 //                QDataStream s1(&entry->data, QIODevice::ReadOnly);
@@ -129,7 +133,7 @@ QDataStream& operator >>(QDataStream& s, CQlgtRoute& route)
 //                }
 //                break;
 //            }
-            default:;
+        default:;
         }
 
         ++entry;
@@ -260,11 +264,9 @@ CQlgtRoute::CQlgtRoute(quint64 id, QObject *parent)
     : QObject(parent)
     , IItem(id)
 {
-
 }
 
 CQlgtRoute::~CQlgtRoute()
 {
-
 }
 
diff --git a/src/qlgt/CQlgtRoute.h b/src/qlgt/CQlgtRoute.h
index 30b2758..90ec92e 100644
--- a/src/qlgt/CQlgtRoute.h
+++ b/src/qlgt/CQlgtRoute.h
@@ -19,40 +19,39 @@
 #ifndef CQLGTROUTE_H
 #define CQLGTROUTE_H
 
+#include "qlgt/IItem.h"
 #include <QObject>
 #include <proj_api.h>
-#include "qlgt/IItem.h"
 
 class CQlgtRoute : public QObject, public IItem
 {
-    public:
-        CQlgtRoute(quint64 id, QObject * parent);
-        virtual ~CQlgtRoute();
+public:
+    CQlgtRoute(quint64 id, QObject * parent);
+    virtual ~CQlgtRoute();
 
-        enum type_e {eEnd, eBase, eRtePts, eRteSec};
-        struct pt_t
-        {
-            float lon;
-            float lat;
+    enum type_e {eEnd, eBase, eRtePts, eRteSec};
+    struct pt_t
+    {
+        float lon;
+        float lat;
 
-            QString action;
+        QString action;
 
-            operator const projXY ()
-            {
-                projXY p;
-                p.u = lon;
-                p.v = lat;
-                return p;
-            }
-        };
-
-        /// primary route, just the basic points like A to B via C
-        QVector<pt_t> priRoute;
+        operator const projXY ()
+        {
+            projXY p;
+            p.u = lon;
+            p.v = lat;
+            return p;
+        }
+    };
 
-        quint32 ttime;
+    /// primary route, just the basic points like A to B via C
+    QVector<pt_t> priRoute;
 
-        QString iconString;
+    quint32 ttime;
 
+    QString iconString;
 };
 
 
diff --git a/src/qlgt/CQlgtTrack.cpp b/src/qlgt/CQlgtTrack.cpp
index 30d9841..1858b7c 100644
--- a/src/qlgt/CQlgtTrack.cpp
+++ b/src/qlgt/CQlgtTrack.cpp
@@ -39,10 +39,12 @@ QDataStream& operator <<(QDataStream& s, CFlags& flag)
 
 struct trk_head_entry_t
 {
-    trk_head_entry_t() : type(CQlgtTrack::eEnd), offset(0) {}
-    qint32      type;
-    quint32     offset;
-    QByteArray  data;
+    trk_head_entry_t() : type(CQlgtTrack::eEnd), offset(0)
+    {
+    }
+    qint32 type;
+    quint32 offset;
+    QByteArray data;
 };
 
 
@@ -50,7 +52,7 @@ QDataStream& operator >>(QDataStream& s, CQlgtTrack& track)
 {
     quint32 nTrkPts = 0;
     QIODevice * dev = s.device();
-    qint64      pos = dev->pos();
+    qint64 pos = dev->pos();
 
     char magic[9];
     s.readRawData(magic,9);
@@ -68,7 +70,10 @@ QDataStream& operator >>(QDataStream& s, CQlgtTrack& track)
         trk_head_entry_t entry;
         s >> entry.type >> entry.offset;
         entries << entry;
-        if(entry.type == CQlgtTrack::eEnd) break;
+        if(entry.type == CQlgtTrack::eEnd)
+        {
+            break;
+        }
     }
 
     QList<trk_head_entry_t>::iterator entry = entries.begin();
@@ -80,100 +85,99 @@ QDataStream& operator >>(QDataStream& s, CQlgtTrack& track)
 
         switch(entry->type)
         {
-            case CQlgtTrack::eBase:
+        case CQlgtTrack::eBase:
+        {
+            QString key;
+
+            QDataStream s1(&entry->data, QIODevice::ReadOnly);
+            s1.setVersion(QDataStream::Qt_4_5);
+
+            s1 >> track.key;
+            s1 >> track.timestamp;
+            s1 >> track.name;
+            s1 >> track.comment;
+            s1 >> track.colorIdx;
+            s1 >> track.parentWpt;
+            if(!s1.atEnd())
+            {
+                s1 >> track.doScaleWpt2Track;
+            }
+            if(!s1.atEnd())
             {
+                s1 >> track.cntMedianFilterApplied;
+            }
+            if(!s1.atEnd())
+            {
+                s1 >> track.useMultiColor;
+            }
+            if(!s1.atEnd())
+            {
+                s1 >> track.idMultiColor;
+            }
 
-                QString key;
-
-                QDataStream s1(&entry->data, QIODevice::ReadOnly);
-                s1.setVersion(QDataStream::Qt_4_5);
-
-                s1 >> track.key;
-                s1 >> track.timestamp;
-                s1 >> track.name;
-                s1 >> track.comment;
-                s1 >> track.colorIdx;
-                s1 >> track.parentWpt;
-                if(!s1.atEnd())
-                {
-                    s1 >> track.doScaleWpt2Track;
-                }
-                if(!s1.atEnd())
-                {
-                    s1 >> track.cntMedianFilterApplied;
-                }
-                if(!s1.atEnd())
-                {
-                    s1 >> track.useMultiColor;
-                }
-                if(!s1.atEnd())
-                {
-                    s1 >> track.idMultiColor;
-                }
-
-                //track.setColor(track.colorIdx);
+            //track.setColor(track.colorIdx);
 
-                break;
+            break;
+        }
+
+        case CQlgtTrack::eTrkPts:
+        {
+            QDataStream s1(&entry->data, QIODevice::ReadOnly);
+            s1.setVersion(QDataStream::Qt_4_5);
+            quint32 n;
+
+            track.track.clear();
+            s1 >> nTrkPts;
+
+            for(n = 0; n < nTrkPts; ++n)
+            {
+                CQlgtTrack::pt_t trkpt;
+                s1 >> trkpt.lon;
+                s1 >> trkpt.lat;
+                s1 >> trkpt.ele;
+                s1 >> trkpt.timestamp;
+                s1 >> trkpt.flags;
+
+                trkpt._lon = trkpt.lon;
+                trkpt._lat = trkpt.lat;
+                trkpt._ele = trkpt.ele;
+                trkpt._timestamp = trkpt.timestamp;
+                trkpt._timestamp_msec = trkpt.timestamp_msec;
+
+                track << trkpt;
             }
+            break;
+        }
 
-            case CQlgtTrack::eTrkPts:
+        case CQlgtTrack::eTrkPts2:
+        {
+            QDataStream s1(&entry->data, QIODevice::ReadOnly);
+            s1.setVersion(QDataStream::Qt_4_5);
+
+            quint32 nTrkPts1 = 0;
+
+            s1 >> nTrkPts1;
+            if(nTrkPts1 != nTrkPts)
             {
-                QDataStream s1(&entry->data, QIODevice::ReadOnly);
-                s1.setVersion(QDataStream::Qt_4_5);
-                quint32 n;
-
-                track.track.clear();
-                s1 >> nTrkPts;
-
-                for(n = 0; n < nTrkPts; ++n)
-                {
-                    CQlgtTrack::pt_t trkpt;
-                    s1 >> trkpt.lon;
-                    s1 >> trkpt.lat;
-                    s1 >> trkpt.ele;
-                    s1 >> trkpt.timestamp;
-                    s1 >> trkpt.flags;
-
-                    trkpt._lon = trkpt.lon;
-                    trkpt._lat = trkpt.lat;
-                    trkpt._ele = trkpt.ele;
-                    trkpt._timestamp = trkpt.timestamp;
-                    trkpt._timestamp_msec = trkpt.timestamp_msec;
-
-                    track << trkpt;
-                }
+                QMessageBox::warning(0, QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of training data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
                 break;
             }
 
-            case CQlgtTrack::eTrkPts2:
+            QList<CQlgtTrack::pt_t>::iterator pt1 = track.track.begin();
+            while (pt1 != track.track.end())
             {
-                QDataStream s1(&entry->data, QIODevice::ReadOnly);
-                s1.setVersion(QDataStream::Qt_4_5);
-
-                quint32 nTrkPts1 = 0;
-
-                s1 >> nTrkPts1;
-                if(nTrkPts1 != nTrkPts)
-                {
-                    QMessageBox::warning(0, QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of training data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
-                    break;
-                }
-
-                QList<CQlgtTrack::pt_t>::iterator pt1 = track.track.begin();
-                while (pt1 != track.track.end())
-                {
-                    quint32 dummy;
-                    s1 >> pt1->timestamp_msec;
-                    s1 >> dummy;
-                    s1 >> dummy;
-                    s1 >> dummy;
-                    s1 >> dummy;
-                    s1 >> dummy;
-
-                    pt1++;
-                }
-                break;
+                quint32 dummy;
+                s1 >> pt1->timestamp_msec;
+                s1 >> dummy;
+                s1 >> dummy;
+                s1 >> dummy;
+                s1 >> dummy;
+                s1 >> dummy;
+
+                pt1++;
             }
+            break;
+        }
 
 //            case CQlgtTrack::eTrain:
 //            {
@@ -200,109 +204,109 @@ QDataStream& operator >>(QDataStream& s, CQlgtTrack& track)
 //                track.setTraineeData();
 //                break;
 //            }
-            case CQlgtTrack::eTrkExt1:
+        case CQlgtTrack::eTrkExt1:
+        {
+            QDataStream s1(&entry->data, QIODevice::ReadOnly);
+            s1.setVersion(QDataStream::Qt_4_5);
+            quint32 nTrkPts1 = 0;
+
+            s1 >> nTrkPts1;
+            if(nTrkPts1 != nTrkPts)
             {
-                QDataStream s1(&entry->data, QIODevice::ReadOnly);
-                s1.setVersion(QDataStream::Qt_4_5);
-                quint32 nTrkPts1 = 0;
-
-                s1 >> nTrkPts1;
-                if(nTrkPts1 != nTrkPts)
-                {
-                    QMessageBox::warning(0, QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of extended data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
-                    break;
-                }
-
-                QList<CQlgtTrack::pt_t>::iterator pt1 = track.track.begin();
-                while (pt1 != track.track.end())
-                {
-                                 ///< [m]
-                    s1 >> pt1->altitude;
-                                 ///< [m]
-                    s1 >> pt1->height;
-                                 ///< [m/s]
-                    s1 >> pt1->velocity;
-                                 ///< [deg]
-                    s1 >> pt1->heading;
-                                 ///< [deg]
-                    s1 >> pt1->magnetic;
-                    s1 >> pt1->vdop;
-                    s1 >> pt1->hdop;
-                    s1 >> pt1->pdop;
-                    s1 >> pt1->x;///< [m] cartesian gps coordinate
-                    s1 >> pt1->y;///< [m] cartesian gps coordinate
-                    s1 >> pt1->z;///< [m] cartesian gps coordinate
-                                 ///< [m/s] velocity
-                    s1 >> pt1->vx;
-                                 ///< [m/s] velocity
-                    s1 >> pt1->vy;
+                QMessageBox::warning(0, QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of extended data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
+                break;
+            }
+
+            QList<CQlgtTrack::pt_t>::iterator pt1 = track.track.begin();
+            while (pt1 != track.track.end())
+            {
+                ///< [m]
+                s1 >> pt1->altitude;
+                ///< [m]
+                s1 >> pt1->height;
+                ///< [m/s]
+                s1 >> pt1->velocity;
+                ///< [deg]
+                s1 >> pt1->heading;
+                ///< [deg]
+                s1 >> pt1->magnetic;
+                s1 >> pt1->vdop;
+                s1 >> pt1->hdop;
+                s1 >> pt1->pdop;
+                s1 >> pt1->x;    ///< [m] cartesian gps coordinate
+                s1 >> pt1->y;    ///< [m] cartesian gps coordinate
+                s1 >> pt1->z;    ///< [m] cartesian gps coordinate
                                  ///< [m/s] velocity
-                    s1 >> pt1->vz;
-                    pt1++;
-                }
+                s1 >> pt1->vx;
+                ///< [m/s] velocity
+                s1 >> pt1->vy;
+                ///< [m/s] velocity
+                s1 >> pt1->vz;
+                pt1++;
+            }
+
+            track.setExt1Data();
+            break;
+        }
+
+        case CQlgtTrack::eTrkShdw:
+        {
+            QDataStream s1(&entry->data, QIODevice::ReadOnly);
+            s1.setVersion(QDataStream::Qt_4_5);
+            quint32 n;
+
+            quint32 nTrkPts1 = 0;
 
-                track.setExt1Data();
+            s1 >> nTrkPts1;
+            if(nTrkPts1 != nTrkPts)
+            {
+                QMessageBox::warning(0, QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of shadow data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
                 break;
             }
 
-            case CQlgtTrack::eTrkShdw:
+            for(n = 0; n < nTrkPts; ++n)
             {
-                QDataStream s1(&entry->data, QIODevice::ReadOnly);
-                s1.setVersion(QDataStream::Qt_4_5);
-                quint32 n;
-
-                quint32 nTrkPts1 = 0;
-
-                s1 >> nTrkPts1;
-                if(nTrkPts1 != nTrkPts)
-                {
-                    QMessageBox::warning(0, QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of shadow data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
-                    break;
-                }
-
-                for(n = 0; n < nTrkPts; ++n)
-                {
-                    CQlgtTrack::pt_t& trkpt = track.track[n];
-                    s1 >> trkpt._lon;
-                    s1 >> trkpt._lat;
-                    s1 >> trkpt._ele;
-                }
-                track.hasShadow1 = true;
-                break;
+                CQlgtTrack::pt_t& trkpt = track.track[n];
+                s1 >> trkpt._lon;
+                s1 >> trkpt._lat;
+                s1 >> trkpt._ele;
             }
+            track.hasShadow1 = true;
+            break;
+        }
 
-            case CQlgtTrack::eTrkShdw2:
+        case CQlgtTrack::eTrkShdw2:
+        {
+            QDataStream s1(&entry->data, QIODevice::ReadOnly);
+            s1.setVersion(QDataStream::Qt_4_5);
+            quint32 n;
+
+            quint32 nTrkPts1 = 0;
+
+            s1 >> nTrkPts1;
+            if(nTrkPts1 != nTrkPts)
             {
-                QDataStream s1(&entry->data, QIODevice::ReadOnly);
-                s1.setVersion(QDataStream::Qt_4_5);
-                quint32 n;
-
-                quint32 nTrkPts1 = 0;
-
-                s1 >> nTrkPts1;
-                if(nTrkPts1 != nTrkPts)
-                {
-                    QMessageBox::warning(0, QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of shadow data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
-                    break;
-                }
-
-                for(n = 0; n < nTrkPts; ++n)
-                {
-                    quint32 dummy;
-                    CQlgtTrack::pt_t& trkpt = track.track[n];
-                    s1 >> trkpt._timestamp;
-                    s1 >> trkpt._timestamp_msec;
-                    s1 >> dummy;
-                    s1 >> dummy;
-                    s1 >> dummy;
-                    s1 >> dummy;
-                    s1 >> dummy;
-                }
-                track.hasShadow2 = true;
+                QMessageBox::warning(0, QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of shadow data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
                 break;
             }
 
-            default:;
+            for(n = 0; n < nTrkPts; ++n)
+            {
+                quint32 dummy;
+                CQlgtTrack::pt_t& trkpt = track.track[n];
+                s1 >> trkpt._timestamp;
+                s1 >> trkpt._timestamp_msec;
+                s1 >> dummy;
+                s1 >> dummy;
+                s1 >> dummy;
+                s1 >> dummy;
+                s1 >> dummy;
+            }
+            track.hasShadow2 = true;
+            break;
+        }
+
+        default:;
         }
 
         ++entry;
@@ -313,7 +317,6 @@ QDataStream& operator >>(QDataStream& s, CQlgtTrack& track)
 
 QDataStream& operator <<(QDataStream& s, CQlgtTrack& trk)
 {
-
     return s;
 }
 
@@ -324,12 +327,10 @@ CQlgtTrack::CQlgtTrack(quint64 id, QObject *parent)
     , hasShadow1(false)
     , hasShadow2(false)
 {
-
 }
 
 CQlgtTrack::~CQlgtTrack()
 {
-
 }
 
 CQlgtTrack& CQlgtTrack::operator<<(const pt_t& pt)
diff --git a/src/qlgt/CQlgtTrack.h b/src/qlgt/CQlgtTrack.h
index 015fccb..3bded23 100644
--- a/src/qlgt/CQlgtTrack.h
+++ b/src/qlgt/CQlgtTrack.h
@@ -19,28 +19,73 @@
 #ifndef CQLGTTRACK_H
 #define CQLGTTRACK_H
 
-#include <QObject>
 #include "qlgt/IItem.h"
+#include <QObject>
 
 class CQlgtWpt;
 
 class CFlags
 {
-    public:
-        CFlags(quint32 f=0) { flags = f; changed = true; }
-        virtual ~CFlags() {}
-        const quint32 flag() const { return flags; }
-        void setFlags( quint32 f ) { if ( flags != f ) changed = true; flags = f; }
-        quint32 operator  & (quint32 f) const { return flags&f; }
-        quint32 operator |= (quint32 f) { if ( flags != (flags|f) ) changed = true; flags|=f; return flags; }
-        quint32 operator &= (quint32 f) { if ( flags != (flags&f) ) changed = true; flags&=f; return flags; }
-        quint32 operator >> (quint32 & f) { if ( flags != f ) changed = true; flags = f; return flags; }
-        const bool isChanged() const { return changed; }
-        void setChanged(bool b) { changed = b; }
-    protected:
-        /// display flags
-        quint32 flags;
-        bool changed;
+public:
+    CFlags(quint32 f=0)
+    {
+        flags = f; changed = true;
+    }
+    virtual ~CFlags()
+    {
+    }
+    const quint32 flag() const
+    {
+        return flags;
+    }
+    void setFlags( quint32 f )
+    {
+        if ( flags != f )
+        {
+            changed = true;
+        }
+        flags = f;
+    }
+    quint32 operator  & (quint32 f) const
+    {
+        return flags&f;
+    }
+    quint32 operator |= (quint32 f)
+    {
+        if ( flags != (flags|f) )
+        {
+            changed = true;
+        }
+        flags|=f; return flags;
+    }
+    quint32 operator &= (quint32 f)
+    {
+        if ( flags != (flags&f) )
+        {
+            changed = true;
+        }
+        flags&=f; return flags;
+    }
+    quint32 operator >> (quint32 & f)
+    {
+        if ( flags != f )
+        {
+            changed = true;
+        }
+        flags = f; return flags;
+    }
+    const bool isChanged() const
+    {
+        return changed;
+    }
+    void setChanged(bool b)
+    {
+        changed = b;
+    }
+protected:
+    /// display flags
+    quint32 flags;
+    bool changed;
 };
 
 QDataStream& operator >>(QDataStream& s, CFlags& flag);
@@ -50,207 +95,219 @@ QDataStream& operator <<(QDataStream& s, CFlags& flag);
 
 class CQlgtTrack : public QObject, public IItem
 {
-    public:
-        CQlgtTrack(quint64 id, QObject * parent);
-        virtual ~CQlgtTrack();
+public:
+    CQlgtTrack(quint64 id, QObject * parent);
+    virtual ~CQlgtTrack();
 
 
-        enum type_e {eEnd,eBase,eTrkPts,eTrain,eTrkExt1,eTrkGpxExt,eTrkShdw, eTrkShdw2, eTrkPts2};
+    enum type_e {eEnd,eBase,eTrkPts,eTrain,eTrkExt1,eTrkGpxExt,eTrkShdw, eTrkShdw2, eTrkPts2};
 
-        struct pt_t
+    struct pt_t
+    {
+        enum flag_e
         {
-            enum flag_e
-            {
-                eSelected  = 1   ///< selected by track info view
-                ,eCursor    = 2  ///< selected by cursor
-                ,eDeleted   = 4  ///< mark point as deleted
-                ,eFocus     = 8  ///< mark current point of user focus
-            };
-
-            pt_t() : idx(-1), lon(WPT_NOFLOAT), lat(WPT_NOFLOAT), ele(WPT_NOFLOAT), timestamp(0), timestamp_msec(0),
-                speed(WPT_NOFLOAT), avgspeed(0), delta(WPT_NOFLOAT), azimuth(WPT_NOFLOAT), distance(WPT_NOFLOAT),
-                ascend(0), descend(0), heartReateBpm(-1), cadenceRpm(-1), slope(0), slope2(WPT_NOFLOAT), timeSinceStart(0),
-                fix(""), sat(0), velocity(WPT_NOFLOAT), heading(WPT_NOFLOAT),
-                vdop(WPT_NOFLOAT), hdop(WPT_NOFLOAT), pdop(WPT_NOFLOAT),
-                _lon(WPT_NOFLOAT),_lat(WPT_NOFLOAT),_ele(WPT_NOFLOAT), _timestamp(0), _timestamp_msec(0),
-                flags(0), px_valid(false), dem(WPT_NOFLOAT), editItem(NULL){}
-
-            bool operator==(const pt_t& pt) const {return pt.idx == idx;}
-
-            /// index counter for easy QVector access
-            qint32  idx;
-            /// longitude [deg]
-            float   lon;
-            /// latitude [deg]
-            float   lat;
-            /// elevation [m]
-            float   ele;
-            /// timestamp for track creation
-            quint32 timestamp;
-            quint32 timestamp_msec;
-
-            /// secondary data: the speed between this and the previous point
-            float speed;
-            /// secondary data: the short term average speed
-            float avgspeed;
-            /// secondary data: the distance between this and the previous point
-            float delta;
-            /// secondary data: the azimuth to the next point
-            double azimuth;
-            /// secondary data: the total distance of all visible points up to this point
-            float distance;
-            /// secondary data: the total ascend of all visible points up to this point
-            float ascend;
-            /// secondary data: the total descend of all visible points up to this point
-            float descend;
-            /// secondary data: the heart rate in bpm
-            int heartReateBpm;
-            /// secondary data: cadence in rpm
-            int cadenceRpm;
-            /// secondary data: slope in %
-            float slope;
-            /// secondary data: slope in %
-            float slope2;
-
-            quint32 timeSinceStart;
-
-            // extended data 1
-            QString fix;
-            qint32  sat;
-            float   altitude;    ///< [m] Altitude, Meters, above mean sea level
-            float   height;      ///< [m] Height of geoid (mean sea level) above WGS84 ellipsoid
-            float   velocity;    ///< [m/s] Ground speed, meters per hour
-            float   heading;     ///< [] Track angle in degrees True
-            float   magnetic;    ///< [] Magnetic Variation
-            float   vdop;        ///< Vertical dilution of precision (VDOP)
-            float   hdop;        ///< Horizontal dilution of precision (HDOP)
-            float   pdop;        ///< PDOP (dilution of precision)
-            float   x;           ///< [m] cartesian gps coordinate
-            float   y;           ///< [m] cartesian gps coordinate
-            float   z;           ///< [m] cartesian gps coordinate
-            float   vx;          ///< [m/s] velocity
-            float   vy;          ///< [m/s] velocity
-            float   vz;          ///< [m/s] velocity
-
-#ifdef GPX_EXTENSIONS
-            CGpxExtPt gpx_exts;
-#endif
-
-            // track shadow data (copy of original data)
-            /// longitude [deg]
-            float   _lon;
-            /// latitude [deg]
-            float   _lat;
-            /// elevation [m]
-            float   _ele;
-            quint32 _timestamp;
-            quint32 _timestamp_msec;
-
-            /// display flags
-            CFlags flags;
-            /// the current location in pixel
-            QPoint px;
-            bool px_valid;
-
-            float  dem;
-
-            /// QTreeWidgetItem
-            QPointer<QObject> editItem;
-
-            QColor color;
+            eSelected  = 1       ///< selected by track info view
+            ,eCursor    = 2      ///< selected by cursor
+            ,eDeleted   = 4      ///< mark point as deleted
+            ,eFocus     = 8      ///< mark current point of user focus
         };
 
-
-        struct wpt_t
+        pt_t() : idx(-1), lon(WPT_NOFLOAT), lat(WPT_NOFLOAT), ele(WPT_NOFLOAT), timestamp(0), timestamp_msec(0),
+            speed(WPT_NOFLOAT), avgspeed(0), delta(WPT_NOFLOAT), azimuth(WPT_NOFLOAT), distance(WPT_NOFLOAT),
+            ascend(0), descend(0), heartReateBpm(-1), cadenceRpm(-1), slope(0), slope2(WPT_NOFLOAT), timeSinceStart(0),
+            fix(""), sat(0), velocity(WPT_NOFLOAT), heading(WPT_NOFLOAT),
+            vdop(WPT_NOFLOAT), hdop(WPT_NOFLOAT), pdop(WPT_NOFLOAT),
+            _lon(WPT_NOFLOAT),_lat(WPT_NOFLOAT),_ele(WPT_NOFLOAT), _timestamp(0), _timestamp_msec(0),
+            flags(0), px_valid(false), dem(WPT_NOFLOAT), editItem(NULL)
         {
-            wpt_t() : wpt(0), d(1e25f), x(0), y(0) {}
-            CQlgtWpt * wpt;
-            double d;
-            double x;
-            double y;
-            pt_t trkpt;
-        };
-
-        CQlgtTrack& operator<<(const pt_t& pt);
+        }
 
-        /// a track URL
-        QString url;
-        /// the track line color
-        QColor  color;
-
-        QPixmap bullet;
-        /// the track line color by index
-        unsigned colorIdx;
-        /// the track points
-        QList<pt_t> track;
-
-        /// set true to draw track highlighted
-        bool highlight;
-
-        /// total time covered by all track points
-        double totalTime;
-        /// total time moving
-        double totalTimeMoving;
-        /// total distance of track [m]
-        double  totalDistance;
-
-        /// total ascend in [m]
-        double totalAscend;
-        /// total descend in [m]
-        double totalDescend;
-
-        /// the Qt polyline for faster processing
-        QPolygon polyline;
-        /// the color attached to each point in polyline (only used in multicolor mode)
-        QVector<QColor> polylineColor;
-
-        float avgspeed0;
-        float avgspeed1;
-
-        pt_t ptMaxEle;
-        pt_t ptMinEle;
-        pt_t ptMaxSpeed;
-        pt_t ptMinSpeed;
-
-        bool traineeData;
-        bool ext1Data;
-        bool firstTime;
-        bool m_hide;
-
-        quint32 doScaleWpt2Track;
+        bool operator==(const pt_t& pt) const
+        {
+            return pt.idx == idx;
+        }
+
+        /// index counter for easy QVector access
+        qint32 idx;
+        /// longitude [deg]
+        float lon;
+        /// latitude [deg]
+        float lat;
+        /// elevation [m]
+        float ele;
+        /// timestamp for track creation
+        quint32 timestamp;
+        quint32 timestamp_msec;
+
+        /// secondary data: the speed between this and the previous point
+        float speed;
+        /// secondary data: the short term average speed
+        float avgspeed;
+        /// secondary data: the distance between this and the previous point
+        float delta;
+        /// secondary data: the azimuth to the next point
+        double azimuth;
+        /// secondary data: the total distance of all visible points up to this point
+        float distance;
+        /// secondary data: the total ascend of all visible points up to this point
+        float ascend;
+        /// secondary data: the total descend of all visible points up to this point
+        float descend;
+        /// secondary data: the heart rate in bpm
+        int heartReateBpm;
+        /// secondary data: cadence in rpm
+        int cadenceRpm;
+        /// secondary data: slope in %
+        float slope;
+        /// secondary data: slope in %
+        float slope2;
+
+        quint32 timeSinceStart;
+
+        // extended data 1
+        QString fix;
+        qint32 sat;
+        float altitude;          ///< [m] Altitude, Meters, above mean sea level
+        float height;            ///< [m] Height of geoid (mean sea level) above WGS84 ellipsoid
+        float velocity;          ///< [m/s] Ground speed, meters per hour
+        float heading;           ///< [] Track angle in degrees True
+        float magnetic;          ///< [] Magnetic Variation
+        float vdop;              ///< Vertical dilution of precision (VDOP)
+        float hdop;              ///< Horizontal dilution of precision (HDOP)
+        float pdop;              ///< PDOP (dilution of precision)
+        float x;                 ///< [m] cartesian gps coordinate
+        float y;                 ///< [m] cartesian gps coordinate
+        float z;                 ///< [m] cartesian gps coordinate
+        float vx;                ///< [m/s] velocity
+        float vy;                ///< [m/s] velocity
+        float vz;                ///< [m/s] velocity
 
+#ifdef GPX_EXTENSIONS
+        CGpxExtPt gpx_exts;
+#endif
 
-        quint32 visiblePointCount;
+        // track shadow data (copy of original data)
+        /// longitude [deg]
+        float _lon;
+        /// latitude [deg]
+        float _lat;
+        /// elevation [m]
+        float _ele;
+        quint32 _timestamp;
+        quint32 _timestamp_msec;
 
-        quint32 cntMedianFilterApplied;
+        /// display flags
+        CFlags flags;
+        /// the current location in pixel
+        QPoint px;
+        bool px_valid;
 
-        QList<wpt_t> waypoints;
+        float dem;
 
-        bool replaceOrigData;
+        /// QTreeWidgetItem
+        QPointer<QObject> editItem;
 
-        enum state_select_e {eNoSel, e1stSel, e2ndSel};
-        state_select_e stateSelect;
+        QColor color;
+    };
 
-        QString timezone;
 
-        enum multi_color_item_e
+    struct wpt_t
+    {
+        wpt_t() : wpt(0), d(1e25f), x(0), y(0)
         {
-            eMultiColorNone
-            , eMultiColorSlope
-            , eMultiColorEle
-            , eMultiColorSpeed
-            , eMultiColorMax
-        };
-
-        quint32 useMultiColor;
-        qint32  idMultiColor;
-
-        bool hasExt1Data() const { return ext1Data;}
-        void setExt1Data() { ext1Data = true;}
-
-        bool hasShadow1;
-        bool hasShadow2;
-
+        }
+        CQlgtWpt * wpt;
+        double d;
+        double x;
+        double y;
+        pt_t trkpt;
+    };
+
+    CQlgtTrack& operator<<(const pt_t& pt);
+
+    /// a track URL
+    QString url;
+    /// the track line color
+    QColor color;
+
+    QPixmap bullet;
+    /// the track line color by index
+    unsigned colorIdx;
+    /// the track points
+    QList<pt_t> track;
+
+    /// set true to draw track highlighted
+    bool highlight;
+
+    /// total time covered by all track points
+    double totalTime;
+    /// total time moving
+    double totalTimeMoving;
+    /// total distance of track [m]
+    double totalDistance;
+
+    /// total ascend in [m]
+    double totalAscend;
+    /// total descend in [m]
+    double totalDescend;
+
+    /// the Qt polyline for faster processing
+    QPolygon polyline;
+    /// the color attached to each point in polyline (only used in multicolor mode)
+    QVector<QColor> polylineColor;
+
+    float avgspeed0;
+    float avgspeed1;
+
+    pt_t ptMaxEle;
+    pt_t ptMinEle;
+    pt_t ptMaxSpeed;
+    pt_t ptMinSpeed;
+
+    bool traineeData;
+    bool ext1Data;
+    bool firstTime;
+    bool m_hide;
+
+    quint32 doScaleWpt2Track;
+
+
+    quint32 visiblePointCount;
+
+    quint32 cntMedianFilterApplied;
+
+    QList<wpt_t> waypoints;
+
+    bool replaceOrigData;
+
+    enum state_select_e {eNoSel, e1stSel, e2ndSel};
+    state_select_e stateSelect;
+
+    QString timezone;
+
+    enum multi_color_item_e
+    {
+        eMultiColorNone
+        , eMultiColorSlope
+        , eMultiColorEle
+        , eMultiColorSpeed
+        , eMultiColorMax
+    };
+
+    quint32 useMultiColor;
+    qint32 idMultiColor;
+
+    bool hasExt1Data() const
+    {
+        return ext1Data;
+    }
+    void setExt1Data()
+    {
+        ext1Data = true;
+    }
+
+    bool hasShadow1;
+    bool hasShadow2;
 };
 
 QDataStream& operator >>(QDataStream& s, CQlgtTrack& trk);
diff --git a/src/qlgt/CQlgtWpt.cpp b/src/qlgt/CQlgtWpt.cpp
index 42cdb34..1da1529 100644
--- a/src/qlgt/CQlgtWpt.cpp
+++ b/src/qlgt/CQlgtWpt.cpp
@@ -21,17 +21,19 @@
 
 struct wpt_head_entry_t
 {
-    wpt_head_entry_t() : type(CQlgtWpt::eEnd), offset(0) {}
-    qint32      type;
-    quint32     offset;
-    QByteArray  data;
+    wpt_head_entry_t() : type(CQlgtWpt::eEnd), offset(0)
+    {
+    }
+    qint32 type;
+    quint32 offset;
+    QByteArray data;
 };
 
 
 QDataStream& operator >>(QDataStream& s, CQlgtWpt& wpt)
 {
     QIODevice * dev = s.device();
-    qint64      pos = dev->pos();
+    qint64 pos = dev->pos();
 
     char magic[9];
     s.readRawData(magic,9);
@@ -50,7 +52,10 @@ QDataStream& operator >>(QDataStream& s, CQlgtWpt& wpt)
         wpt_head_entry_t entry;
         s >> entry.type >> entry.offset;
         entries << entry;
-        if(entry.type == CQlgtWpt::eEnd) break;
+        if(entry.type == CQlgtWpt::eEnd)
+        {
+            break;
+        }
     }
 
     QList<wpt_head_entry_t>::iterator entry = entries.begin();
@@ -62,123 +67,123 @@ QDataStream& operator >>(QDataStream& s, CQlgtWpt& wpt)
 
         switch(entry->type)
         {
-            case CQlgtWpt::eBase:
+        case CQlgtWpt::eBase:
+        {
+            QString icon;
+            QString key;
+
+            QDataStream s1(&entry->data, QIODevice::ReadOnly);
+            s1.setVersion(QDataStream::Qt_4_5);
+
+            s1 >> wpt.key;
+            s1 >> wpt.sticky;
+            s1 >> wpt.timestamp;
+            s1 >> icon;
+            s1 >> wpt.name;
+            s1 >> wpt.comment;
+            s1 >> wpt.lat;
+            s1 >> wpt.lon;
+            s1 >> wpt.ele;
+            s1 >> wpt.prx;
+            s1 >> wpt.link;
+            s1 >> wpt.description;
+            s1 >> wpt.urlname;
+            s1 >> wpt.type;
+            s1 >> wpt.parentWpt;
+            s1 >> wpt.selected;
+
+            if(!s1.atEnd())
             {
-                QString icon;
-                QString key;
-
-                QDataStream s1(&entry->data, QIODevice::ReadOnly);
-                s1.setVersion(QDataStream::Qt_4_5);
-
-                s1 >> wpt.key;
-                s1 >> wpt.sticky;
-                s1 >> wpt.timestamp;
-                s1 >> icon;
-                s1 >> wpt.name;
-                s1 >> wpt.comment;
-                s1 >> wpt.lat;
-                s1 >> wpt.lon;
-                s1 >> wpt.ele;
-                s1 >> wpt.prx;
-                s1 >> wpt.link;
-                s1 >> wpt.description;
-                s1 >> wpt.urlname;
-                s1 >> wpt.type;
-                s1 >> wpt.parentWpt;
-                s1 >> wpt.selected;
-
-                if(!s1.atEnd())
-                {
-                    s1 >> wpt.dir;
-                }
-                else
-                {
-                    wpt.dir = WPT_NOFLOAT;
-                }
-
-                wpt.setIcon(icon);
-                break;
+                s1 >> wpt.dir;
             }
-
-            case CQlgtWpt::eImage:
+            else
             {
-                QDataStream s1(&entry->data, QIODevice::ReadOnly);
-                s1.setVersion(QDataStream::Qt_4_5);
-                CQlgtWpt::image_t img;
+                wpt.dir = WPT_NOFLOAT;
+            }
 
-                wpt.images.clear();
+            wpt.setIcon(icon);
+            break;
+        }
+
+        case CQlgtWpt::eImage:
+        {
+            QDataStream s1(&entry->data, QIODevice::ReadOnly);
+            s1.setVersion(QDataStream::Qt_4_5);
+            CQlgtWpt::image_t img;
 
+            wpt.images.clear();
+
+            s1 >> img.offset;
+            while(img.offset)
+            {
+                wpt.images << img;
                 s1 >> img.offset;
-                while(img.offset)
-                {
-                    wpt.images << img;
-                    s1 >> img.offset;
-                }
-
-                QList<CQlgtWpt::image_t>::iterator image = wpt.images.begin();
-                while(image != wpt.images.end())
-                {
-                    s1.device()->seek(image->offset);
-                    s1 >> image->filePath;
-                    s1 >> image->info;
-                    s1 >> image->pixmap;
-                    ++image;
-                }
-                break;
             }
 
-            case CQlgtWpt::eGeoCache:
+            QList<CQlgtWpt::image_t>::iterator image = wpt.images.begin();
+            while(image != wpt.images.end())
+            {
+                s1.device()->seek(image->offset);
+                s1 >> image->filePath;
+                s1 >> image->info;
+                s1 >> image->pixmap;
+                ++image;
+            }
+            break;
+        }
+
+        case CQlgtWpt::eGeoCache:
+        {
+            quint32 N, n;
+            QDataStream s1(&entry->data, QIODevice::ReadOnly);
+            s1.setVersion(QDataStream::Qt_4_5);
+            wpt.geocache = CQlgtWpt::geocache_t();
+            CQlgtWpt::geocache_t& cache = wpt.geocache;
+
+            s1 >> (quint8&)cache.service;
+            s1 >> cache.hasData;
+            s1 >> cache.id;
+            s1 >> cache.available;
+            s1 >> cache.archived;
+            s1 >> cache.difficulty;
+            s1 >> cache.terrain;
+            s1 >> cache.status;
+            s1 >> cache.name;
+            s1 >> cache.owner;
+            s1 >> cache.ownerId;
+            s1 >> cache.type;
+            s1 >> cache.container;
+            s1 >> cache.shortDesc;
+            s1 >> cache.longDesc;
+            s1 >> cache.hint;
+            s1 >> cache.country;
+            s1 >> cache.state;
+            s1 >> cache.locale;
+
+            s1 >> N;
+
+            for(n = 0; n < N; n++)
             {
-                quint32 N, n;
-                QDataStream s1(&entry->data, QIODevice::ReadOnly);
-                s1.setVersion(QDataStream::Qt_4_5);
-                wpt.geocache = CQlgtWpt::geocache_t();
-                CQlgtWpt::geocache_t& cache = wpt.geocache;
-
-                s1 >> (quint8&)cache.service;
-                s1 >> cache.hasData;
-                s1 >> cache.id;
-                s1 >> cache.available;
-                s1 >> cache.archived;
-                s1 >> cache.difficulty;
-                s1 >> cache.terrain;
-                s1 >> cache.status;
-                s1 >> cache.name;
-                s1 >> cache.owner;
-                s1 >> cache.ownerId;
-                s1 >> cache.type;
-                s1 >> cache.container;
-                s1 >> cache.shortDesc;
-                s1 >> cache.longDesc;
-                s1 >> cache.hint;
-                s1 >> cache.country;
-                s1 >> cache.state;
-                s1 >> cache.locale;
-
-                s1 >> N;
-
-                for(n = 0; n < N; n++)
-                {
-                    CQlgtWpt::geocachelog_t log;
-
-                    s1 >> log.id;
-                    s1 >> log.date;
-                    s1 >> log.type;
-                    s1 >> log.finderId;
-                    s1 >> log.finder;
-                    s1 >> log.text;
-
-                    cache.logs << log;
-                }
-
-                s1 >> cache.exportBuddies;
-
-                cache.hasData = true;
-
-                break;
+                CQlgtWpt::geocachelog_t log;
+
+                s1 >> log.id;
+                s1 >> log.date;
+                s1 >> log.type;
+                s1 >> log.finderId;
+                s1 >> log.finder;
+                s1 >> log.text;
+
+                cache.logs << log;
             }
 
-            default:;
+            s1 >> cache.exportBuddies;
+
+            cache.hasData = true;
+
+            break;
+        }
+
+        default:;
         }
 
         ++entry;
@@ -264,7 +269,6 @@ QDataStream& operator <<(QDataStream& s, CQlgtWpt& wpt)
     //---------------------------------------
     if(wpt.geocache.hasData)
     {
-
         wpt_head_entry_t entryGeoCache;
         entryGeoCache.type = CQlgtWpt::eGeoCache;
         QDataStream s3(&entryGeoCache.data, QIODevice::WriteOnly);
@@ -358,12 +362,10 @@ CQlgtWpt::CQlgtWpt(quint64 id, QObject *parent)
     : QObject(parent)
     , IItem(id)
 {
-
 }
 
 CQlgtWpt::~CQlgtWpt()
 {
-
 }
 
 void CQlgtWpt::setIcon(const QString& str)
diff --git a/src/qlgt/CQlgtWpt.h b/src/qlgt/CQlgtWpt.h
index b3928b0..0887b05 100644
--- a/src/qlgt/CQlgtWpt.h
+++ b/src/qlgt/CQlgtWpt.h
@@ -23,87 +23,89 @@
 
 class CQlgtWpt : public QObject, public IItem
 {
-    public:
-        CQlgtWpt(quint64 id, QObject * parent);
-        virtual ~CQlgtWpt();
+public:
+    CQlgtWpt(quint64 id, QObject * parent);
+    virtual ~CQlgtWpt();
 
-        void setIcon(const QString& str);
+    void setIcon(const QString& str);
 
-        enum geocacheservice_e {eGC, eOC, eTC};
-        enum type_e {eEnd,eBase,eImage,eGeoCache};
+    enum geocacheservice_e {eGC, eOC, eTC};
+    enum type_e {eEnd,eBase,eImage,eGeoCache};
 
-        struct geocachelog_t
+    struct geocachelog_t
+    {
+        geocachelog_t() : id(0)
         {
-            geocachelog_t() : id(0){}
-            quint32 id;
-            QString date;
-            QString type;
-            QString finderId;
-            QString finder;
-            QString text;
-        };
-
-        struct geocache_t
-        {
-            geocache_t() : service(eOC), hasData(false), id(0), available(true), archived(false), difficulty(0), terrain(0), exportBuddies(false){}
-            geocacheservice_e service;
-            bool hasData;
-            quint32 id;
-            bool available;
-            bool archived;
-            float difficulty;
-            float terrain;
-            QString status;
-            QString name;
-            QString owner;
-            QString ownerId;
-            QString type;
-            QString container;
-            QString shortDesc;
-            QString longDesc;
-            QString hint;
-            QString country;
-            QString state;
-            QString locale;
-            QList<geocachelog_t> logs;
-            bool exportBuddies;
-
-        };
-
-
-        geocache_t geocache;
-
-        quint32 selected;
-        quint32 sticky;
-        float   lat;             ///< [deg]
-        float   lon;             ///< [deg]
-        float   ele;             ///< [m]
-        float   prx;             ///< [m]
-        float   dir;             ///< [deg]
-        QString link;
-        QString urlname;
+        }
+        quint32 id;
+        QString date;
         QString type;
-
-        struct image_t
-        {
-            quint32 offset;
-            QString info;
-            QPixmap pixmap;
-            QString filePath;
-            QString fileName;
-        };
-        QList<image_t> images;
-
-        struct buddy_t
+        QString finderId;
+        QString finder;
+        QString text;
+    };
+
+    struct geocache_t
+    {
+        geocache_t() : service(eOC), hasData(false), id(0), available(true), archived(false), difficulty(0), terrain(0), exportBuddies(false)
         {
-            QString name;
-            QSet<QString> pos;
-            float lon;
-            float lat;
-        };
-
-        QList<buddy_t> buddies;
-
+        }
+        geocacheservice_e service;
+        bool hasData;
+        quint32 id;
+        bool available;
+        bool archived;
+        float difficulty;
+        float terrain;
+        QString status;
+        QString name;
+        QString owner;
+        QString ownerId;
+        QString type;
+        QString container;
+        QString shortDesc;
+        QString longDesc;
+        QString hint;
+        QString country;
+        QString state;
+        QString locale;
+        QList<geocachelog_t> logs;
+        bool exportBuddies;
+    };
+
+
+    geocache_t geocache;
+
+    quint32 selected;
+    quint32 sticky;
+    float lat;                   ///< [deg]
+    float lon;                   ///< [deg]
+    float ele;                   ///< [m]
+    float prx;                   ///< [m]
+    float dir;                   ///< [deg]
+    QString link;
+    QString urlname;
+    QString type;
+
+    struct image_t
+    {
+        quint32 offset;
+        QString info;
+        QPixmap pixmap;
+        QString filePath;
+        QString fileName;
+    };
+    QList<image_t> images;
+
+    struct buddy_t
+    {
+        QString name;
+        QSet<QString> pos;
+        float lon;
+        float lat;
+    };
+
+    QList<buddy_t> buddies;
 };
 
 QDataStream& operator >>(QDataStream& s, CQlgtWpt& wpt);
diff --git a/src/qlgt/CQmsDb.cpp b/src/qlgt/CQmsDb.cpp
index cf1b56b..6d1b22a 100644
--- a/src/qlgt/CQmsDb.cpp
+++ b/src/qlgt/CQmsDb.cpp
@@ -16,21 +16,21 @@
 
 **********************************************************************************************/
 
-#include "gis/db/macros.h"
+#include "gis/db/CDBProject.h"
 #include "gis/db/IDBFolder.h"
-#include "qlgt/CQlgtDb.h"
-#include "qlgt/CQmsDb.h"
+#include "gis/db/macros.h"
+#include "gis/ovl/CGisItemOvlArea.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/wpt/CGisItemWpt.h"
 #include "qlgt/CImportDatabase.h"
+#include "qlgt/CQlgtDb.h"
 #include "qlgt/CQlgtFolder.h"
-#include "qlgt/CQlgtWpt.h"
-#include "qlgt/CQlgtTrack.h"
 #include "qlgt/CQlgtRoute.h"
+#include "qlgt/CQlgtTrack.h"
+#include "qlgt/CQlgtWpt.h"
+#include "qlgt/CQmsDb.h"
 #include "qlgt/IQlgtOverlay.h"
-#include "gis/db/CDBProject.h"
-#include "gis/wpt/CGisItemWpt.h"
-#include "gis/trk/CGisItemTrk.h"
-#include "gis/rte/CGisItemRte.h"
-#include "gis/ovl/CGisItemOvlArea.h"
 
 #include <QtSql>
 #include <QtWidgets>
@@ -67,7 +67,6 @@ CQmsDb::CQmsDb(const QString &filename, CImportDatabase *parent)
 
 CQmsDb::~CQmsDb()
 {
-
 }
 
 
@@ -77,7 +76,7 @@ void CQmsDb::addFolder2FolderRelation(quint64 parent, quint64 child)
     query.prepare("INSERT INTO folder2folder (parent, child) VALUES (:parent, :child)");
     query.bindValue(":parent", mapFolderIDs[parent]);
     query.bindValue(":child", mapFolderIDs[child]);
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
 }
 
 void CQmsDb::addFolder2ItemRelation(quint64 parent, quint64 child)
@@ -86,7 +85,7 @@ void CQmsDb::addFolder2ItemRelation(quint64 parent, quint64 child)
     query.prepare("INSERT INTO folder2item (parent, child) VALUES (:parent, :child)");
     query.bindValue(":parent", mapFolderIDs[parent]);
     query.bindValue(":child", mapItemIDs[child]);
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
 }
 
 
@@ -102,15 +101,14 @@ void CQmsDb::addFolder(CQlgtFolder& folder)
     // folders without child items
     if(folder.items.isEmpty())
     {
-
         query.prepare("INSERT INTO folders (type, name, locked) VALUES (:type, :name, :locked)");
         query.bindValue(":type", mapFolderTypes[folder.type]);
         query.bindValue(":name", folder.name);
         query.bindValue(":locked", folder.locked);
-        QUERY_EXEC(return);
+        QUERY_EXEC(return );
 
         query.prepare("SELECT last_insert_rowid() from folders");
-        QUERY_EXEC(return);
+        QUERY_EXEC(return );
         query.next();
         quint64 id = query.value(0).toULongLong();
         if(id == 0)
@@ -125,7 +123,7 @@ void CQmsDb::addFolder(CQlgtFolder& folder)
     /*
         Folders with child items will be loaded as complete CDBProject first, to
         generate key and info text properly
-    */
+     */
     CDBProject project(folder);
     foreach(quint64 id, folder.items)
     {
@@ -138,19 +136,23 @@ void CQmsDb::addFolder(CQlgtFolder& folder)
             int type = query.value(0).toInt();
             switch(type)
             {
-                case IGisItem::eTypeWpt:
-                    new CGisItemWpt(idChild, db, &project);
-                    break;
-                case IGisItem::eTypeTrk:
-                    new CGisItemTrk(idChild, db, &project);
-                    break;
-                case IGisItem::eTypeRte:
-                    new CGisItemRte(idChild, db, &project);
-                    break;
-                case IGisItem::eTypeOvl:
-                    new CGisItemOvlArea(idChild, db, &project);
-                    break;
-                default:;
+            case IGisItem::eTypeWpt:
+                new CGisItemWpt(idChild, db, &project);
+                break;
+
+            case IGisItem::eTypeTrk:
+                new CGisItemTrk(idChild, db, &project);
+                break;
+
+            case IGisItem::eTypeRte:
+                new CGisItemRte(idChild, db, &project);
+                break;
+
+            case IGisItem::eTypeOvl:
+                new CGisItemOvlArea(idChild, db, &project);
+                break;
+
+            default:;
             }
         }
         else
@@ -173,10 +175,10 @@ void CQmsDb::addFolder(CQlgtFolder& folder)
     query.bindValue(":comment", project.getInfo());
     query.bindValue(":locked",  folder.locked);
     query.bindValue(":data",    data);
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
 
     query.prepare("SELECT last_insert_rowid() from folders");
-    QUERY_EXEC(return);
+    QUERY_EXEC(return );
     query.next();
     quint64 id = query.value(0).toULongLong();
     if(id == 0)
@@ -259,5 +261,4 @@ quint64 CQmsDb::store(IGisItem& item)
     quint64 idItem = query.value(0).toULongLong();
 
     return idItem;
-
 }
diff --git a/src/qlgt/CQmsDb.h b/src/qlgt/CQmsDb.h
index 8c13404..950173d 100644
--- a/src/qlgt/CQmsDb.h
+++ b/src/qlgt/CQmsDb.h
@@ -19,9 +19,9 @@
 #ifndef CQMSDB_H
 #define CQMSDB_H
 
-#include <QObject>
-#include <QMap>
 #include "gis/db/IDB.h"
+#include <QMap>
+#include <QObject>
 
 class CImportDatabase;
 class IGisItem;
@@ -33,31 +33,34 @@ class IQlgtOverlay;
 
 class CQmsDb : public QObject, private IDB
 {
-    public:
-        CQmsDb(const QString& filename, CImportDatabase * parent);
-        virtual ~CQmsDb();
+public:
+    CQmsDb(const QString& filename, CImportDatabase * parent);
+    virtual ~CQmsDb();
 
-        void addFolder2FolderRelation(quint64 parent, quint64 child);
-        void addFolder2ItemRelation(quint64 parent, quint64 child);
+    void addFolder2FolderRelation(quint64 parent, quint64 child);
+    void addFolder2ItemRelation(quint64 parent, quint64 child);
 
-        void addFolder(CQlgtFolder &folder);
-        void addWpt(CQlgtWpt &wpt1);
-        void addTrk(CQlgtTrack &trk1);
-        void addRte(CQlgtRoute& rte1);
-        void addArea(IQlgtOverlay& ovl1);
+    void addFolder(CQlgtFolder &folder);
+    void addWpt(CQlgtWpt &wpt1);
+    void addTrk(CQlgtTrack &trk1);
+    void addRte(CQlgtRoute& rte1);
+    void addArea(IQlgtOverlay& ovl1);
 
-        bool isValid(){return valid;}
-    private:
-        bool valid;
+    bool isValid()
+    {
+        return valid;
+    }
+private:
+    bool valid;
 
-        quint64 store(IGisItem &item);
+    quint64 store(IGisItem &item);
 
-        CImportDatabase * gui;
+    CImportDatabase * gui;
 
-        QMap<int, int> mapFolderTypes;
+    QMap<int, int> mapFolderTypes;
 
-        QMap<quint64, quint64> mapFolderIDs;
-        QMap<quint64, quint64> mapItemIDs;
+    QMap<quint64, quint64> mapFolderIDs;
+    QMap<quint64, quint64> mapItemIDs;
 };
 
 #endif //CQMSDB_H
diff --git a/src/qlgt/IItem.cpp b/src/qlgt/IItem.cpp
index ef137df..a35c198 100644
--- a/src/qlgt/IItem.cpp
+++ b/src/qlgt/IItem.cpp
@@ -21,11 +21,9 @@
 IItem::IItem(quint64 id)
     : id(id)
 {
-
 }
 
 IItem::~IItem()
 {
-
 }
 
diff --git a/src/qlgt/IItem.h b/src/qlgt/IItem.h
index 5c4735a..2d1cbe4 100644
--- a/src/qlgt/IItem.h
+++ b/src/qlgt/IItem.h
@@ -26,25 +26,28 @@
 
 class IItem
 {
-    public:
-        IItem(quint64  id);
-        virtual ~IItem();
+public:
+    IItem(quint64 id);
+    virtual ~IItem();
 
-        QString getInfo(){return "no info";}
+    QString getInfo()
+    {
+        return "no info";
+    }
 
-        quint32 timestamp;
+    quint32 timestamp;
 
-        QString name;
-        QString comment;
-        QString description;
-        QPixmap iconPixmap;
-        QString iconString;
+    QString name;
+    QString comment;
+    QString description;
+    QPixmap iconPixmap;
+    QString iconString;
 
-        QString parentWpt;
+    QString parentWpt;
 
-        QString key;
+    QString key;
 
-        quint64 id;
+    quint64 id;
 };
 
 #endif //IITEM_H
diff --git a/src/qlgt/IQlgtOverlay.cpp b/src/qlgt/IQlgtOverlay.cpp
index 9a879ea..d44a216 100644
--- a/src/qlgt/IQlgtOverlay.cpp
+++ b/src/qlgt/IQlgtOverlay.cpp
@@ -20,17 +20,19 @@
 
 struct ovl_head_entry_t
 {
-    ovl_head_entry_t() : type(IQlgtOverlay::eEnd), offset(0) {}
-    qint32      type;
-    quint32     offset;
-    QByteArray  data;
+    ovl_head_entry_t() : type(IQlgtOverlay::eEnd), offset(0)
+    {
+    }
+    qint32 type;
+    quint32 offset;
+    QByteArray data;
 };
 
 
 QDataStream& operator >>(QDataStream& s, IQlgtOverlay& ovl)
 {
     QIODevice * dev = s.device();
-    qint64      pos = dev->pos();
+    qint64 pos = dev->pos();
 
     char magic[9];
     s.readRawData(magic,9);
@@ -48,7 +50,10 @@ QDataStream& operator >>(QDataStream& s, IQlgtOverlay& ovl)
         ovl_head_entry_t entry;
         s >> entry.type >> entry.offset;
         entries << entry;
-        if(entry.type == IQlgtOverlay::eEnd) break;
+        if(entry.type == IQlgtOverlay::eEnd)
+        {
+            break;
+        }
     }
 
     QList<ovl_head_entry_t>::iterator entry = entries.begin();
@@ -60,60 +65,59 @@ QDataStream& operator >>(QDataStream& s, IQlgtOverlay& ovl)
 
         switch(entry->type)
         {
-            case IQlgtOverlay::eBase:
-            {
-
-                QDataStream s1(&entry->data, QIODevice::ReadOnly);
-                s1.setVersion(QDataStream::Qt_4_5);
+        case IQlgtOverlay::eBase:
+        {
+            QDataStream s1(&entry->data, QIODevice::ReadOnly);
+            s1.setVersion(QDataStream::Qt_4_5);
 
-                s1 >> ovl.type;
-                if(ovl.type == "Text")
-                {
-                    QRect rect;
-                    QString text;
-                    s1 >> rect >> text >> ovl.key;
-                }
-                else if(ovl.type == "TextBox")
-                {
-                    QRect rect;
-                    QPoint pt;
-                    QString text;
-                    double lon, lat;
-                    s1 >> lon >> lat >> pt >> rect >> text >> ovl.key;
-                }
-                else if(ovl.type == "Distance")
+            s1 >> ovl.type;
+            if(ovl.type == "Text")
+            {
+                QRect rect;
+                QString text;
+                s1 >> rect >> text >> ovl.key;
+            }
+            else if(ovl.type == "TextBox")
+            {
+                QRect rect;
+                QPoint pt;
+                QString text;
+                double lon, lat;
+                s1 >> lon >> lat >> pt >> rect >> text >> ovl.key;
+            }
+            else if(ovl.type == "Distance")
+            {
+                float speed;
+                QString name;
+                QString comment;
+                QString parentWpt;
+                int size, idx = 0;
+                IQlgtOverlay::pt_t pt;
+                s1 >> name >> comment >> size;
+                for(int i = 0; i < size; ++i)
                 {
-                    float speed;
-                    QString name;
-                    QString comment;
-                    QString parentWpt;
-                    int size, idx = 0;
-                    IQlgtOverlay::pt_t pt;
-                    s1 >> name >> comment >> size;
-                    for(int i = 0; i < size; ++i)
-                    {
-                        s1 >> pt.u >> pt.v;
-                        pt.idx = idx++;
-                    }
-                    s1 >> speed >> ovl.key >> parentWpt;
+                    s1 >> pt.u >> pt.v;
+                    pt.idx = idx++;
                 }
-                else if(ovl.type == "Area")
+                s1 >> speed >> ovl.key >> parentWpt;
+            }
+            else if(ovl.type == "Area")
+            {
+                int size, idx = 0;
+                IQlgtOverlay::pt_t pt;
+                s1 >> ovl.name >> ovl.comment >> size;
+                for(int i = 0; i < size; ++i)
                 {
-                    int size, idx = 0;
-                    IQlgtOverlay::pt_t pt;
-                    s1 >> ovl.name >> ovl.comment >> size;
-                    for(int i = 0; i < size; ++i)
-                    {
-                        s1 >> pt.u >> pt.v;
-                        pt.idx = idx++;
-                        ovl.points << pt;
-                    }
-                    s1 >> ovl.color >> ovl.key >> ovl.parentWpt >> ovl.style >> ovl.width >> ovl.opacity;
+                    s1 >> pt.u >> pt.v;
+                    pt.idx = idx++;
+                    ovl.points << pt;
                 }
-                break;
+                s1 >> ovl.color >> ovl.key >> ovl.parentWpt >> ovl.style >> ovl.width >> ovl.opacity;
             }
+            break;
+        }
 
-            default:;
+        default:;
         }
         ++entry;
     }
@@ -185,11 +189,9 @@ QDataStream& operator <<(QDataStream& s, IQlgtOverlay& ovl)
 IQlgtOverlay::IQlgtOverlay(quint64 id, QObject *parent)
     : IItem(id)
 {
-
 }
 
 IQlgtOverlay::~IQlgtOverlay()
 {
-
 }
 
diff --git a/src/qlgt/IQlgtOverlay.h b/src/qlgt/IQlgtOverlay.h
index 56f3c83..9fa4e2d 100644
--- a/src/qlgt/IQlgtOverlay.h
+++ b/src/qlgt/IQlgtOverlay.h
@@ -19,31 +19,30 @@
 #ifndef IQLGTOVERLAY_H
 #define IQLGTOVERLAY_H
 
+#include "qlgt/IItem.h"
 #include <QObject>
 #include <proj_api.h>
-#include "qlgt/IItem.h"
 
 class IQlgtOverlay : public QObject, public IItem
 {
-    public:
-        IQlgtOverlay(quint64 id, QObject * parent);
-        virtual ~IQlgtOverlay();
-
-        enum type_e {eEnd,eBase};
+public:
+    IQlgtOverlay(quint64 id, QObject * parent);
+    virtual ~IQlgtOverlay();
 
-        struct pt_t : public projXY
-        {
-            int idx;
-        };
+    enum type_e {eEnd,eBase};
 
+    struct pt_t : public projXY
+    {
+        int idx;
+    };
 
-        QString type;
-        QColor color;
-        QList<pt_t> points;
-        qint32 style;
-        quint32 width;
-        quint8 opacity;
 
+    QString type;
+    QColor color;
+    QList<pt_t> points;
+    qint32 style;
+    quint32 width;
+    quint8 opacity;
 };
 
 QDataStream& operator >>(QDataStream& s, IQlgtOverlay& ovl);
diff --git a/src/qlgt/converter.cpp b/src/qlgt/converter.cpp
index 12f7c6d..715be99 100644
--- a/src/qlgt/converter.cpp
+++ b/src/qlgt/converter.cpp
@@ -18,16 +18,16 @@
 
 #include "gis/WptIcons.h"
 #include "gis/db/CDBProject.h"
-#include "gis/wpt/CGisItemWpt.h"
-#include "gis/trk/CGisItemTrk.h"
-#include "gis/rte/CGisItemRte.h"
 #include "gis/ovl/CGisItemOvlArea.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/wpt/CGisItemWpt.h"
 
-#include "qlgt/CQlgtFolder.h"
-#include "qlgt/CQlgtWpt.h"
-#include "qlgt/CQlgtTrack.h"
 #include "qlgt/CQlgtDiary.h"
+#include "qlgt/CQlgtFolder.h"
 #include "qlgt/CQlgtRoute.h"
+#include "qlgt/CQlgtTrack.h"
+#include "qlgt/CQlgtWpt.h"
 #include "qlgt/IQlgtOverlay.h"
 #include "units/IUnit.h"
 
@@ -79,7 +79,6 @@ CGisItemWpt::CGisItemWpt(const CQlgtWpt& wpt1)
 
     if(wpt1.geocache.hasData)
     {
-
         geocache.service    = CGisItemWpt::geocacheservice_e(wpt1.geocache.service);
         geocache.hasData    = wpt1.geocache.hasData;
         geocache.id         = wpt1.geocache.id;
@@ -137,7 +136,6 @@ CGisItemWpt::CGisItemWpt(const CQlgtWpt& wpt1)
 CGisItemTrk::CGisItemTrk(const CQlgtTrack &trk1)
     : IGisItem(0, eTypeTrk, -1)
 {
-
     trk.name        = trk1.name;
     trk.cmt         = trk1.comment;
     trk.desc        = trk1.description;
diff --git a/src/resources.qrc b/src/resources.qrc
index 777a56e..2f96f84 100644
--- a/src/resources.qrc
+++ b/src/resources.qrc
@@ -127,7 +127,10 @@
         <file>icons/32x32/Empty.png</file>
         <file>icons/32x32/Apply.png</file>
         <file>icons/32x32/Time.png</file>
-
+        <file>icons/32x32/Print.png</file>
+        <file>icons/32x32/AddImage.png</file>
+        <file>icons/32x32/DelImage.png</file>
+        <file>icons/32x32/Image.png</file>
 
         <file>icons/48x48/2DFix.png</file>
         <file>icons/48x48/3DFix.png</file>
@@ -237,7 +240,10 @@
         <file>icons/48x48/Empty.png</file>
         <file>icons/48x48/Apply.png</file>
         <file>icons/48x48/Time.png</file>
-
+        <file>icons/48x48/Print.png</file>
+        <file>icons/48x48/AddImage.png</file>
+        <file>icons/48x48/DelImage.png</file>
+        <file>icons/48x48/Image.png</file>
 
         <file>icons/cache/32x32/bluepin.png</file>
         <file>icons/cache/32x32/cito.png</file>
diff --git a/src/units/CTimeZoneSetup.cpp b/src/units/CTimeZoneSetup.cpp
index cd6ef2c..eef1dc6 100644
--- a/src/units/CTimeZoneSetup.cpp
+++ b/src/units/CTimeZoneSetup.cpp
@@ -33,12 +33,15 @@ CTimeZoneSetup::CTimeZoneSetup(QWidget *parent)
     case IUnit::eTZUtc:
         radioUtc->setChecked(true);
         break;
+
     case IUnit::eTZLocal:
         radioLocal->setChecked(true);
         break;
+
     case IUnit::eTZAuto:
         radioAutomatic->setChecked(true);
         break;
+
     case IUnit::eTZSelected:
         radioSelected->setChecked(true);
         break;
@@ -52,12 +55,10 @@ CTimeZoneSetup::CTimeZoneSetup(QWidget *parent)
     }
 
     comboTimeZone->setCurrentIndex(comboTimeZone->findText(QString(zone)));
-
 }
 
 CTimeZoneSetup::~CTimeZoneSetup()
 {
-
 }
 
 void CTimeZoneSetup::accept()
diff --git a/src/units/CTimeZoneSetup.h b/src/units/CTimeZoneSetup.h
index 0a24c20..9f0e716 100644
--- a/src/units/CTimeZoneSetup.h
+++ b/src/units/CTimeZoneSetup.h
@@ -19,17 +19,17 @@
 #ifndef CTIMEZONESETUP_H
 #define CTIMEZONESETUP_H
 
-#include <QDialog>
 #include "ui_ITimeZoneSetup.h"
+#include <QDialog>
 
-class CTimeZoneSetup :public QDialog, private Ui::ITimeZoneSetup
+class CTimeZoneSetup : public QDialog, private Ui::ITimeZoneSetup
 {
-    public:
-        CTimeZoneSetup(QWidget * parent);
-        virtual ~CTimeZoneSetup();
+public:
+    CTimeZoneSetup(QWidget * parent);
+    virtual ~CTimeZoneSetup();
 
-    public slots:
-        void accept();
+public slots:
+    void accept();
 };
 
 #endif //CTIMEZONESETUP_H
diff --git a/src/units/CUnitImperial.cpp b/src/units/CUnitImperial.cpp
index 0a4f6e7..be4b19a 100644
--- a/src/units/CUnitImperial.cpp
+++ b/src/units/CUnitImperial.cpp
@@ -20,15 +20,13 @@
 #include "CUnitImperial.h"
 
 CUnitImperial::CUnitImperial(QObject * parent)
-: IUnit(eTypeImperial, "ft", 3.28084, "ml/h", 2.23693164, parent)
+    : IUnit(eTypeImperial, "ft", 3.28084, "ml/h", 2.23693164, parent)
 {
-
 }
 
 
 CUnitImperial::~CUnitImperial()
 {
-
 }
 
 
@@ -44,7 +42,6 @@ void CUnitImperial::meter2elevation(qreal meter, QString& val, QString& unit)
         val.sprintf("%1.0f", meter * 3.28084);
         unit = "ft";
     }
-
 }
 
 
@@ -55,23 +52,28 @@ void CUnitImperial::meter2distance(qreal meter, QString& val, QString& unit)
         val  = "-";
         unit = "";
     }
-    else if(meter < 10) {
+    else if(meter < 10)
+    {
         val.sprintf("%1.1f", meter * 3.28084);
         unit = "ft";
     }
-    else if(meter < 1600) {
+    else if(meter < 1600)
+    {
         val.sprintf("%1.0f", meter * 3.28084);
         unit = "ft";
     }
-    else if(meter < 16000) {
+    else if(meter < 16000)
+    {
         val.sprintf("%1.2f", meter * 0.6213699E-3);
         unit = "ml";
     }
-    else if(meter < 32000) {
+    else if(meter < 32000)
+    {
         val.sprintf("%1.1f", meter * 0.6213699E-3);
         unit = "ml";
     }
-    else {
+    else
+    {
         val.sprintf("%1.0f", meter * 0.6213699E-3);
         unit = "ml";
     }
diff --git a/src/units/CUnitImperial.h b/src/units/CUnitImperial.h
index 839cfa7..5907f6d 100644
--- a/src/units/CUnitImperial.h
+++ b/src/units/CUnitImperial.h
@@ -24,13 +24,13 @@
 class CUnitImperial : public IUnit
 {
     Q_OBJECT;
-    public:
-        CUnitImperial(QObject * parent);
-        virtual ~CUnitImperial();
+public:
+    CUnitImperial(QObject * parent);
+    virtual ~CUnitImperial();
 
-        void meter2elevation(qreal meter, QString& val, QString& unit);
-        void meter2distance(qreal meter, QString& val, QString& unit);
-        void meter2area(qreal meter, QString& val, QString& unit);
-        qreal elevation2meter(const QString& val);
+    void meter2elevation(qreal meter, QString& val, QString& unit);
+    void meter2distance(qreal meter, QString& val, QString& unit);
+    void meter2area(qreal meter, QString& val, QString& unit);
+    qreal elevation2meter(const QString& val);
 };
 #endif                           //CUNITIMPERIAL_H
diff --git a/src/units/CUnitMetric.cpp b/src/units/CUnitMetric.cpp
index 02f4586..73dcd6a 100644
--- a/src/units/CUnitMetric.cpp
+++ b/src/units/CUnitMetric.cpp
@@ -19,15 +19,13 @@
 #include "CUnitMetric.h"
 
 CUnitMetric::CUnitMetric(QObject * parent)
-: IUnit(eTypeMetric, "m", 1.0, "km/h", 3.6, parent)
+    : IUnit(eTypeMetric, "m", 1.0, "km/h", 3.6, parent)
 {
-
 }
 
 
 CUnitMetric::~CUnitMetric()
 {
-
 }
 
 
@@ -111,7 +109,6 @@ void CUnitMetric::meter2area(qreal meter, QString& val, QString& unit)
         val.sprintf("%1.2f", meter / 1000000);
         unit = "km²";
     }
-
 }
 
 qreal CUnitMetric::elevation2meter(const QString& val)
diff --git a/src/units/CUnitMetric.h b/src/units/CUnitMetric.h
index 13e284b..669ac2a 100644
--- a/src/units/CUnitMetric.h
+++ b/src/units/CUnitMetric.h
@@ -24,14 +24,14 @@
 class CUnitMetric : public IUnit
 {
     Q_OBJECT;
-    public:
-        CUnitMetric(QObject * parent);
-        virtual ~CUnitMetric();
+public:
+    CUnitMetric(QObject * parent);
+    virtual ~CUnitMetric();
 
-        void meter2elevation(qreal meter, QString& val, QString& unit);
-        void meter2distance(qreal meter, QString& val, QString& unit);
-        void meter2speed(qreal meter, QString& val, QString& unit);
-        void meter2area(qreal meter, QString& val, QString& unit);
-        qreal elevation2meter(const QString& val);
+    void meter2elevation(qreal meter, QString& val, QString& unit);
+    void meter2distance(qreal meter, QString& val, QString& unit);
+    void meter2speed(qreal meter, QString& val, QString& unit);
+    void meter2area(qreal meter, QString& val, QString& unit);
+    qreal elevation2meter(const QString& val);
 };
 #endif                           //CUNITMETRIC_H
diff --git a/src/units/CUnitNautic.cpp b/src/units/CUnitNautic.cpp
index bb57a08..e782f41 100644
--- a/src/units/CUnitNautic.cpp
+++ b/src/units/CUnitNautic.cpp
@@ -20,15 +20,13 @@
 #include "CUnitNautic.h"
 
 CUnitNautic::CUnitNautic(QObject * parent)
-: IUnit(eTypeNautic, "nm", 0.00053989, "nm/h", 1.94361780, parent)
+    : IUnit(eTypeNautic, "nm", 0.00053989, "nm/h", 1.94361780, parent)
 {
-
 }
 
 
 CUnitNautic::~CUnitNautic()
 {
-
 }
 
 
@@ -88,7 +86,6 @@ void CUnitNautic::meter2area(qreal meter, QString& val, QString& unit)
         val.sprintf("%1.2f", meter / (1852 * 1852));
         unit = "nm²";
     }
-
 }
 
 
diff --git a/src/units/CUnitNautic.h b/src/units/CUnitNautic.h
index 432105f..ff64213 100644
--- a/src/units/CUnitNautic.h
+++ b/src/units/CUnitNautic.h
@@ -25,14 +25,14 @@
 class CUnitNautic : public IUnit
 {
     Q_OBJECT;
-    public:
-        CUnitNautic(QObject * parent);
-        virtual ~CUnitNautic();
-
-        void meter2elevation(qreal meter, QString& val, QString& unit);
-        void meter2distance(qreal meter, QString& val, QString& unit);
-        void meter2speed(qreal meter, QString& val, QString& unit);
-        void meter2area(qreal meter, QString& val, QString& unit);
-        qreal elevation2meter(const QString& val);
+public:
+    CUnitNautic(QObject * parent);
+    virtual ~CUnitNautic();
+
+    void meter2elevation(qreal meter, QString& val, QString& unit);
+    void meter2distance(qreal meter, QString& val, QString& unit);
+    void meter2speed(qreal meter, QString& val, QString& unit);
+    void meter2area(qreal meter, QString& val, QString& unit);
+    qreal elevation2meter(const QString& val);
 };
 #endif                           //CUNITNAUTIC_H
diff --git a/src/units/CUnitsSetup.cpp b/src/units/CUnitsSetup.cpp
index 81a6dca..6689b78 100644
--- a/src/units/CUnitsSetup.cpp
+++ b/src/units/CUnitsSetup.cpp
@@ -16,9 +16,9 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "units/CUnitsSetup.h"
 #include "units/IUnit.h"
-#include "CMainWindow.h"
 
 CUnitsSetup::CUnitsSetup(QWidget *parent)
     : QDialog(parent)
@@ -30,9 +30,11 @@ CUnitsSetup::CUnitsSetup(QWidget *parent)
     case IUnit::eTypeMetric:
         radioMetric->setChecked(true);
         break;
+
     case IUnit::eTypeImperial:
         radioImperial->setChecked(true);
         break;
+
     case IUnit::eTypeNautic:
         radioNautic->setChecked(true);
         break;
@@ -41,7 +43,6 @@ CUnitsSetup::CUnitsSetup(QWidget *parent)
 
 CUnitsSetup::~CUnitsSetup()
 {
-
 }
 
 void CUnitsSetup::accept()
diff --git a/src/units/CUnitsSetup.h b/src/units/CUnitsSetup.h
index 24beae1..b4dcfc2 100644
--- a/src/units/CUnitsSetup.h
+++ b/src/units/CUnitsSetup.h
@@ -19,18 +19,17 @@
 #ifndef CUNITSSETUP_H
 #define CUNITSSETUP_H
 
-#include <QDialog>
 #include "ui_IUnitsSetup.h"
+#include <QDialog>
 
 class CUnitsSetup : public QDialog, private Ui::IUnitsSetup
 {
-    public:
-        CUnitsSetup(QWidget * parent);
-        virtual ~CUnitsSetup();
-
-    public slots:
-        void accept();
+public:
+    CUnitsSetup(QWidget * parent);
+    virtual ~CUnitsSetup();
 
+public slots:
+    void accept();
 };
 
 #endif //CUNITSSETUP_H
diff --git a/src/units/IUnit.cpp b/src/units/IUnit.cpp
index b245d18..67b2f3e 100644
--- a/src/units/IUnit.cpp
+++ b/src/units/IUnit.cpp
@@ -16,8 +16,8 @@
     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
 
 **********************************************************************************************/
-#include "CUnitMetric.h"
 #include "CUnitImperial.h"
+#include "CUnitMetric.h"
 #include "CUnitNautic.h"
 
 #include <QtWidgets>
@@ -25,7 +25,7 @@
 IUnit * IUnit::m_self = 0;
 
 const QPointF NOPOINTF(NOFLOAT, NOFLOAT);
-const QPoint  NOPOINT (NOINT, NOINT);
+const QPoint NOPOINT (NOINT, NOINT);
 
 IUnit::tz_mode_e IUnit::timeZoneMode = IUnit::eTZUtc;
 QByteArray IUnit::timeZone = "UTC";
@@ -419,22 +419,24 @@ const int N_TIMEZONES = sizeof(IUnit::tblTimezone)/sizeof(const char*);
 
 
 IUnit::IUnit(const type_e &type, const QString& baseunit, const qreal basefactor, const QString& speedunit, const qreal speedfactor, QObject * parent)
-: QObject(parent)
-, type(type)
-, baseunit(baseunit)
-, basefactor(basefactor)
-, speedunit(speedunit)
-, speedfactor(speedfactor)
+    : QObject(parent)
+    , type(type)
+    , baseunit(baseunit)
+    , basefactor(basefactor)
+    , speedunit(speedunit)
+    , speedfactor(speedfactor)
 {
     //there can be only one...
-    if(m_self) delete m_self;
+    if(m_self)
+    {
+        delete m_self;
+    }
     m_self = this;
 }
 
 
 IUnit::~IUnit()
 {
-
 }
 
 void IUnit::setUnitType(type_e t, QObject * parent)
@@ -444,9 +446,11 @@ void IUnit::setUnitType(type_e t, QObject * parent)
     case eTypeMetric:
         new CUnitMetric(parent);
         break;
+
     case eTypeImperial:
         new CUnitImperial(parent);
         break;
+
     case eTypeNautic:
         new CUnitNautic(parent);
         break;
@@ -479,7 +483,6 @@ void IUnit::seconds2time(quint32 ttime, QString& val, QString& unit)
         val = time.toString("HH:mm:ss");
         unit = "h";
     }
-
 }
 
 bool IUnit::parseTimestamp(const QString &time, QDateTime &datetime)
@@ -509,7 +512,6 @@ QDateTime IUnit::parseTimestamp(const QString &timetext, int& tzoffset)
     i = timetext.indexOf(".");
     if (i != -1)
     {
-
         if(timetext[i+1] == '0')
         {
             format += ".zzz";
@@ -567,18 +569,21 @@ QString IUnit::datetime2string(const QDateTime& time, bool shortDate, const QPoi
 
     switch(tmpMode)
     {
-        case eTZUtc:
-            tz = QTimeZone("UTC");
-            break;
-        case eTZLocal:
-            tz = QTimeZone(QTimeZone::systemTimeZoneId());
-            break;
-        case eTZAuto:
-            tz = QTimeZone(pos2timezone(pos));
-            break;
-        case eTZSelected:
-            tz = QTimeZone(timeZone);
-            break;
+    case eTZUtc:
+        tz = QTimeZone("UTC");
+        break;
+
+    case eTZLocal:
+        tz = QTimeZone(QTimeZone::systemTimeZoneId());
+        break;
+
+    case eTZAuto:
+        tz = QTimeZone(pos2timezone(pos));
+        break;
+
+    case eTZSelected:
+        tz = QTimeZone(timeZone);
+        break;
     }
 
     QDateTime tmp = time.toTimeZone(tz);
diff --git a/src/units/IUnit.h b/src/units/IUnit.h
index 50f937b..b4d9fdf 100644
--- a/src/units/IUnit.h
+++ b/src/units/IUnit.h
@@ -27,72 +27,81 @@
 #define NOTIME  0xFFFFFFFF
 
 extern const QPointF NOPOINTF;
-extern const QPoint  NOPOINT;
+extern const QPoint NOPOINT;
 
 class IUnit : public QObject
 {
     Q_OBJECT
-    public:
-        virtual ~IUnit();
-
-        static IUnit& self(){return *m_self;}
-        /// convert meter of elevation into a value and unit string
-        virtual void meter2elevation(qreal meter, QString& val, QString& unit) = 0;
-        /// convert meter of distance into a value and unit string
-        virtual void meter2distance(qreal meter, QString& val, QString& unit) = 0;
-        /// convert meter per second to a speed value string and unit label
-        virtual void meter2speed(qreal meter, QString& val, QString& unit);
-        virtual void meter2area(qreal meter, QString& val, QString& unit) = 0;
-        virtual void seconds2time(quint32 ttime, QString& val, QString& unit);
-        virtual qreal elevation2meter(const QString& val) = 0;
-
-
-        enum type_e {eTypeMetric, eTypeImperial, eTypeNautic};
-        static void setUnitType(type_e t, QObject *parent);
-
-        static bool parseTimestamp(const QString &time, QDateTime &datetime);
-
-        /**
-           @brief Convert date time object to string using the current timezone configuration
-
-
-           @param time          the date/time object
-           @param shortDate     set true to get a short ISO time string
-           @param pos           optional a position attached to the date/time object [rad]
-           @return              A time string.
-         */
-        static QString datetime2string(const QDateTime& time, bool shortDate, const QPointF& pos = NOPOINTF);
-
-        static QByteArray pos2timezone(const QPointF& pos);
-
-        const type_e  type;
-        const QString baseunit;
-        const qreal   basefactor;
-        const QString speedunit;
-        const qreal   speedfactor;
-        static const char *  tblTimezone[];
-
-        enum tz_mode_e
-        {
-             eTZUtc
-            ,eTZLocal
-            ,eTZAuto
-            ,eTZSelected
-        };
-
-        static void getTimeZoneSetup(tz_mode_e& mode, QByteArray& zone){mode = timeZoneMode; zone = timeZone;}
-        static void setTimeZoneSetup(tz_mode_e mode, const QByteArray& zone){timeZoneMode = mode; timeZone = zone;}
-
-    protected:
-        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);
-
-        static tz_mode_e  timeZoneMode;
-        static QByteArray timeZone;
-
-
-    private:
-        static IUnit * m_self;
+public:
+    virtual ~IUnit();
+
+    static IUnit& self()
+    {
+        return *m_self;
+    }
+    /// convert meter of elevation into a value and unit string
+    virtual void meter2elevation(qreal meter, QString& val, QString& unit) = 0;
+    /// convert meter of distance into a value and unit string
+    virtual void meter2distance(qreal meter, QString& val, QString& unit) = 0;
+    /// convert meter per second to a speed value string and unit label
+    virtual void meter2speed(qreal meter, QString& val, QString& unit);
+    virtual void meter2area(qreal meter, QString& val, QString& unit) = 0;
+    virtual void seconds2time(quint32 ttime, QString& val, QString& unit);
+    virtual qreal elevation2meter(const QString& val) = 0;
+
+
+    enum type_e {eTypeMetric, eTypeImperial, eTypeNautic};
+    static void setUnitType(type_e t, QObject *parent);
+
+    static bool parseTimestamp(const QString &time, QDateTime &datetime);
+
+    /**
+       @brief Convert date time object to string using the current timezone configuration
+
+
+       @param time          the date/time object
+       @param shortDate     set true to get a short ISO time string
+       @param pos           optional a position attached to the date/time object [rad]
+       @return              A time string.
+     */
+    static QString datetime2string(const QDateTime& time, bool shortDate, const QPointF& pos = NOPOINTF);
+
+    static QByteArray pos2timezone(const QPointF& pos);
+
+    const type_e type;
+    const QString baseunit;
+    const qreal basefactor;
+    const QString speedunit;
+    const qreal speedfactor;
+    static const char *  tblTimezone[];
+
+    enum tz_mode_e
+    {
+        eTZUtc
+        ,eTZLocal
+        ,eTZAuto
+        ,eTZSelected
+    };
+
+    static void getTimeZoneSetup(tz_mode_e& mode, QByteArray& zone)
+    {
+        mode = timeZoneMode; zone = timeZone;
+    }
+    static void setTimeZoneSetup(tz_mode_e mode, const QByteArray& zone)
+    {
+        timeZoneMode = mode; timeZone = zone;
+    }
+
+protected:
+    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);
+
+    static tz_mode_e timeZoneMode;
+    static QByteArray timeZone;
+
+
+private:
+    static IUnit * m_self;
 };
 #endif                           //IUNIT_H
diff --git a/src/version.h b/src/version.h
index a7210eb..317f2f2 100644
--- a/src/version.h
+++ b/src/version.h
@@ -24,7 +24,7 @@
 #define _MKSTR(x)      _MKSTR_1(x)
 #endif
 
-#define VER_STR       _MKSTR(VER_MAJOR)"."_MKSTR(VER_MINOR)"."_MKSTR(VER_STEP)
+#define VER_STR       _MKSTR(VER_MAJOR) "."_MKSTR (VER_MINOR)"."_MKSTR (VER_STEP)
 #define WHAT_STR      _MKSTR(APPLICATION_NAME) ", Version " VER_STR
 
 #endif //VERSION_H

-- 
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