[qmapshack] 01/04: Imported Upstream version 0.12.0

Bas Couwenberg sebastic at xs4all.nl
Wed Jan 28 08:07:10 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 c7e12fc5cb1665dba021981d14ea9db62e482063
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Wed Jan 28 08:44:27 2015 +0100

    Imported Upstream version 0.12.0
---
 CMakeLists.txt                                     |   2 +-
 CMakeLists.txt.user                                |   2 +-
 CMakeLists.txt.user.3.2-pre1                       | 288 -------------
 changelog.txt                                      |   6 +
 src/CMakeLists.txt                                 |  53 ++-
 src/device/CDeviceGarmin.cpp                       | 138 ++++++
 .../gpx/CGpxProject.h => device/CDeviceGarmin.h}   |  38 +-
 .../gpx/CGpxProject.h => device/CDeviceTwoNav.cpp} |  42 +-
 .../gpx/CGpxProject.h => device/CDeviceTwoNav.h}   |  34 +-
 src/device/CDeviceWatcherLinux.cpp                 | 185 ++++++++
 .../CGpxProject.h => device/CDeviceWatcherLinux.h} |  36 +-
 .../CDeviceWatcherWindows.cpp}                     |  45 +-
 .../CDeviceWatcherWindows.h}                       |  36 +-
 src/device/IDevice.cpp                             | 216 ++++++++++
 src/device/IDevice.h                               |  67 +++
 src/device/IDeviceWatcher.cpp                      |  65 +++
 src/device/IDeviceWatcher.h                        |  62 +++
 src/gis/CGisListWks.cpp                            | 155 ++++++-
 src/gis/CGisListWks.h                              |   9 +-
 src/gis/CGisWidget.cpp                             | 114 +++--
 src/gis/IGisItem.cpp                               |  16 +-
 src/gis/IGisItem.h                                 |  12 +-
 src/gis/IGisWidget.ui                              | 127 +++---
 src/gis/gpx/CGpxProject.cpp                        | 104 ++++-
 src/gis/gpx/CGpxProject.h                          |   9 +-
 src/gis/gpx/serialization.cpp                      |  73 +++-
 src/gis/ovl/CGisItemOvlArea.cpp                    |   1 +
 src/gis/ovl/CScrOptOvlArea.cpp                     |   2 +-
 src/gis/prj/IGisProject.cpp                        |  77 +++-
 src/gis/prj/IGisProject.h                          |  55 ++-
 src/gis/rte/CGisItemRte.cpp                        |   1 +
 src/gis/trk/CGisItemTrk.cpp                        |   4 +-
 src/gis/trk/CScrOptTrk.cpp                         |   8 +-
 src/gis/wpt/CGisItemWpt.cpp                        |   1 +
 src/gis/wpt/CScrOptWpt.cpp                         |   4 +-
 src/gis/wpt/IDetailsGeoCache.ui                    |   3 -
 src/helpers/CPhotoAlbum.cpp                        |   2 +-
 src/helpers/CPhotoViewer.cpp                       |   3 -
 src/helpers/CPhotoViewer.h                         |   1 -
 src/helpers/CSelectCopyAction.cpp                  |  22 +
 src/helpers/CSelectCopyAction.h                    |   2 +
 src/icons/32x32/Device.png                         | Bin 0 -> 604 bytes
 src/icons/48x48/Device.png                         | Bin 0 -> 825 bytes
 src/icons/Device.svg                               | 177 ++++++++
 src/locale/qmapshack_cs.ts                         | 328 ++++++++-------
 src/locale/qmapshack_de.ts                         | 464 +++++++++++----------
 src/locale/qmapshack_es.ts                         | 268 ++++++------
 src/main.cpp                                       |   6 +
 src/qlgt/converter.cpp                             |   2 +-
 src/resources.qrc                                  |   2 +
 50 files changed, 2250 insertions(+), 1117 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index a338280..a63ad3a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,7 +20,7 @@ endif(WIN32)
 set(APPLICATION_NAME qmapshack)
 
 set(APPLICATION_VERSION_MAJOR "0")
-set(APPLICATION_VERSION_MINOR "11")
+set(APPLICATION_VERSION_MINOR "12")
 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 40f2b0c..6d3505a 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-15T21:42:12. -->
+<!-- Written by QtCreator 3.3.0, 2015-01-25T10:33:00. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
diff --git a/CMakeLists.txt.user.3.2-pre1 b/CMakeLists.txt.user.3.2-pre1
deleted file mode 100644
index 2c16a13..0000000
--- a/CMakeLists.txt.user.3.2-pre1
+++ /dev/null
@@ -1,288 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 3.1.1, 2014-12-11T17:37:24. -->
-<qtcreator>
- <data>
-  <variable>ProjectExplorer.Project.ActiveTarget</variable>
-  <value type="int">0</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.EditorSettings</variable>
-  <valuemap type="QVariantMap">
-   <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
-   <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
-   <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
-   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
-    <value type="QString" key="language">Cpp</value>
-    <valuemap type="QVariantMap" key="value">
-     <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
-    </valuemap>
-   </valuemap>
-   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
-    <value type="QString" key="language">QmlJS</value>
-    <valuemap type="QVariantMap" key="value">
-     <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
-    </valuemap>
-   </valuemap>
-   <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
-   <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
-   <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
-   <value type="int" key="EditorConfiguration.IndentSize">4</value>
-   <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
-   <value type="int" key="EditorConfiguration.MarginColumn">80</value>
-   <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
-   <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
-   <value type="int" key="EditorConfiguration.PaddingMode">1</value>
-   <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
-   <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
-   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
-   <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
-   <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
-   <value type="int" key="EditorConfiguration.TabSize">8</value>
-   <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
-   <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
-   <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
-   <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
-   <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
-   <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
-  </valuemap>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.PluginSettings</variable>
-  <valuemap type="QVariantMap"/>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.Target.0</variable>
-  <valuemap type="QVariantMap">
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.3.0 GCC 64bit</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.3.0 GCC 64bit</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.53.gcc_64_kit</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>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
-    <value type="bool" key="CMakeProjectManager.CMakeBuildConfiguration.UseNinja">false</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/oeichler/Code/cpp/build_QMapShack</value>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments">-j8</value>
-      <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
-      <value type="bool" key="CMakeProjectManager.MakeStep.Clean">false</value>
-      <value type="bool" key="CMakeProjectManager.MakeStep.UseNinja">false</value>
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments">clean</value>
-      <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
-      <value type="bool" key="CMakeProjectManager.MakeStep.Clean">true</value>
-      <value type="bool" key="CMakeProjectManager.MakeStep.UseNinja">false</value>
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">all</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
-   </valuemap>
-   <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Lokales Deployment</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
-   </valuemap>
-   <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
-    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
-    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
-    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
-    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
-    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
-    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
-    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
-    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
-     <value type="int">0</value>
-     <value type="int">1</value>
-     <value type="int">2</value>
-     <value type="int">3</value>
-     <value type="int">4</value>
-     <value type="int">5</value>
-     <value type="int">6</value>
-     <value type="int">7</value>
-     <value type="int">8</value>
-     <value type="int">9</value>
-     <value type="int">10</value>
-     <value type="int">11</value>
-     <value type="int">12</value>
-     <value type="int">13</value>
-     <value type="int">14</value>
-    </valuelist>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguation.Title">maproom</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments"></value>
-    <value type="bool" key="CMakeProjectManager.CMakeRunConfiguration.UseTerminal">false</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory"></value>
-    <value type="int" key="PE.EnvironmentAspect.Base">-1</value>
-    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">maproom (deaktiviert)</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.maproom</value>
-    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
-    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
-    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
-    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
-   </valuemap>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
-    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
-    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
-    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
-    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
-    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
-    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
-    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
-    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
-     <value type="int">0</value>
-     <value type="int">1</value>
-     <value type="int">2</value>
-     <value type="int">3</value>
-     <value type="int">4</value>
-     <value type="int">5</value>
-     <value type="int">6</value>
-     <value type="int">7</value>
-     <value type="int">8</value>
-     <value type="int">9</value>
-     <value type="int">10</value>
-     <value type="int">11</value>
-     <value type="int">12</value>
-     <value type="int">13</value>
-     <value type="int">14</value>
-    </valuelist>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguation.Title">qmapshack</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments">-d</value>
-    <value type="bool" key="CMakeProjectManager.CMakeRunConfiguration.UseTerminal">false</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory"></value>
-    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
-    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmapshack</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.qmapshack</value>
-    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
-    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
-    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
-    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
-   </valuemap>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.2">
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
-    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
-    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
-    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
-    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
-    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
-    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
-    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
-    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
-     <value type="int">0</value>
-     <value type="int">1</value>
-     <value type="int">2</value>
-     <value type="int">3</value>
-     <value type="int">4</value>
-     <value type="int">5</value>
-     <value type="int">6</value>
-     <value type="int">7</value>
-     <value type="int">8</value>
-     <value type="int">9</value>
-     <value type="int">10</value>
-     <value type="int">11</value>
-     <value type="int">12</value>
-     <value type="int">13</value>
-     <value type="int">14</value>
-    </valuelist>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguation.Title">qlgt2qms</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments"></value>
-    <value type="bool" key="CMakeProjectManager.CMakeRunConfiguration.UseTerminal">false</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory"></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</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.qlgt2qms</value>
-    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
-    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
-    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
-    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
-   </valuemap>
-   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">3</value>
-  </valuemap>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.TargetCount</variable>
-  <value type="int">1</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
-  <value type="QByteArray">{044d553a-749a-4a4b-b707-1344605bd255}</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
-  <value type="int">15</value>
- </data>
-</qtcreator>
diff --git a/changelog.txt b/changelog.txt
index 20dceae..fcde124 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,9 @@
+V 0.12.0
+* Fix: Workspace is not saved on Windows.
+* Fix: Bad track color names
+* Add device watcher for Linux
+* Add basic device support for newer Garmin units.
+
 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.
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 1067c81..08c814c 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -13,6 +13,9 @@ find_package(Qt5Sql)
 find_package(Qt5WebKitWidgets)
 find_package(Qt5LinguistTools)
 find_package(Qt5PrintSupport)
+if(UNIX)
+find_package(Qt5DBus)
+endif(UNIX)
 find_package(GDAL REQUIRED)
 find_package(PROJ REQUIRED)
 
@@ -164,7 +167,26 @@ set( SRCS
     qlgt/CImportDatabase.cpp
     qlgt/CQlgtDb.cpp
     qlgt/CQmsDb.cpp
+    device/IDeviceWatcher.cpp
+    device/IDevice.cpp
+    device/CDeviceGarmin.cpp
+    device/CDeviceTwoNav.cpp
+)
+
+if(UNIX)
+set( SRCS
+    ${SRCS}
+    device/CDeviceWatcherLinux.cpp
+)
+endif(UNIX)
+
+if(WIN32)
+set( SRCS
+    ${SRCS}
+    device/CDeviceWatcherWindows.cpp
 )
+endif(WIN32)
+
 
 set( HDRS
 
@@ -316,8 +338,26 @@ set( HDRS
     qlgt/CImportDatabase.h
     qlgt/CQlgtDb.h
     qlgt/CQmsDb.h
+    device/IDeviceWatcher.h    
+    device/IDevice.h
+    device/CDeviceGarmin.h
+    device/CDeviceTwoNav.h
 )
 
+if(UNIX)
+set( HDRS
+    ${HDRS}
+    device/CDeviceWatcherLinux.h
+)
+endif(UNIX)
+
+if(WIN32)
+set( HDRS
+    ${HDRS}
+    device/CDeviceWatcherWindows.h
+)
+endif(WIN32)
+
 set( UIS
     IMainWindow.ui
     IAbout.ui
@@ -415,6 +455,17 @@ include_directories(
 # Tell CMake to create the helloworld executable
 add_executable(${APPLICATION_NAME} WIN32 ${ALLINP})
 
+if(UNIX)
+set(DBUS_LIB
+    Qt5::DBus
+)
+else(UNIX)
+set(DBUS_LIB
+)
+endif(UNIX)
+
+
+
 # Use the Widgets module from Qt 5.
 target_link_libraries(${APPLICATION_NAME}
     Qt5::Widgets
@@ -424,9 +475,9 @@ target_link_libraries(${APPLICATION_NAME}
     Qt5::WebKitWidgets
     Qt5::PrintSupport
     CGetOpt
+	${DBUS_LIB}
     ${GDAL_LIBRARIES}
     ${PROJ_LIBRARIES}
-
 )
 
 install(
diff --git a/src/device/CDeviceGarmin.cpp b/src/device/CDeviceGarmin.cpp
new file mode 100644
index 0000000..95aecaf
--- /dev/null
+++ b/src/device/CDeviceGarmin.cpp
@@ -0,0 +1,138 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "device/CDeviceGarmin.h"
+#include "gis/CGisListWks.h"
+#include "gis/gpx/CGpxProject.h"
+
+#include <QtWidgets>
+#include <QtXml>
+
+CDeviceGarmin::CDeviceGarmin(const QString &path, const QString &key, const QString &model, QTreeWidget *parent)
+    : IDevice(path, key, parent)
+{
+    setText(CGisListWks::eColumnName, "Garmin");
+
+    QFile file(dir.absoluteFilePath("Garmin/GarminDevice.xml"));
+    file.open(QIODevice::ReadOnly);
+
+    QDomDocument dom;
+    dom.setContent(&file);
+    file.close();
+
+    const QDomElement& xmlDevice    = dom.documentElement();
+    const QDomNode& xmlModel        = xmlDevice.namedItem("Model");
+
+    id              = xmlDevice.namedItem("Id").toElement().text();
+    description     = xmlModel.namedItem("Description").toElement().text();
+    partno          = xmlModel.namedItem("PartNumber").toElement().text();
+
+    setText(CGisListWks::eColumnName, QString("%1 (%2)").arg(description).arg(model));
+    setToolTip(CGisListWks::eColumnName, QString("%1 (%2, %3)").arg(description).arg(partno).arg(model));
+
+    const QDomNode& xmlMassStorageMode  = xmlDevice.namedItem("MassStorageMode");
+    const QDomNodeList& xmlDataTypes    = xmlMassStorageMode.toElement().elementsByTagName("DataType");
+
+    const int N = xmlDataTypes.count();
+    for(int n = 0; n < N; n++)
+    {
+        const QDomNode& xmlDataType = xmlDataTypes.item(n);
+        const QDomNode& xmlName     = xmlDataType.namedItem("Name");
+        const QDomNode& xmlFile     = xmlDataType.namedItem("File");
+        const QDomNode& xmlLocation = xmlFile.namedItem("Location");
+        const QDomNode& xmlPath     = xmlLocation.namedItem("Path");
+
+        QString name = xmlName.toElement().text();
+        if(name == "UserDataSync")
+        {
+            pathGpx = xmlPath.toElement().text();
+        }
+        else if(name == "GeotaggedPhotos")
+        {
+            pathPictures = xmlPath.toElement().text();
+        }
+        else if(name == "GeocachePhotos")
+        {
+            pathSpoilers = xmlPath.toElement().text();
+        }
+    }
+
+    if(!dir.exists(pathGpx))
+    {
+        dir.mkpath(pathGpx);
+    }
+    if(!dir.exists(pathPictures))
+    {
+        dir.mkpath(pathPictures);
+    }
+    if(!dir.exists(pathSpoilers))
+    {
+        dir.mkpath(pathSpoilers);
+    }
+
+    QDir dirGpx(dir.absoluteFilePath(pathGpx));
+    QStringList entries = dirGpx.entryList(QStringList("*.gpx"));
+    foreach(const QString &entry, entries)
+    {
+        IGisProject * project =  new CGpxProject(dirGpx.absoluteFilePath(entry), this);
+        if(!project->isValid())
+        {
+            delete project;
+        }
+    }
+
+    QDir dirGpxCurrent(dir.absoluteFilePath(pathGpx + "/Current"));
+    entries = dirGpxCurrent.entryList(QStringList("*.gpx"));
+    foreach(const QString &entry, entries)
+    {
+        IGisProject * project =  new CGpxProject(dirGpxCurrent.absoluteFilePath(entry), this);
+        if(!project->isValid())
+        {
+            delete project;
+        }
+    }
+
+}
+
+CDeviceGarmin::~CDeviceGarmin()
+{
+}
+
+void CDeviceGarmin::insertCopyOfProject(IGisProject * project)
+{
+
+    QString name = project->getName();
+    name = name.remove(QRegExp("[^A-Za-z0-9_]"));
+
+    QDir dirGpx = dir.absoluteFilePath(pathGpx);
+    QString filename = dirGpx.absoluteFilePath(name + ".gpx");
+
+    CGpxProject * gpx = new CGpxProject(filename, project, this);
+    if(!gpx->isValid())
+    {
+        delete gpx;
+        return;
+    }
+
+    if(!gpx->save())
+    {
+        delete gpx;
+        return;
+    }
+
+}
diff --git a/src/gis/gpx/CGpxProject.h b/src/device/CDeviceGarmin.h
similarity index 65%
copy from src/gis/gpx/CGpxProject.h
copy to src/device/CDeviceGarmin.h
index 655bfd4..f35c8b4 100644
--- a/src/gis/gpx/CGpxProject.h
+++ b/src/device/CDeviceGarmin.h
@@ -16,37 +16,27 @@
 
 **********************************************************************************************/
 
-#ifndef CGPXPROJECT_H
-#define CGPXPROJECT_H
+#ifndef CDEVICEGARMIN_H
+#define CDEVICEGARMIN_H
 
-#include "gis/prj/IGisProject.h"
+#include "device/IDevice.h"
 
-#include <QDateTime>
-#include <QDomElement>
-#include <QUrl>
-
-class CGisListWks;
-class CGisDraw;
-
-
-class CGpxProject : public IGisProject
+class CDeviceGarmin : public IDevice
 {
 public:
-    CGpxProject(const QString &filename, CGisListWks * parent);
-    virtual ~CGpxProject();
-
-    bool save();
-    bool saveAs();
-
-    static bool saveAs(const QString& fn, IGisProject& project);
+    CDeviceGarmin(const QString &path, const QString &key, const QString& model, QTreeWidget * parent);
+    virtual ~CDeviceGarmin();
 
+    void insertCopyOfProject(IGisProject * project);
 
 private:
-    void saveGpx(const QString& fn);
-
-
-    QDomElement xmlGpx;
+    QString id;
+    QString partno;
+    QString description;
+    QString pathPictures;
+    QString pathGpx;
+    QString pathSpoilers;
 };
 
-#endif //CGPXPROJECT_H
+#endif //CDEVICEGARMIN_H
 
diff --git a/src/gis/gpx/CGpxProject.h b/src/device/CDeviceTwoNav.cpp
similarity index 63%
copy from src/gis/gpx/CGpxProject.h
copy to src/device/CDeviceTwoNav.cpp
index 655bfd4..f1ad502 100644
--- a/src/gis/gpx/CGpxProject.h
+++ b/src/device/CDeviceTwoNav.cpp
@@ -16,37 +16,21 @@
 
 **********************************************************************************************/
 
-#ifndef CGPXPROJECT_H
-#define CGPXPROJECT_H
+#include "device/CDeviceTwoNav.h"
+#include "gis/CGisListWks.h"
 
-#include "gis/prj/IGisProject.h"
-
-#include <QDateTime>
-#include <QDomElement>
-#include <QUrl>
-
-class CGisListWks;
-class CGisDraw;
-
-
-class CGpxProject : public IGisProject
+CDeviceTwoNav::CDeviceTwoNav(const QString &path, const QString &key, const QString& model, QTreeWidget *parent)
+    : IDevice(path, key, parent)
 {
-public:
-    CGpxProject(const QString &filename, CGisListWks * parent);
-    virtual ~CGpxProject();
-
-    bool save();
-    bool saveAs();
-
-    static bool saveAs(const QString& fn, IGisProject& project);
+    setText(CGisListWks::eColumnName, QString("TwoNav (%1)").arg(model));
+    setToolTip(CGisListWks::eColumnName, QString("TwoNav (%1)").arg(model));
+}
 
+CDeviceTwoNav::~CDeviceTwoNav()
+{
+}
 
-private:
-    void saveGpx(const QString& fn);
-
-
-    QDomElement xmlGpx;
-};
-
-#endif //CGPXPROJECT_H
+void CDeviceTwoNav::insertCopyOfProject(IGisProject * project)
+{
 
+}
diff --git a/src/gis/gpx/CGpxProject.h b/src/device/CDeviceTwoNav.h
similarity index 64%
copy from src/gis/gpx/CGpxProject.h
copy to src/device/CDeviceTwoNav.h
index 655bfd4..01d104d 100644
--- a/src/gis/gpx/CGpxProject.h
+++ b/src/device/CDeviceTwoNav.h
@@ -16,37 +16,19 @@
 
 **********************************************************************************************/
 
-#ifndef CGPXPROJECT_H
-#define CGPXPROJECT_H
+#ifndef CDEVICETWONAV_H
+#define CDEVICETWONAV_H
 
-#include "gis/prj/IGisProject.h"
+#include "device/IDevice.h"
 
-#include <QDateTime>
-#include <QDomElement>
-#include <QUrl>
-
-class CGisListWks;
-class CGisDraw;
-
-
-class CGpxProject : public IGisProject
+class CDeviceTwoNav : public IDevice
 {
 public:
-    CGpxProject(const QString &filename, CGisListWks * parent);
-    virtual ~CGpxProject();
-
-    bool save();
-    bool saveAs();
-
-    static bool saveAs(const QString& fn, IGisProject& project);
-
-
-private:
-    void saveGpx(const QString& fn);
-
+    CDeviceTwoNav(const QString &path, const QString &key, const QString &model, QTreeWidget * parent);
+    virtual ~CDeviceTwoNav();
 
-    QDomElement xmlGpx;
+    void insertCopyOfProject(IGisProject * project);
 };
 
-#endif //CGPXPROJECT_H
+#endif //CDEVICETWONAV_H
 
diff --git a/src/device/CDeviceWatcherLinux.cpp b/src/device/CDeviceWatcherLinux.cpp
new file mode 100644
index 0000000..3306251
--- /dev/null
+++ b/src/device/CDeviceWatcherLinux.cpp
@@ -0,0 +1,185 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "device/CDeviceWatcherLinux.h"
+#include "device/IDevice.h"
+#include "gis/CGisListWks.h"
+
+#include <QtDBus>
+#include <QtWidgets>
+#include <QtXml>
+
+CDeviceWatcherLinux::CDeviceWatcherLinux(CGisListWks *parent)
+    : IDeviceWatcher(parent)
+{
+    QDBusConnection::systemBus().connect("org.freedesktop.UDisks2",
+                                         "/org/freedesktop/UDisks2",
+                                         "org.freedesktop.DBus.ObjectManager",
+                                         "InterfacesAdded",
+                                         this,
+                                         SLOT(slotDeviceAdded(QDBusObjectPath,QVariantMap)));
+
+    QDBusConnection::systemBus().connect("org.freedesktop.UDisks2",
+                                         "/org/freedesktop/UDisks2",
+                                         "org.freedesktop.DBus.ObjectManager",
+                                         "InterfacesRemoved",
+                                         this,
+                                         SLOT(slotDeviceRemoved(QDBusObjectPath,QStringList)));
+}
+
+CDeviceWatcherLinux::~CDeviceWatcherLinux()
+{
+}
+
+
+void CDeviceWatcherLinux::slotDeviceAdded(const QDBusObjectPath& path, const QVariantMap& map)
+{
+    // ignore all paths other than a filesystem
+    if(!map.contains("org.freedesktop.UDisks2.Filesystem"))
+    {
+        return;
+    }
+
+    // create path of to drive the block device belongs to
+    QDBusInterface * blockIface = new QDBusInterface("org.freedesktop.UDisks2", path.path(), "org.freedesktop.UDisks2.Block", QDBusConnection::systemBus(), this);
+    QDBusObjectPath drive_object = blockIface->property("Drive").value<QDBusObjectPath>();
+
+    // read vendor string attached to drive
+    QDBusInterface * driveIface = new QDBusInterface("org.freedesktop.UDisks2", drive_object.path(),"org.freedesktop.UDisks2.Drive", QDBusConnection::systemBus(), this);
+    QString vendor = driveIface->property("Vendor").toString();
+    QString model  = driveIface->property("Model").toString();
+
+    delete blockIface;
+    delete driveIface;
+
+    if(model.isEmpty() || vendor.isEmpty())
+    {
+        return;
+    }
+
+
+    QString strPath = path.path();
+
+
+    IDevice::mount(strPath);
+    QString mountPoint = readMountPoint(strPath);
+    probeForDevice(mountPoint, strPath, QFileInfo(mountPoint).fileName());
+    IDevice::umount(strPath);
+}
+
+void CDeviceWatcherLinux::slotDeviceRemoved(const QDBusObjectPath& path, const QStringList& list)
+{
+    // ignore all paths other than a filesystem
+    if(!list.contains("org.freedesktop.UDisks2.Filesystem"))
+    {
+        return;
+    }
+
+    qDebug() << "slotDeviceRemoved" << path.path() << list;
+    listWks->removeDevice(path.path());
+}
+
+void CDeviceWatcherLinux::slotUpdate()
+{
+    QList<QDBusObjectPath> paths;
+    QDBusMessage call = QDBusMessage::createMethodCall("org.freedesktop.UDisks2","/org/freedesktop/UDisks2/block_devices","org.freedesktop.DBus.Introspectable","Introspect");
+    QDBusPendingReply<QString> reply = QDBusConnection::systemBus().call(call);
+    if (!reply.isValid())
+    {
+        qWarning("UDisks2Manager: error: %s", qPrintable(reply.error().name()));
+        return;
+    }
+
+    QDomDocument doc;
+    doc.setContent(reply);
+    const QDomElement& xmlRoot = doc.documentElement();
+    const QDomNodeList& xmlNodes = xmlRoot.elementsByTagName("node");
+    const int N = xmlNodes.count();
+    for(int n = 0; n < N; n++)
+    {
+        const QDomNode& xmlNode = xmlNodes.item(n);
+        const QDomNamedNodeMap& attr = xmlNode.attributes();
+
+        QString name = attr.namedItem("name").nodeValue();
+        if(!name.isEmpty())
+        {
+            paths << QDBusObjectPath("/org/freedesktop/UDisks2/block_devices/" + name);
+        }
+    }
+
+
+    foreach (QDBusObjectPath path, paths)
+    {
+        QDBusMessage call = QDBusMessage::createMethodCall("org.freedesktop.UDisks2", path.path(), "org.freedesktop.DBus.Introspectable","Introspect");
+        QDBusPendingReply<QString> reply = QDBusConnection::systemBus().call(call);
+
+        if (!reply.isValid())
+        {
+            qWarning("UDisks2Manager: error: %s", qPrintable(reply.error().name()));
+            continue;
+        }
+
+        QDomDocument doc;
+        doc.setContent(reply);
+        const QDomElement& xmlRoot = doc.documentElement();
+        const QDomNodeList& xmlInterfaces = xmlRoot.elementsByTagName("interface");
+        const int N = xmlInterfaces.count();
+        for(int n = 0; n < N; n++)
+        {
+            const QDomNode& xmlInterface = xmlInterfaces.item(n);
+            const QDomNamedNodeMap& attr = xmlInterface.attributes();
+            if(attr.namedItem("name").nodeValue() == "org.freedesktop.UDisks2.Filesystem")
+            {
+                QVariantMap map;
+                map["org.freedesktop.UDisks2.Filesystem"] = QVariant();
+                slotDeviceAdded(path, map);
+            }
+        }
+    }
+}
+
+
+QString CDeviceWatcherLinux::readMountPoint(const QString& path)
+{
+    QStringList points;
+    QDBusMessage message = QDBusMessage::createMethodCall("org.freedesktop.UDisks2",path,"org.freedesktop.DBus.Properties","Get");
+
+    QList<QVariant> args;
+    args << "org.freedesktop.UDisks2.Filesystem" << "MountPoints";
+    message.setArguments(args);
+
+    QDBusMessage reply = QDBusConnection::systemBus().call(message);
+
+    QList<QByteArray> list;
+    foreach (QVariant arg, reply.arguments())
+    {
+        arg.value<QDBusVariant>().variant().value<QDBusArgument>() >> list;
+    }
+
+    foreach (QByteArray point, list)
+    {
+        points.append(point);
+    }
+
+    if(!points.isEmpty())
+    {
+        return points.first();
+    }
+    return "";
+}
+
diff --git a/src/gis/gpx/CGpxProject.h b/src/device/CDeviceWatcherLinux.h
similarity index 63%
copy from src/gis/gpx/CGpxProject.h
copy to src/device/CDeviceWatcherLinux.h
index 655bfd4..ea2d096 100644
--- a/src/gis/gpx/CGpxProject.h
+++ b/src/device/CDeviceWatcherLinux.h
@@ -16,37 +16,29 @@
 
 **********************************************************************************************/
 
-#ifndef CGPXPROJECT_H
-#define CGPXPROJECT_H
+#ifndef CDEVICEWATCHERLINUX_H
+#define CDEVICEWATCHERLINUX_H
 
-#include "gis/prj/IGisProject.h"
+#include "device/IDeviceWatcher.h"
 
-#include <QDateTime>
-#include <QDomElement>
-#include <QUrl>
+class QDBusObjectPath;
 
-class CGisListWks;
-class CGisDraw;
-
-
-class CGpxProject : public IGisProject
+class CDeviceWatcherLinux : public IDeviceWatcher
 {
+    Q_OBJECT
 public:
-    CGpxProject(const QString &filename, CGisListWks * parent);
-    virtual ~CGpxProject();
-
-    bool save();
-    bool saveAs();
+    CDeviceWatcherLinux(CGisListWks *parent);
+    virtual ~CDeviceWatcherLinux();
 
-    static bool saveAs(const QString& fn, IGisProject& project);
+private slots:
+    void slotDeviceAdded(const QDBusObjectPath& path, const QVariantMap& map);
+    void slotDeviceRemoved(const QDBusObjectPath& path, const QStringList& list);
+    void slotUpdate();
 
 
 private:
-    void saveGpx(const QString& fn);
-
-
-    QDomElement xmlGpx;
+    QString readMountPoint(const QString &path);
 };
 
-#endif //CGPXPROJECT_H
+#endif //CDEVICEWATCHERLINUX_H
 
diff --git a/src/gis/gpx/CGpxProject.h b/src/device/CDeviceWatcherWindows.cpp
similarity index 63%
copy from src/gis/gpx/CGpxProject.h
copy to src/device/CDeviceWatcherWindows.cpp
index 655bfd4..a6d8cfb 100644
--- a/src/gis/gpx/CGpxProject.h
+++ b/src/device/CDeviceWatcherWindows.cpp
@@ -16,37 +16,24 @@
 
 **********************************************************************************************/
 
-#ifndef CGPXPROJECT_H
-#define CGPXPROJECT_H
+#include "device/CDeviceWatcherWindows.h"
+#include "gis/CGisListWks.h"
 
-#include "gis/prj/IGisProject.h"
-
-#include <QDateTime>
-#include <QDomElement>
-#include <QUrl>
-
-class CGisListWks;
-class CGisDraw;
-
-
-class CGpxProject : public IGisProject
+CDeviceWatcherWindows::CDeviceWatcherWindows(CGisListWks *parent)
+    : IDeviceWatcher(parent)
 {
-public:
-    CGpxProject(const QString &filename, CGisListWks * parent);
-    virtual ~CGpxProject();
-
-    bool save();
-    bool saveAs();
-
-    static bool saveAs(const QString& fn, IGisProject& project);
+    /** @todo add code to detect devices pluged into the computer.
 
+        maybe a good point to start is looking at the code of:
+        http://qt-project.org/forums/viewthread/9605
+     */
+}
 
-private:
-    void saveGpx(const QString& fn);
-
-
-    QDomElement xmlGpx;
-};
-
-#endif //CGPXPROJECT_H
+CDeviceWatcherWindows::~CDeviceWatcherWindows()
+{
+}
 
+void CDeviceWatcherWindows::slotUpdate()
+{
+    /// @todo query the list of drived to detect already connected devices.
+}
diff --git a/src/gis/gpx/CGpxProject.h b/src/device/CDeviceWatcherWindows.h
similarity index 64%
copy from src/gis/gpx/CGpxProject.h
copy to src/device/CDeviceWatcherWindows.h
index 655bfd4..02acd37 100644
--- a/src/gis/gpx/CGpxProject.h
+++ b/src/device/CDeviceWatcherWindows.h
@@ -16,37 +16,21 @@
 
 **********************************************************************************************/
 
-#ifndef CGPXPROJECT_H
-#define CGPXPROJECT_H
+#ifndef CDEVICEWATCHERWINDOWS_H
+#define CDEVICEWATCHERWINDOWS_H
 
-#include "gis/prj/IGisProject.h"
+#include "device/IDeviceWatcher.h"
 
-#include <QDateTime>
-#include <QDomElement>
-#include <QUrl>
-
-class CGisListWks;
-class CGisDraw;
-
-
-class CGpxProject : public IGisProject
+class CDeviceWatcherWindows : public IDeviceWatcher
 {
+    Q_OBJECT
 public:
-    CGpxProject(const QString &filename, CGisListWks * parent);
-    virtual ~CGpxProject();
-
-    bool save();
-    bool saveAs();
-
-    static bool saveAs(const QString& fn, IGisProject& project);
-
-
-private:
-    void saveGpx(const QString& fn);
-
+    CDeviceWatcherWindows(CGisListWks *parent);
+    virtual ~CDeviceWatcherWindows();
 
-    QDomElement xmlGpx;
+private slots:
+    void slotUpdate();
 };
 
-#endif //CGPXPROJECT_H
+#endif //CDEVICEWATCHERWINDOWS_H
 
diff --git a/src/device/IDevice.cpp b/src/device/IDevice.cpp
new file mode 100644
index 0000000..457144d
--- /dev/null
+++ b/src/device/IDevice.cpp
@@ -0,0 +1,216 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "device/IDevice.h"
+#include "gis/CGisListWks.h"
+#include "gis/prj/IGisProject.h"
+#include "helpers/CSelectCopyAction.h"
+
+#include <QtDBus>
+
+IDevice::IDevice(const QString &path, const QString &key, QTreeWidget *parent)
+    : QTreeWidgetItem(parent)
+    , dir(path)
+    , key(key)
+{
+    setIcon(CGisListWks::eColumnName, QIcon("://icons/32x32/Device.png"));
+}
+
+IDevice::~IDevice()
+{
+}
+
+void IDevice::mount(const QString& path)
+{
+#ifdef Q_OS_LINUX
+    QDBusMessage message = QDBusMessage::createMethodCall("org.freedesktop.UDisks2",path,"org.freedesktop.UDisks2.Filesystem","Mount");
+    QVariantMap args;
+    args.insert("options", "sync");
+    message << args;
+    QDBusConnection::systemBus().call(message);
+#endif
+}
+
+void IDevice::umount(const QString &path)
+{
+#ifdef Q_OS_LINUX
+    QDBusMessage message = QDBusMessage::createMethodCall("org.freedesktop.UDisks2",path,"org.freedesktop.UDisks2.Filesystem","Unmount");
+    QVariantMap args;
+    message << args;
+    QDBusConnection::systemBus().call(message);
+#endif
+}
+
+
+QString IDevice::getName() const
+{
+    return text(CGisListWks::eColumnName);
+}
+
+void IDevice::getItemByPos(const QPointF& pos, QList<IGisItem *> &items)
+{
+    const int N = childCount();
+    for(int n = 0; n < N; n++)
+    {
+        IGisProject * project = dynamic_cast<IGisProject*>(child(n));
+        if(project)
+        {
+            project->getItemByPos(pos, items);
+        }
+    }
+}
+
+IGisItem * IDevice::getItemByKey(const IGisItem::key_t& key)
+{
+    IGisItem * item = 0;
+    const int N = childCount();
+    for(int n = 0; n < N; n++)
+    {
+
+        IGisProject * project = dynamic_cast<IGisProject*>(child(n));
+        if(project)
+        {
+            if(project->getKey() != key.project)
+            {
+                continue;
+            }
+
+            item = project->getItemByKey(key);
+            if(item != 0)
+            {
+                break;
+            }
+
+        }
+    }
+    return item;
+}
+
+IGisProject * IDevice::getProjectByKey(const QString& key)
+{
+    const int N = childCount();
+    for(int n = 0; n < N; n++)
+    {
+
+        IGisProject * project = dynamic_cast<IGisProject*>(child(n));
+        if(project)
+        {
+            if(project->getKey() != key)
+            {
+                continue;
+            }
+
+            return project;
+        }
+    }
+    return 0;
+
+}
+
+void IDevice::editItemByKey(const IGisItem::key_t& key)
+{
+    const int N = childCount();
+    for(int n = 0; n < N; n++)
+    {
+        IGisProject * project = dynamic_cast<IGisProject*>(child(n));
+        if(project)
+        {
+            project->editItemByKey(key);
+        }
+    }
+}
+
+
+void IDevice::insertCopyOfProject(IGisProject * project, int& lastResult)
+{
+    IGisProject * project2 = getProjectByKey(project->getKey());
+    if(project2)
+    {
+        int result = lastResult;
+        if(lastResult == CSelectCopyAction::eResultNone)
+        {
+            CSelectCopyAction dlg(project, project2, 0);
+            dlg.exec();
+            result = dlg.getResult();
+            if(dlg.allOthersToo())
+            {
+                lastResult = result;
+            }
+        }
+
+        if(result == CSelectCopyAction::eResultSkip)
+        {
+            return;
+        }
+        if(result == CSelectCopyAction::eResultNone)
+        {
+            return;
+        }
+
+        if(project2->remove())
+        {
+            delete project2;
+        }
+        else
+        {
+            return;
+        }
+
+    }
+
+    insertCopyOfProject(project);
+}
+
+void IDevice::drawItem(QPainter& p, const QPolygonF &viewport, QList<QRectF>& blockedAreas, CGisDraw * gis)
+{
+    const int N = childCount();
+    for(int n = 0; n < N; n++)
+    {
+        IGisProject * project = dynamic_cast<IGisProject*>(child(n));
+        if(project)
+        {
+            project->drawItem(p, viewport, blockedAreas, gis);
+        }
+    }
+}
+
+void IDevice::drawLabel(QPainter& p, const QPolygonF &viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis)
+{
+    const int N = childCount();
+    for(int n = 0; n < N; n++)
+    {
+        IGisProject * project = dynamic_cast<IGisProject*>(child(n));
+        if(project)
+        {
+            project->drawLabel(p, viewport, blockedAreas, fm, gis);
+        }
+    }
+}
+
+void IDevice::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
+{
+    const int N = childCount();
+    for(int n = 0; n < N; n++)
+    {
+        IGisProject * project = dynamic_cast<IGisProject*>(child(n));
+        if(project)
+        {
+            project->drawItem(p, viewport, gis);
+        }
+    }
+}
diff --git a/src/device/IDevice.h b/src/device/IDevice.h
new file mode 100644
index 0000000..dfb6b43
--- /dev/null
+++ b/src/device/IDevice.h
@@ -0,0 +1,67 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef IDEVICE_H
+#define IDEVICE_H
+
+#include <QDir>
+#include <QTreeWidgetItem>
+
+#include "gis/IGisItem.h"
+class CGisDraw;
+
+
+class IDevice : public QTreeWidgetItem
+{
+public:
+    IDevice(const QString& path, const QString& key, QTreeWidget * parent);
+    virtual ~IDevice();
+
+    static void mount(const QString& path);
+    static void umount(const QString &path);
+
+    void mount(){mount(key);}
+    void umount(){umount(key);}
+
+    const QString& getKey() const
+    {
+        return key;
+    }
+
+    QString getName() const;
+
+    void getItemByPos(const QPointF& pos, QList<IGisItem *> &items);
+    IGisItem * getItemByKey(const IGisItem::key_t& key);
+    void editItemByKey(const IGisItem::key_t& key);
+
+    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);
+
+    void insertCopyOfProject(IGisProject * project, int& lastResult);
+
+protected:    
+    virtual void insertCopyOfProject(IGisProject * project) = 0;
+    IGisProject * getProjectByKey(const QString& key);
+
+    QDir dir;
+    QString key;
+};
+
+#endif //IDEVICE_H
+
diff --git a/src/device/IDeviceWatcher.cpp b/src/device/IDeviceWatcher.cpp
new file mode 100644
index 0000000..2ed45fa
--- /dev/null
+++ b/src/device/IDeviceWatcher.cpp
@@ -0,0 +1,65 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "device/CDeviceGarmin.h"
+#include "device/CDeviceTwoNav.h"
+#include "device/IDeviceWatcher.h"
+#include "gis/CGisListWks.h"
+
+#include <QtCore>
+
+IDeviceWatcher::IDeviceWatcher(CGisListWks *parent)
+    : QObject(parent)
+    , listWks(parent)
+{
+    QTimer::singleShot(1000, this, SLOT(slotUpdate()));
+}
+
+IDeviceWatcher::~IDeviceWatcher()
+{
+}
+
+void IDeviceWatcher::probeForDevice(const QString& mountPoint, const QString& path, const QString& label)
+{
+    QDir dir(mountPoint);
+    if(!dir.exists())
+    {
+        return;
+    }
+
+    qDebug() << "Probe device at" << mountPoint << path << label;
+    QStringList entries = dir.entryList();
+
+    if(entries.contains("Garmin"))
+    {
+        if(dir.exists("Garmin/GarminDevice.xml"))
+        {
+            new CDeviceGarmin(mountPoint, path, label, listWks);
+            emit sigChanged();
+        }
+    }
+    else if(entries.contains("TwoNavData"))
+    {
+        new CDeviceTwoNav(mountPoint, path, label, listWks);
+        emit sigChanged();
+    }
+    else
+    {
+        qDebug() << "Don't know it :(";
+    }
+}
diff --git a/src/device/IDeviceWatcher.h b/src/device/IDeviceWatcher.h
new file mode 100644
index 0000000..5816286
--- /dev/null
+++ b/src/device/IDeviceWatcher.h
@@ -0,0 +1,62 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef IDEVICEWATCHER_H
+#define IDEVICEWATCHER_H
+
+#include <QObject>
+
+class CGisListWks;
+class IDevice;
+
+class IDeviceWatcher : public QObject
+{
+    Q_OBJECT
+public:
+    IDeviceWatcher(CGisListWks *parent);
+    virtual ~IDeviceWatcher();
+
+
+signals:
+    void sigChanged();
+
+private slots:
+    /**
+       @brief Find all devices already connected
+
+       This slot is called only once at startup. All pathes to plug-n-play memory have
+       to be passed to probeForDevice().
+
+     */
+    virtual void slotUpdate() = 0;
+
+protected:
+    /**
+       @brief Probe a path for a device
+
+       @param mountPoint    This is the mount point in a Linux sense (e.g. "/run/media/GARMIN"). For Windows this will be the drive letter (e.g. "d:\")
+       @param path          This is the device path in a Linux sense (e.g. "/org/freedesktop/UDisks2/block_devices/sdc1") For Windows this will be the drive letter, too (e.g. "d:\")
+       @param label         A name for the device. In Linux the last part of the mount point is used. In Windos it should be the name of the drive.
+     */
+    void probeForDevice(const QString &mountPoint, const QString& path, const QString &label);
+
+    CGisListWks * listWks;
+};
+
+#endif //IDEVICEWATCHER_H
+
diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
index 161b56d..5b81c11 100644
--- a/src/gis/CGisListWks.cpp
+++ b/src/gis/CGisListWks.cpp
@@ -18,6 +18,13 @@
 
 #include "CMainWindow.h"
 #include "config.h"
+#ifdef Q_OS_LINUX
+#include "device/CDeviceWatcherLinux.h"
+#endif
+#ifdef Q_OS_WIN
+#include "device/CDeviceWatcherWindows.h"
+#endif
+#include "device/IDevice.h"
 #include "gis/CGisListWks.h"
 #include "gis/CGisWidget.h"
 #include "gis/IGisItem.h"
@@ -71,6 +78,7 @@ CGisListWks::CGisListWks(QWidget *parent)
     , menuNone(0)
     , saveOnExit(true)
     , saveEvery(5)
+    , deviceWatcher(0)
 {
     db = QSqlDatabase::addDatabase("QSQLITE","Workspace1");
     db.setDatabaseName(QDir::home().filePath(CONFIGDIR).append("/workspace.db"));
@@ -81,7 +89,8 @@ CGisListWks::CGisListWks(QWidget *parent)
     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()));
-    actionClose     = menuProject->addAction(QIcon("://icons/32x32/Close.png"),tr("Close"), this, SLOT(slotCloseProject()));
+    actionCloseProj = menuProject->addAction(QIcon("://icons/32x32/Close.png"),tr("Close"), this, SLOT(slotCloseProject()));
+    actionDelProj   = menuProject->addAction(QIcon("://icons/32x32/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteProject()));
 
     connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
     connect(this, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(slotItemDoubleClicked(QTreeWidgetItem*,int)));
@@ -132,6 +141,16 @@ CGisListWks::CGisListWks(QWidget *parent)
     {
         QTimer::singleShot(saveEvery * 60000, this, SLOT(slotSaveWorkspace()));
     }
+#ifdef Q_OS_LINUX
+    deviceWatcher = new CDeviceWatcherLinux(this);
+#endif
+#ifdef Q_OS_WIN
+    deviceWatcher = new CDeviceWatcherWindows(this);
+#endif
+    if(deviceWatcher)
+    {
+        connect(deviceWatcher, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+    }
 
     QTimer::singleShot(500, this, SLOT(slotLoadWorkspace()));
 }
@@ -237,10 +256,11 @@ void CGisListWks::setExternalMenu(QMenu * project)
 
 void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
 {
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
+
     QTreeWidgetItem * item1 = currentItem();
     QTreeWidgetItem * item2 = itemAt(e->pos());
 
-
     // changeing the item order is only valid for single selected items
     if(selectedItems().count() == 1)
     {
@@ -253,8 +273,7 @@ void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
             2.1) different parent -> copy
             3) go on with dragMoveEvent();
 
-         */
-
+        */
         CGisItemTrk * trk1 = dynamic_cast<CGisItemTrk*>(item1);
         CGisItemTrk * trk2 = dynamic_cast<CGisItemTrk*>(item2);
 
@@ -322,14 +341,61 @@ void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
             QTreeWidget::dragMoveEvent(e);
             return;
         }
+
+        /*
+            Never move/copy projects on devices. Data has to be removed or changed
+            to store a project and it's items on a device. Moving it back to the
+            workspace would conflict with the original project. To much hassle to
+            reslove this properly.
+        */
+        IGisProject * proj1 = dynamic_cast<IGisProject*>(item1);
+        if(proj1 && proj1->isOnDevice())
+        {
+            e->setDropAction(Qt::IgnoreAction);
+            QTreeWidget::dragMoveEvent(e);
+            return;
+        }
     }
 
-    IGisProject * proj = dynamic_cast<IGisProject*>(item2);
-    if(proj && (proj != currentItem()->parent()))
+    /*
+        Test for other project, to change project order. But if other project
+        is on a device block the request. A project has to be copied to the
+        device via it's device item.
+    */
+    IGisProject * proj2 = dynamic_cast<IGisProject*>(item2);
+    if(proj2)
     {
-        e->setDropAction(Qt::CopyAction);
-        QTreeWidget::dragMoveEvent(e);
-        return;
+        IGisProject * proj1 = dynamic_cast<IGisProject*>(item1);
+        if(proj1)
+        {
+            e->setDropAction(proj2->isOnDevice() ? Qt::IgnoreAction : Qt::MoveAction);
+            QTreeWidget::dragMoveEvent(e);
+            return;
+        }
+
+        IGisItem * gisItem1 = dynamic_cast<IGisItem*>(item1);
+        if(gisItem1)
+        {
+            e->setDropAction(Qt::CopyAction);
+            QTreeWidget::dragMoveEvent(e);
+            return;
+        }
+    }
+
+    /*
+        Test for device as drop target. A device will copy the project into
+        it's own supported format.
+    */
+    IDevice * device = dynamic_cast<IDevice*>(item2);
+    if(device)
+    {
+        IGisProject * proj1 = dynamic_cast<IGisProject*>(item1);
+        if(proj1 && !proj1->isOnDevice())
+        {
+            e->setDropAction(Qt::CopyAction);
+            QTreeWidget::dragMoveEvent(e);
+            return;
+        }
     }
 
     e->setDropAction(Qt::IgnoreAction);
@@ -338,6 +404,8 @@ void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
 
 void CGisListWks::dropEvent ( QDropEvent  * e )
 {
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
+
     QList<QTreeWidgetItem*> items   = selectedItems();
     if(items.isEmpty())
     {
@@ -491,9 +559,34 @@ void CGisListWks::dropEvent ( QDropEvent  * e )
             }
         }
     }
+
+    IDevice * device = dynamic_cast<IDevice*>(itemAt(e->pos()));
+    if(device)
+    {
+        IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
+        if(project)
+        {
+            int lastResult = CSelectCopyAction::eResultNone;
+            device->insertCopyOfProject(project, lastResult);
+        }
+    }
+
     emit sigChanged();
 }
 
+void CGisListWks::removeDevice(const QString& key)
+{
+    for(int i = 0; i < topLevelItemCount(); i++)
+    {
+        IDevice * device = dynamic_cast<IDevice*>(topLevelItem(i));
+        if(device && device->getKey() == key)
+        {
+            delete device;
+            emit sigChanged();
+            return;
+        }
+    }
+}
 
 bool CGisListWks::hasProject(IGisProject * project)
 {
@@ -683,7 +776,10 @@ void CGisListWks::slotContextMenu(const QPoint& point)
         IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
         if(project != 0)
         {
-            actionEditPrj->setVisible(false);
+            bool isOnDevice = project->isOnDevice();
+            actionCloseProj->setVisible(!isOnDevice);
+            actionDelProj->setVisible(isOnDevice);
+            actionEditPrj->setVisible(false);           
             menuProject->exec(p);
             return;
         }
@@ -704,11 +800,15 @@ void CGisListWks::slotContextMenu(const QPoint& point)
         {
             if(project->getType() == IGisProject::eTypeLostFound)
             {
+                actionDelProj->setVisible(false);
                 actionSave->setVisible(false);
                 actionEditPrj->setVisible(false);
             }
             else
             {
+                bool isOnDevice = project->isOnDevice();
+                actionCloseProj->setVisible(!isOnDevice);
+                actionDelProj->setVisible(isOnDevice);
                 actionSave->setVisible(true);
                 actionEditPrj->setVisible(true);
             }
@@ -719,14 +819,21 @@ void CGisListWks::slotContextMenu(const QPoint& point)
         IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
         if(gisItem != 0)
         {
+            bool isOnDevice = gisItem->isOnDevice();
             switch(gisItem->type())
             {
             case IGisItem::eTypeTrk:
+                actionCombineTrk->setDisabled(isOnDevice);
+                actionRangeTrk->setDisabled(isOnDevice);
+                actionReverseTrk->setDisabled(isOnDevice);
+                actionEditTrk->setDisabled(isOnDevice);
                 actionFocusTrk->setChecked(gisItem->hasUserFocus());
                 menuItemTrk->exec(p);
                 break;
 
             case IGisItem::eTypeWpt:
+                actionMoveWpt->setDisabled(isOnDevice);
+                actionProjWpt->setDisabled(isOnDevice);
                 menuItemWpt->exec(p);
                 break;
 
@@ -735,6 +842,7 @@ void CGisListWks::slotContextMenu(const QPoint& point)
                 break;
 
             case IGisItem::eTypeOvl:
+                actionEditArea->setDisabled(isOnDevice);
                 menuItemOvl->exec(p);
                 break;
             }
@@ -758,6 +866,31 @@ void CGisListWks::slotCloseProject()
     emit sigChanged();
 }
 
+void CGisListWks::slotDeleteProject()
+{
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
+    QList<QTreeWidgetItem*> items = selectedItems();
+    foreach(QTreeWidgetItem * item, items)
+    {
+        IGisProject * project = dynamic_cast<IGisProject*>(item);
+        if(project != 0)
+        {
+            int res = QMessageBox::question(0, QObject::tr("Delete project..."), QObject::tr("Do you really want to delete %1?").arg(project->getFilename()), QMessageBox::Ok|QMessageBox::No,QMessageBox::Ok);
+            if(res != QMessageBox::Ok)
+            {
+                continue;
+            }
+
+
+            if(project->remove())
+            {
+                delete project;
+            }
+        }
+    }
+    emit sigChanged();
+}
+
 void CGisListWks::slotSaveProject()
 {
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
@@ -822,7 +955,7 @@ void CGisListWks::slotEditItem()
 
 void CGisListWks::slotDeleteItem()
 {
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
+    CGisListWksEditLock lock(false, IGisItem::mutexItems);
 
     QList<QTreeWidgetItem*> items       = selectedItems();
     QMessageBox::StandardButtons last   = QMessageBox::NoButton;
diff --git a/src/gis/CGisListWks.h b/src/gis/CGisListWks.h
index 9739cd7..bd4424c 100644
--- a/src/gis/CGisListWks.h
+++ b/src/gis/CGisListWks.h
@@ -28,6 +28,7 @@ class QAction;
 class CSearchGoogle;
 class IGisProject;
 class CDBProject;
+class IDeviceWatcher;
 
 class CGisListWks : public QTreeWidget
 {
@@ -51,6 +52,8 @@ public:
 
     bool event(QEvent * e);
 
+    void removeDevice(const QString& key);
+
 signals:
     void sigChanged();
 
@@ -66,6 +69,7 @@ private slots:
     void slotSaveAsProject();
     void slotEditPrj();
     void slotCloseProject();
+    void slotDeleteProject();
     void slotItemDoubleClicked(QTreeWidgetItem * item, int);
     void slotEditItem();
     void slotDeleteItem();
@@ -94,7 +98,8 @@ private:
     QAction  * actionSave;
     QAction  * actionSaveAs;
     QAction  * actionEditPrj;
-    QAction  * actionClose;
+    QAction  * actionCloseProj;
+    QAction  * actionDelProj;
 
     QMenu * menuItem;
     QMenu * menuItemTrk;
@@ -119,6 +124,8 @@ private:
 
     bool saveOnExit;
     qint32 saveEvery;
+
+    IDeviceWatcher * deviceWatcher;
 };
 
 #endif //CGISLISTWKS_H
diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
index 4ec0e24..bd53e13 100644
--- a/src/gis/CGisWidget.cpp
+++ b/src/gis/CGisWidget.cpp
@@ -17,6 +17,7 @@
 **********************************************************************************************/
 
 #include "CMainWindow.h"
+#include "device/IDevice.h"
 #include "gis/CGisDraw.h"
 #include "gis/CGisWidget.h"
 #include "gis/IGisItem.h"
@@ -60,6 +61,13 @@ CGisWidget::~CGisWidget()
     SETTINGS;
     cfg.setValue("Workspace/treeWks/state", treeWks->header()->saveState());
     cfg.setValue("Workspace/treeDB/state", treeDB->header()->saveState());
+
+    /*
+        Explicitely delete workspace here, as database projects use
+        CGisWidget uppon destruction to signal the database their destruction.
+
+    */
+    delete treeWks;
 }
 
 void CGisWidget::postEventForWks(QEvent * event)
@@ -183,12 +191,20 @@ void CGisWidget::getItemsByPos(const QPointF& pos, QList<IGisItem*>& items)
     QMutexLocker lock(&IGisItem::mutexItems);
     for(int i = 0; i < treeWks->topLevelItemCount(); i++)
     {
-        IGisProject * project = dynamic_cast<IGisProject*>(treeWks->topLevelItem(i));
-        if(project == 0)
+        QTreeWidgetItem * item = treeWks->topLevelItem(i);
+        IGisProject * project = dynamic_cast<IGisProject*>(item);
+        if(project)
+        {
+            project->getItemByPos(pos, items);
+            continue;
+        }
+        IDevice * device = dynamic_cast<IDevice*>(item);
+        if(device)
         {
+            device->getItemByPos(pos, items);
             continue;
         }
-        project->getItemByPos(pos, items);
+
     }
 }
 
@@ -198,21 +214,37 @@ IGisItem * CGisWidget::getItemByKey(const IGisItem::key_t& key)
     QMutexLocker lock(&IGisItem::mutexItems);
     for(int i = 0; i < treeWks->topLevelItemCount(); i++)
     {
-        IGisProject * project = dynamic_cast<IGisProject*>(treeWks->topLevelItem(i));
-        if(project == 0)
+        QTreeWidgetItem * item1 = treeWks->topLevelItem(i);
+        IGisProject * project = dynamic_cast<IGisProject*>(item1);
+        if(project)
         {
-            continue;
-        }
+            if(project->getKey() != key.project)
+            {
+                continue;
+            }
+
+            item = project->getItemByKey(key);
+            if(item != 0)
+            {
+                break;
+            }
 
-        if(project->getKey() != key.project)
-        {
             continue;
         }
 
-        item = project->getItemByKey(key);
-        if(item != 0)
+        IDevice * device = dynamic_cast<IDevice*>(item1);
+        if(device)
         {
-            break;
+            if(device->getKey() != key.device)
+            {
+                continue;
+            }
+
+            item = device->getItemByKey(key);
+            if(item != 0)
+            {
+                break;
+            }
         }
     }
 
@@ -256,15 +288,21 @@ void CGisWidget::editItemByKey(const IGisItem::key_t& key)
     QMutexLocker lock(&IGisItem::mutexItems);
     for(int i = 0; i < treeWks->topLevelItemCount(); i++)
     {
-        IGisProject * project = dynamic_cast<IGisProject*>(treeWks->topLevelItem(i));
-        if(project == 0)
+        QTreeWidgetItem * item = treeWks->topLevelItem(i);
+        IGisProject * project = dynamic_cast<IGisProject*>(item);
+        if(project != 0)
+        {
+            project->editItemByKey(key);
+            continue;
+        }
+        IDevice * device = dynamic_cast<IDevice*>(item);
+        if(device != 0)
         {
+            device->editItemByKey(key);
             continue;
         }
-        project->editItemByKey(key);
     }
 
-
     emit sigChanged();
 }
 
@@ -436,12 +474,20 @@ void CGisWidget::draw(QPainter& p, const QPolygonF& viewport, CGisDraw * gis)
             break;
         }
 
-        IGisProject * project = dynamic_cast<IGisProject*>(treeWks->topLevelItem(i));
-        if(project == 0)
+        QTreeWidgetItem * item = treeWks->topLevelItem(i);
+
+        IGisProject * project = dynamic_cast<IGisProject*>(item);
+        if(project)
+        {
+            project->drawItem(p, viewport, blockedAreas, gis);
+            continue;
+        }
+        IDevice * device = dynamic_cast<IDevice*>(item);
+        if(device)
         {
+            device->drawItem(p, viewport, blockedAreas, gis);
             continue;
         }
-        project->drawItem(p, viewport, blockedAreas, gis);
     }
 
     // draw optional labels second
@@ -452,12 +498,20 @@ void CGisWidget::draw(QPainter& p, const QPolygonF& viewport, CGisDraw * gis)
             break;
         }
 
-        IGisProject * project = dynamic_cast<IGisProject*>(treeWks->topLevelItem(i));
-        if(project == 0)
+        QTreeWidgetItem * item = treeWks->topLevelItem(i);
+
+        IGisProject * project = dynamic_cast<IGisProject*>(item);
+        if(project)
         {
+            project->drawLabel(p, viewport, blockedAreas, fm, gis);
+            continue;
+        }
+        IDevice * device = dynamic_cast<IDevice*>(item);
+        if(device)
+        {
+            device->drawLabel(p, viewport, blockedAreas, fm, gis);
             continue;
         }
-        project->drawLabel(p, viewport, blockedAreas, fm, gis);
     }
 }
 
@@ -470,13 +524,19 @@ void CGisWidget::fastDraw(QPainter& p, const QRectF& viewport, CGisDraw *gis)
     //QMutexLocker lock(&IGisItem::mutexItems);
     for(int i = 0; i < treeWks->topLevelItemCount(); i++)
     {
-        IGisProject * project = dynamic_cast<IGisProject*>(treeWks->topLevelItem(i));
-        if(project == 0)
+        QTreeWidgetItem * item = treeWks->topLevelItem(i);
+
+        IGisProject * project = dynamic_cast<IGisProject*>(item);
+        if(project)
         {
+            project->drawItem(p, viewport, gis);
+            continue;
+        }
+        IDevice * device = dynamic_cast<IDevice*>(item);
+        if(device)
+        {
+            device->drawItem(p, viewport, gis);
             continue;
         }
-
-        project->drawItem(p, viewport, gis);
     }
-    //
 }
diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
index d78a66c..f5acdd8 100644
--- a/src/gis/IGisItem.cpp
+++ b/src/gis/IGisItem.cpp
@@ -71,6 +71,8 @@ IGisItem::IGisItem(IGisProject *parent, type_e typ, int idx)
     }
 
     key.project = parent->getKey();
+    key.device  = parent->getDeviceKey();
+
     if(idx >= 0)
     {
         parent->removeChild(this);
@@ -203,7 +205,7 @@ QString IGisItem::getNameEx() const
     IGisProject * project = dynamic_cast<IGisProject*>(parent());
     if(project)
     {
-        str += " @ " + project->getName();
+        str += " @ " + project->getName();               
     }
     return str;
 }
@@ -359,7 +361,7 @@ void IGisItem::cutHistory()
 
 bool IGisItem::isReadOnly() const
 {
-    return !(flags & eFlagWriteAllowed);
+    return !(flags & eFlagWriteAllowed) || isOnDevice();
 }
 
 bool IGisItem::isTainted() const
@@ -367,6 +369,16 @@ bool IGisItem::isTainted() const
     return flags & eFlagTainted;
 }
 
+bool IGisItem::isOnDevice() const
+{
+    IGisProject * project = dynamic_cast<IGisProject*>(parent());
+    if(project == 0)
+    {
+        return false;
+    }
+    return project->isOnDevice();
+}
+
 void IGisItem::setReadOnlyMode(bool readOnly)
 {
     if(!(flags & (eFlagCreatedInQms|eFlagTainted)))
diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
index ed56526..fa13d44 100644
--- a/src/gis/IGisItem.h
+++ b/src/gis/IGisItem.h
@@ -128,18 +128,21 @@ public:
     {
         bool operator==(const key_t& k) const
         {
-            return (item == k.item) && (project == k.project);
+            return (item == k.item) && (project == k.project) && (device == k.device);
         }
         bool operator!=(const key_t& k) const
         {
-            return (item != k.item) || (project != k.project);
+            return (item != k.item) || (project != k.project) || (device != k.device);
         }
         void clear()
         {
-            item.clear(); project.clear();
+            item.clear();
+            project.clear();
+            device.clear();
         }
         QString item;
         QString project;
+        QString device;
     };
 
     IGisItem(IGisProject *parent, type_e typ, int idx);
@@ -265,6 +268,9 @@ public:
        @return True if content was changed.
      */
     bool isTainted() const;
+
+    bool isOnDevice() const;
+
     /**
        @brief Set the read only mode.
 
diff --git a/src/gis/IGisWidget.ui b/src/gis/IGisWidget.ui
index 926ff44..5a74d07 100644
--- a/src/gis/IGisWidget.ui
+++ b/src/gis/IGisWidget.ui
@@ -30,73 +30,76 @@
     <number>0</number>
    </property>
    <item>
-    <widget class="CGisListWks" name="treeWks">
-     <property name="contextMenuPolicy">
-      <enum>Qt::CustomContextMenu</enum>
+    <widget class="QSplitter" name="splitter">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
      </property>
-     <property name="dragEnabled">
-      <bool>true</bool>
-     </property>
-     <property name="dragDropMode">
-      <enum>QAbstractItemView::InternalMove</enum>
-     </property>
-     <property name="selectionMode">
-      <enum>QAbstractItemView::ExtendedSelection</enum>
-     </property>
-     <property name="iconSize">
-      <size>
-       <width>20</width>
-       <height>20</height>
-      </size>
-     </property>
-     <property name="indentation">
-      <number>14</number>
-     </property>
-     <attribute name="headerDefaultSectionSize">
-      <number>40</number>
-     </attribute>
-     <column>
-      <property name="text">
-       <string notr="true"/>
+     <widget class="CGisListWks" name="treeWks">
+      <property name="contextMenuPolicy">
+       <enum>Qt::CustomContextMenu</enum>
       </property>
-     </column>
-     <column>
-      <property name="text">
-       <string>Name</string>
+      <property name="dragEnabled">
+       <bool>true</bool>
       </property>
-     </column>
-    </widget>
-   </item>
-   <item>
-    <widget class="CGisListDB" name="treeDB">
-     <property name="contextMenuPolicy">
-      <enum>Qt::CustomContextMenu</enum>
-     </property>
-     <property name="selectionMode">
-      <enum>QAbstractItemView::ExtendedSelection</enum>
-     </property>
-     <property name="selectionBehavior">
-      <enum>QAbstractItemView::SelectRows</enum>
-     </property>
-     <property name="iconSize">
-      <size>
-       <width>20</width>
-       <height>20</height>
-      </size>
-     </property>
-     <property name="indentation">
-      <number>10</number>
-     </property>
-     <column>
-      <property name="text">
-       <string notr="true">-</string>
+      <property name="dragDropMode">
+       <enum>QAbstractItemView::InternalMove</enum>
+      </property>
+      <property name="selectionMode">
+       <enum>QAbstractItemView::ExtendedSelection</enum>
+      </property>
+      <property name="iconSize">
+       <size>
+        <width>20</width>
+        <height>20</height>
+       </size>
+      </property>
+      <property name="indentation">
+       <number>14</number>
+      </property>
+      <attribute name="headerDefaultSectionSize">
+       <number>40</number>
+      </attribute>
+      <column>
+       <property name="text">
+        <string notr="true"/>
+       </property>
+      </column>
+      <column>
+       <property name="text">
+        <string>Name</string>
+       </property>
+      </column>
+     </widget>
+     <widget class="CGisListDB" name="treeDB">
+      <property name="contextMenuPolicy">
+       <enum>Qt::CustomContextMenu</enum>
+      </property>
+      <property name="selectionMode">
+       <enum>QAbstractItemView::ExtendedSelection</enum>
+      </property>
+      <property name="selectionBehavior">
+       <enum>QAbstractItemView::SelectRows</enum>
+      </property>
+      <property name="iconSize">
+       <size>
+        <width>20</width>
+        <height>20</height>
+       </size>
       </property>
-     </column>
-     <column>
-      <property name="text">
-       <string>Name</string>
+      <property name="indentation">
+       <number>10</number>
       </property>
-     </column>
+      <column>
+       <property name="text">
+        <string notr="true">-</string>
+       </property>
+      </column>
+      <column>
+       <property name="text">
+        <string>Name</string>
+       </property>
+      </column>
+     </widget>
     </widget>
    </item>
    <item>
diff --git a/src/gis/gpx/CGpxProject.cpp b/src/gis/gpx/CGpxProject.cpp
index a94c385..65b41e6 100644
--- a/src/gis/gpx/CGpxProject.cpp
+++ b/src/gis/gpx/CGpxProject.cpp
@@ -16,6 +16,7 @@
 
 **********************************************************************************************/
 
+#include "device/IDevice.h"
 #include "gis/CGisDraw.h"
 #include "gis/CGisListWks.h"
 #include "gis/gpx/CGpxProject.h"
@@ -25,7 +26,7 @@
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
 #include "helpers/CSettings.h"
-
+#include "helpers/CSelectCopyAction.h"
 
 
 #include <QtWidgets>
@@ -34,7 +35,45 @@ CGpxProject::CGpxProject(const QString &filename, CGisListWks *parent)
     : IGisProject(eTypeGpx, filename, parent)
 {
     setIcon(CGisListWks::eColumnName,QIcon("://icons/32x32/GpxProject.png"));
+    loadGpx(filename);
+}
+
+CGpxProject::CGpxProject(const QString &filename, IDevice * parent)
+    : IGisProject(eTypeGpx, filename, parent)
+{
+    setIcon(CGisListWks::eColumnName,QIcon("://icons/32x32/GpxProject.png"));
+    loadGpx(filename);
+}
+
+CGpxProject::CGpxProject(const QString &filename, const IGisProject * project, IDevice * parent)
+    : IGisProject(eTypeGpx, filename, parent)
+{
+    setIcon(CGisListWks::eColumnName,QIcon("://icons/32x32/GpxProject.png"));
+    *(IGisProject*)this = *project;
+
+    const int N = project->childCount();
+    for(int n = 0; n < N; n++)
+    {
+        IGisItem * item = dynamic_cast<IGisItem*>(project->child(n));
+        if(item)
+        {
+            int res = CSelectCopyAction::eResultNone;
+            insertCopyOfItem(item, -1, res);
+        }
+    }
+
+
+    setupName(QFileInfo(filename).baseName().replace("_", " "));
+    setToolTip(CGisListWks::eColumnName, getInfo());
+    valid = true;
+}
 
+CGpxProject::~CGpxProject()
+{
+}
+
+void CGpxProject::loadGpx(const QString& filename)
+{
     // cerate file instance
     QFile file(filename);
 
@@ -69,13 +108,20 @@ CGpxProject::CGpxProject(const QString &filename, CGisListWks *parent)
     file.close();
 
     int N;
-    xmlGpx = xml.documentElement();
+    QDomElement xmlGpx = xml.documentElement();
     if(xmlGpx.tagName() != "gpx")
     {
         QMessageBox::critical(0, QObject::tr("Failed to read..."), QObject::tr("Not a GPX file: ") + filename, QMessageBox::Abort);
         return;
     }
 
+    const QDomElement& xmlExtension = xmlGpx.namedItem("extensions").toElement();
+    if(xmlExtension.namedItem("ql:key").isElement())
+    {
+        key = xmlExtension.namedItem("ql:key").toElement().text();
+    }
+
+
     const QDomNode& xmlMetadata = xmlGpx.namedItem("metadata");
     if(xmlMetadata.isElement())
     {
@@ -110,7 +156,6 @@ CGpxProject::CGpxProject(const QString &filename, CGisListWks *parent)
         new CGisItemWpt(xmlWpt, this);
     }
 
-    const QDomElement& xmlExtension = xmlGpx.namedItem("extensions").toElement();
     const QDomNodeList& xmlAreas = xmlExtension.elementsByTagName("ql:area");
     N = xmlAreas.count();
     for(int n = 0; n < N; ++n)
@@ -119,15 +164,12 @@ CGpxProject::CGpxProject(const QString &filename, CGisListWks *parent)
         new CGisItemOvlArea(xmlArea, this);
     }
 
+
     setupName(QFileInfo(filename).baseName().replace("_", " "));
     setToolTip(CGisListWks::eColumnName, getInfo());
     valid = true;
 }
 
-CGpxProject::~CGpxProject()
-{
-}
-
 bool CGpxProject::save()
 {
     if(filename.isEmpty())
@@ -196,10 +238,10 @@ bool CGpxProject::saveAs(const QString& fn, IGisProject& project)
         _fn_ += ".gpx";
     }
 
-    // todo save gpx
-    QFile file(_fn_);
+    project.mount();
 
     // safety check for existing files
+    QFile file(_fn_);
     if(file.exists())
     {
         file.open(QIODevice::ReadOnly);
@@ -236,6 +278,7 @@ bool CGpxProject::saveAs(const QString& fn, IGisProject& project)
                                            ,QMessageBox::Yes|QMessageBox::No,QMessageBox::No);
             if(res == QMessageBox::No)
             {
+                project.umount();
                 return false;
             }
         }
@@ -243,9 +286,9 @@ bool CGpxProject::saveAs(const QString& fn, IGisProject& project)
         file.close();
     }
 
-    QDomDocument doc;
 
     //  ---- start content of gpx
+    QDomDocument doc;
     QDomNode gpx = project.writeMetadata(doc);
 
     for(int i = 0; i < project.childCount(); i++)
@@ -288,25 +331,40 @@ bool CGpxProject::saveAs(const QString& fn, IGisProject& project)
         item->save(xmlExt);
     }
 
+    if(!project.getKey().isEmpty())
+    {
+        QDomElement elem = xmlExt.ownerDocument().createElement("ql:key");
+        xmlExt.appendChild(elem);
+        QDomText text = xmlExt.ownerDocument().createTextNode(project.getKey());
+        elem.appendChild(text);
+    }
+
 
     //  ---- stop  content of gpx
 
-    if(!file.open(QIODevice::WriteOnly))
+    bool res = true;
+    try
     {
-        QMessageBox::warning(0, QObject::tr("Saveing GIS data failed..."), QObject::tr("Failed to create file '%1'").arg(_fn_), QMessageBox::Abort);
-        return false;
+        if(!file.open(QIODevice::WriteOnly))
+        {
+            throw QObject::tr("Failed to create file '%1'").arg(_fn_);
+        }
+        QTextStream out(&file);
+        out.setCodec("UTF-8");
+        out << "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>" << endl;;
+        out << doc.toString();
+        file.close();
+        if(file.error() != QFile::NoError)
+        {
+            throw QObject::tr("Failed to write file '%1'").arg(_fn_);
+        }
     }
-    QTextStream out(&file);
-    out.setCodec("UTF-8");
-    out << "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>" << endl;;
-    out << doc.toString();
-    file.close();
-    if(file.error() != QFile::NoError)
+    catch(const QString& msg)
     {
-        QMessageBox::warning(0, QObject::tr("Saveing GIS data failed..."), QObject::tr("Failed to write file '%1'").arg(_fn_), QMessageBox::Abort);
-        return false;
+        QMessageBox::warning(0, QObject::tr("Saveing GIS data failed..."), msg, QMessageBox::Abort);
+        res = false;
     }
-
-    return true;
+    project.umount();
+    return res;
 }
 
diff --git a/src/gis/gpx/CGpxProject.h b/src/gis/gpx/CGpxProject.h
index 655bfd4..bdf7476 100644
--- a/src/gis/gpx/CGpxProject.h
+++ b/src/gis/gpx/CGpxProject.h
@@ -28,11 +28,12 @@
 class CGisListWks;
 class CGisDraw;
 
-
 class CGpxProject : public IGisProject
 {
 public:
     CGpxProject(const QString &filename, CGisListWks * parent);
+    CGpxProject(const QString &filename, IDevice * parent);
+    CGpxProject(const QString &filename, const IGisProject * project, IDevice * parent);
     virtual ~CGpxProject();
 
     bool save();
@@ -40,12 +41,8 @@ public:
 
     static bool saveAs(const QString& fn, IGisProject& project);
 
-
 private:
-    void saveGpx(const QString& fn);
-
-
-    QDomElement xmlGpx;
+    void loadGpx(const QString& filename);    
 };
 
 #endif //CGPXPROJECT_H
diff --git a/src/gis/gpx/serialization.cpp b/src/gis/gpx/serialization.cpp
index 5116e68..e4a0e43 100644
--- a/src/gis/gpx/serialization.cpp
+++ b/src/gis/gpx/serialization.cpp
@@ -35,6 +35,74 @@ const QString IGisProject::rmc_ns      = "urn:net:trekbuddy:1.0:nmea:rmc";
 const QString IGisProject::ql_ns       = "http://www.qlandkarte.org/xmlschemas/v1.1";
 const QString IGisProject::gs_ns       = "http://www.groundspeak.com/cache/1/0";
 
+static QString unifyColor(const QString& color)
+{
+    if(QColor(color) == Qt::black)
+    {
+        return "Black";
+    }
+    else if(QColor(color) == Qt::darkRed)
+    {
+        return "DarkRed";
+    }
+    else if(QColor(color) == Qt::darkGreen)
+    {
+        return "DarkGreen";
+    }
+    else if(QColor(color) == Qt::darkYellow)
+    {
+        return "DarkYellow";
+    }
+    else if(QColor(color) == Qt::darkBlue)
+    {
+        return "DarkBlue";
+    }
+    else if(QColor(color) == Qt::darkMagenta)
+    {
+        return "DarkMagenta";
+    }
+    else if(QColor(color) == Qt::darkCyan)
+    {
+        return "DarkCyan";
+    }
+    else if(QColor(color) == Qt::gray)
+    {
+        return "Gray";
+    }
+    else if(QColor(color) == Qt::darkGray)
+    {
+        return "DarkGray";
+    }
+    else if(QColor(color) == Qt::red)
+    {
+        return "Red";
+    }
+    else if(QColor(color) == Qt::yellow)
+    {
+        return "Yellow";
+    }
+    else if(QColor(color) == Qt::blue)
+    {
+        return "Blue";
+    }
+    else if(QColor(color) == Qt::magenta)
+    {
+        return "Magenta";
+    }
+    else if(QColor(color) == Qt::cyan)
+    {
+        return "Cyan";
+    }
+    else if(QColor(color) == Qt::white)
+    {
+        return "White";
+    }
+
+
+    return "Blue";
+}
+
+
 static void readXml(const QDomNode& xml, const QString& tag, bool& value)
 {
     if(xml.namedItem(tag).isElement())
@@ -486,7 +554,7 @@ void CGisItemWpt::save(QDomNode& gpx)
     xmlExt.appendChild(wptx1);
     writeXml(wptx1, "wptx1:Proximity", proximity);
 
-    if(geocache.hasData && geocache.service == eGC)
+    if(geocache.hasData /*&& geocache.service == eGC*/)
     {
         QDomElement xmlCache = doc.createElement("groundspeak:cache");
         writeGcExt(xmlCache);
@@ -667,6 +735,7 @@ void CGisItemTrk::readTrk(const QDomNode& xml, trk_t& trk)
     deriveSecondaryData();
 }
 
+
 void CGisItemTrk::save(QDomNode& gpx)
 {
     QDomDocument doc = gpx.ownerDocument();
@@ -692,7 +761,7 @@ void CGisItemTrk::save(QDomNode& gpx)
     // write other well known extensions
     QDomElement gpxx  = doc.createElement("gpxx:TrackExtension");
     xmlExt.appendChild(gpxx);
-    writeXml(gpxx, "gpxx:DisplayColor", trk.color);
+    writeXml(gpxx, "gpxx:DisplayColor", unifyColor(trk.color));
 
     foreach(const trkseg_t &seg, trk.segs)
     {
diff --git a/src/gis/ovl/CGisItemOvlArea.cpp b/src/gis/ovl/CGisItemOvlArea.cpp
index 06f423a..22ff9bd 100644
--- a/src/gis/ovl/CGisItemOvlArea.cpp
+++ b/src/gis/ovl/CGisItemOvlArea.cpp
@@ -135,6 +135,7 @@ CGisItemOvlArea::CGisItemOvlArea(const CGisItemOvlArea& parentArea, IGisProject
 {
     *this = parentArea;
     key.project = project->getKey();
+    key.device  = project->getDeviceKey();
 
     if(clone)
     {
diff --git a/src/gis/ovl/CScrOptOvlArea.cpp b/src/gis/ovl/CScrOptOvlArea.cpp
index a94d612..594b7a0 100644
--- a/src/gis/ovl/CScrOptOvlArea.cpp
+++ b/src/gis/ovl/CScrOptOvlArea.cpp
@@ -34,7 +34,7 @@ CScrOptOvlArea::CScrOptOvlArea(CGisItemOvlArea *area, const QPoint &point, IMous
     label->setText(area->getInfo());
     adjustSize();
 
-    toolEdit->setEnabled(!area->isReadOnly());
+    toolEdit->setDisabled(area->isReadOnly());
 
     anchor = area->getPointCloseBy(point);
     move(anchor.toPoint() + QPoint(-width()/2,SCR_OPT_OFFSET));
diff --git a/src/gis/prj/IGisProject.cpp b/src/gis/prj/IGisProject.cpp
index 10d816a..5727313 100644
--- a/src/gis/prj/IGisProject.cpp
+++ b/src/gis/prj/IGisProject.cpp
@@ -17,6 +17,7 @@
 **********************************************************************************************/
 
 #include "CMainWindow.h"
+#include "device/IDevice.h"
 #include "gis/CGisDraw.h"
 #include "gis/CGisListWks.h"
 #include "gis/IGisItem.h"
@@ -28,7 +29,6 @@
 #include "gis/wpt/CGisItemWpt.h"
 #include "helpers/CSelectCopyAction.h"
 
-
 #include <QtWidgets>
 
 
@@ -40,6 +40,14 @@ IGisProject::IGisProject(type_e type, const QString &filename, CGisListWks *pare
 {
 }
 
+IGisProject::IGisProject(type_e type, const QString &filename, IDevice *parent)
+    : QTreeWidgetItem(parent)
+    , type(type)
+    , filename(filename)
+    , valid(false)
+{
+}
+
 IGisProject::~IGisProject()
 {
     delete dlgDetails;
@@ -63,6 +71,27 @@ void IGisProject::genKey()
     }
 }
 
+QString IGisProject::getDeviceKey() const
+{
+    IDevice * device = dynamic_cast<IDevice*>(parent());
+    if(device)
+    {
+        return device->getKey();
+    }
+
+    return "";
+}
+
+QPixmap IGisProject::getIcon() const
+{
+    return icon(CGisListWks::eColumnName).pixmap(22,22);
+}
+
+bool IGisProject::isOnDevice() const
+{
+    IDevice * device = dynamic_cast<IDevice*>(parent());
+    return (device != 0);
+}
 
 void IGisProject::edit()
 {
@@ -133,6 +162,18 @@ void IGisProject::markAsSaved()
     }
 }
 
+QString IGisProject::getName() const
+{
+    IDevice * device = dynamic_cast<IDevice*>(parent());
+    if(device == 0)
+    {
+        return metadata.name;
+    }
+
+    return metadata.name + " @ " + device->getName();
+}
+
+
 QString IGisProject::getInfo() const
 {
     QString str = metadata.name.isEmpty() ? text(CGisListWks::eColumnName) : metadata.name;
@@ -296,6 +337,7 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
     bool clone = false;
     IGisItem::key_t key = item->getKey();
     key.project = getKey();
+    key.device  = getDeviceKey();
 
     IGisItem * item2 = getItemByKey(key);
     if(item2 != 0)
@@ -436,3 +478,36 @@ void IGisProject::drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF
     }
 }
 
+void IGisProject::mount()
+{
+    if(!isOnDevice())
+    {
+        return;
+    }
+    IDevice * device = dynamic_cast<IDevice*>(parent());
+    if(device)
+    {
+        device->mount();
+    }
+}
+
+void IGisProject::umount()
+{
+    if(!isOnDevice())
+    {
+        return;
+    }
+    IDevice * device = dynamic_cast<IDevice*>(parent());
+    if(device)
+    {
+        device->umount();
+    }
+}
+
+bool IGisProject::remove()
+{
+    mount();
+    QFile::remove(filename);
+    umount();
+    return true;
+}
diff --git a/src/gis/prj/IGisProject.h b/src/gis/prj/IGisProject.h
index 5751146..4c8ea34 100644
--- a/src/gis/prj/IGisProject.h
+++ b/src/gis/prj/IGisProject.h
@@ -29,6 +29,7 @@ class IGisItem;
 class CGisDraw;
 class QDataStream;
 class CDetailsPrj;
+class IDevice;
 
 class IGisProject : public QTreeWidgetItem
 {
@@ -75,8 +76,16 @@ public:
     };
 
     IGisProject(type_e type, const QString& filename, CGisListWks * parent);
+    IGisProject(type_e type, const QString &filename, IDevice *parent);
     virtual ~IGisProject();
 
+    IGisProject& operator=(const IGisProject& p)
+    {
+        key      = p.key;
+        metadata = p.metadata;
+        return *this;
+    }
+
     void edit();
 
     /**
@@ -110,10 +119,18 @@ public:
     {
         genKey(); return key;
     }
-    const QString& getName() const
-    {
-        return metadata.name;
-    }
+
+    /**
+       @brief Get the unique key of the device the project is attached to
+       @return If the project is not attached to a device the string is empty
+    */
+    QString getDeviceKey() const;
+
+
+    QPixmap getIcon() const;
+
+    QString getName() const;
+
     const QDateTime& getTime() const
     {
         return metadata.time;
@@ -197,6 +214,13 @@ public:
         return valid;
     }
 
+    /**
+       @brief Test if this project is handled by a device
+       @return True if handled by a device
+    */
+    bool isOnDevice() const;
+
+
     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);
@@ -228,6 +252,29 @@ public:
      */
     QDomNode writeMetadata(QDomDocument& doc);
 
+    /**
+       @brief Mount volume the project's file is stored at
+
+       This is only valid for projects located on GPS devices.
+       For all other projects the method does nothing.
+     */
+    void mount();
+    /**
+       @brief Umount volume the project's file is stored at
+
+       This is only valid for projects located on GPS devices.
+       For all other projects the method does nothing.
+     */
+    void umount();
+
+    /**
+       @brief Removed the projects file from disk.
+
+       This is only valid for projects located on GPS devices.
+       For all other projects the method does nothing.
+    */
+    bool remove();
+
 protected:
     void genKey();
     void setupName(const QString& defaultName);
diff --git a/src/gis/rte/CGisItemRte.cpp b/src/gis/rte/CGisItemRte.cpp
index 4116d30..c3b77ef 100644
--- a/src/gis/rte/CGisItemRte.cpp
+++ b/src/gis/rte/CGisItemRte.cpp
@@ -38,6 +38,7 @@ CGisItemRte::CGisItemRte(const CGisItemRte& parentRte, IGisProject * project, in
 {
     *this = parentRte;
     key.project = project->getKey();
+    key.device  = project->getDeviceKey();
 
     if(clone)
     {
diff --git a/src/gis/trk/CGisItemTrk.cpp b/src/gis/trk/CGisItemTrk.cpp
index 658b0fe..fba2070 100644
--- a/src/gis/trk/CGisItemTrk.cpp
+++ b/src/gis/trk/CGisItemTrk.cpp
@@ -155,6 +155,7 @@ CGisItemTrk::CGisItemTrk(const CGisItemTrk& parentTrk, IGisProject *project, int
 {
     *this = parentTrk;
     key.project = project->getKey();
+    key.device  = project->getDeviceKey();
 
     if(clone)
     {
@@ -773,14 +774,13 @@ 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;
+    qreal lastDistance;
 };
 
 void CGisItemTrk::findWaypointsCloseBy()
diff --git a/src/gis/trk/CScrOptTrk.cpp b/src/gis/trk/CScrOptTrk.cpp
index 8ce1372..09652c1 100644
--- a/src/gis/trk/CScrOptTrk.cpp
+++ b/src/gis/trk/CScrOptTrk.cpp
@@ -35,12 +35,18 @@ CScrOptTrk::CScrOptTrk(CGisItemTrk * trk, const QPoint& point, IMouse *parent)
     adjustSize();
 
     toolProfile->setChecked(trk->hasUserFocus());
-    toolEdit->setEnabled(!trk->isReadOnly());
 
     anchor = trk->getPointCloseBy(point);
     move(anchor.toPoint() + QPoint(-width()/2,SCR_OPT_OFFSET));
     show();
 
+    bool isOnDevice = trk->isOnDevice();
+    toolCut->setDisabled(isOnDevice);
+    toolEdit->setDisabled(trk->isReadOnly());
+    toolReverse->setDisabled(isOnDevice);
+    toolCombine->setDisabled(isOnDevice);
+    toolRange->setDisabled(isOnDevice);
+
     connect(toolEditDetails, SIGNAL(clicked()), this, SLOT(slotEditDetails()));
     connect(toolDelete, SIGNAL(clicked()), this, SLOT(slotDelete()));
     connect(toolCopy, SIGNAL(clicked()), this, SLOT(slotCopy()));
diff --git a/src/gis/wpt/CGisItemWpt.cpp b/src/gis/wpt/CGisItemWpt.cpp
index 2f0dcd8..9517d4b 100644
--- a/src/gis/wpt/CGisItemWpt.cpp
+++ b/src/gis/wpt/CGisItemWpt.cpp
@@ -95,6 +95,7 @@ CGisItemWpt::CGisItemWpt(const CGisItemWpt &parentWpt, IGisProject *project, int
 {
     *this = parentWpt;
     key.project = project->getKey();
+    key.device  = project->getDeviceKey();
 
     if(clone)
     {
diff --git a/src/gis/wpt/CScrOptWpt.cpp b/src/gis/wpt/CScrOptWpt.cpp
index 7548a3f..579f583 100644
--- a/src/gis/wpt/CScrOptWpt.cpp
+++ b/src/gis/wpt/CScrOptWpt.cpp
@@ -38,8 +38,8 @@ CScrOptWpt::CScrOptWpt(CGisItemWpt *wpt, const QPoint& point, IMouse *parent)
     label->setText(wpt->getInfo());
     adjustSize();
 
-    toolMove->setEnabled(!wpt->isReadOnly());
-    toolProj->setEnabled(!wpt->isGeocache());
+    toolMove->setDisabled(wpt->isReadOnly());
+    toolProj->setDisabled(wpt->isGeocache() || wpt->isOnDevice());
     photoAlbum->reload(wpt->getImages());
 
     anchor = wpt->getPointCloseBy(point);
diff --git a/src/gis/wpt/IDetailsGeoCache.ui b/src/gis/wpt/IDetailsGeoCache.ui
index 934af5a..814fb08 100644
--- a/src/gis/wpt/IDetailsGeoCache.ui
+++ b/src/gis/wpt/IDetailsGeoCache.ui
@@ -23,9 +23,6 @@
    <iconset resource="../../resources.qrc">
     <normaloff>:/icons/32x32/Map.png</normaloff>:/icons/32x32/Map.png</iconset>
   </property>
-  <property name="styleSheet">
-   <string notr="true">background-color: rgb(255, 255, 255);</string>
-  </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
     <layout class="QGridLayout" name="gridLayout">
diff --git a/src/helpers/CPhotoAlbum.cpp b/src/helpers/CPhotoAlbum.cpp
index 6a637fb..e75d605 100644
--- a/src/helpers/CPhotoAlbum.cpp
+++ b/src/helpers/CPhotoAlbum.cpp
@@ -67,7 +67,7 @@ void CPhotoAlbum::slotAddImage()
     {
         return;
     }
-    foreach(const QString& filename, filenames)
+    foreach(const QString &filename, filenames)
     {
         CGisItemWpt::image_t image;
         image.fileName = filename;
diff --git a/src/helpers/CPhotoViewer.cpp b/src/helpers/CPhotoViewer.cpp
index f538486..65f92de 100644
--- a/src/helpers/CPhotoViewer.cpp
+++ b/src/helpers/CPhotoViewer.cpp
@@ -46,7 +46,6 @@ CPhotoViewer::CPhotoViewer(QList<CGisItemWpt::image_t> &images, int idx, QWidget
 
 CPhotoViewer::~CPhotoViewer()
 {
-
 }
 
 
@@ -90,7 +89,6 @@ void CPhotoViewer::setImageAtIdx(int i)
         }
 
         rectImage.moveCenter(center);
-
     }
     else
     {
@@ -134,7 +132,6 @@ void CPhotoViewer::paintEvent(QPaintEvent * e)
         p.drawRect(rectPrev);
         p.drawPixmap(rectPrev, QPixmap("://icons/32x32/Left.png"));
     }
-
 }
 
 
diff --git a/src/helpers/CPhotoViewer.h b/src/helpers/CPhotoViewer.h
index 4c3764e..abf70e6 100644
--- a/src/helpers/CPhotoViewer.h
+++ b/src/helpers/CPhotoViewer.h
@@ -44,7 +44,6 @@ private:
     QRect rectClose;
     QRect rectPrev;
     QRect rectNext;
-
 };
 
 #endif //CPHOTOVIEWER_H
diff --git a/src/helpers/CSelectCopyAction.cpp b/src/helpers/CSelectCopyAction.cpp
index 1201001..9fdda13 100644
--- a/src/helpers/CSelectCopyAction.cpp
+++ b/src/helpers/CSelectCopyAction.cpp
@@ -17,6 +17,7 @@
 **********************************************************************************************/
 
 #include "gis/IGisItem.h"
+#include "gis/prj/IGisProject.h"
 #include "helpers/CSelectCopyAction.h"
 
 #include <QtWidgets>
@@ -39,6 +40,27 @@ CSelectCopyAction::CSelectCopyAction(const IGisItem *src, const IGisItem *tar, Q
     connect(pushClone, SIGNAL(clicked()), this, SLOT(slotSelectResult()));
 }
 
+CSelectCopyAction::CSelectCopyAction(const IGisProject * src, const IGisProject * tar, QWidget * parent)
+    : QDialog(parent)
+    , result(eResultNone)
+{
+    setupUi(this);
+
+    labelIcon1->setPixmap(src->getIcon());
+    labelInfo1->setText(src->getInfo());
+    labelIcon2->setPixmap(tar->getIcon());
+    labelInfo2->setText(tar->getInfo());
+
+    pushClone->setEnabled(false);
+
+    adjustSize();
+
+    connect(pushCopy, SIGNAL(clicked()), this, SLOT(slotSelectResult()));
+    connect(pushSkip, SIGNAL(clicked()), this, SLOT(slotSelectResult()));
+
+
+}
+
 CSelectCopyAction::~CSelectCopyAction()
 {
 }
diff --git a/src/helpers/CSelectCopyAction.h b/src/helpers/CSelectCopyAction.h
index 7f2597e..a90a55c 100644
--- a/src/helpers/CSelectCopyAction.h
+++ b/src/helpers/CSelectCopyAction.h
@@ -23,12 +23,14 @@
 #include <QDialog>
 
 class IGisItem;
+class IGisProject;
 
 class CSelectCopyAction : public QDialog, private Ui::ISelectCopyAction
 {
     Q_OBJECT
 public:
     CSelectCopyAction(const IGisItem * src, const IGisItem * tar, QWidget * parent);
+    CSelectCopyAction(const IGisProject * src, const IGisProject * tar, QWidget * parent);
     virtual ~CSelectCopyAction();
 
     enum result_e
diff --git a/src/icons/32x32/Device.png b/src/icons/32x32/Device.png
new file mode 100644
index 0000000..e5331a4
Binary files /dev/null and b/src/icons/32x32/Device.png differ
diff --git a/src/icons/48x48/Device.png b/src/icons/48x48/Device.png
new file mode 100644
index 0000000..1b9e940
Binary files /dev/null and b/src/icons/48x48/Device.png differ
diff --git a/src/icons/Device.svg b/src/icons/Device.svg
new file mode 100644
index 0000000..4a99fb8
--- /dev/null
+++ b/src/icons/Device.svg
@@ -0,0 +1,177 @@
+<?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="Device.svg">
+  <defs
+     id="defs3515">
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4038"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.4,0,0,0.4,4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mend"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4041"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11"
+     inkscape:cx="-6.4610359"
+     inkscape:cy="29.321936"
+     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="grid3006" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3518">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       id="g2998"
+       transform="translate(1,2)">
+      <rect
+         y="4"
+         x="15"
+         height="50"
+         width="30"
+         id="rect3008"
+         style="fill:#000080;stroke:#000080;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+      <rect
+         y="9"
+         x="20"
+         height="30"
+         width="20"
+         id="rect3790"
+         style="fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:#b3b3b3;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+      <g
+         transform="translate(-0.5,0)"
+         id="g3834">
+        <g
+           id="g3826">
+          <path
+             transform="translate(0,0.5)"
+             sodipodi:open="true"
+             sodipodi:end="6.2789689"
+             sodipodi:start="0"
+             d="m 32,43.5 a 1.5,1.5 0 1 1 -1.3e-5,-0.0063"
+             sodipodi:ry="1.5"
+             sodipodi:rx="1.5"
+             sodipodi:cy="43.5"
+             sodipodi:cx="30.5"
+             id="path3792"
+             style="fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:#b3b3b3;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+             sodipodi:type="arc" />
+          <path
+             transform="translate(0,7.5)"
+             sodipodi:open="true"
+             sodipodi:end="6.2789689"
+             sodipodi:start="0"
+             d="m 32,43.5 a 1.5,1.5 0 1 1 -1.3e-5,-0.0063"
+             sodipodi:ry="1.5"
+             sodipodi:rx="1.5"
+             sodipodi:cy="43.5"
+             sodipodi:cx="30.5"
+             id="path3792-5"
+             style="fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:#b3b3b3;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+             sodipodi:type="arc" />
+        </g>
+        <g
+           id="g3830"
+           transform="translate(0,1)">
+          <path
+             transform="translate(-7.5,3)"
+             sodipodi:open="true"
+             sodipodi:end="6.2789689"
+             sodipodi:start="0"
+             d="m 32,43.5 a 1.5,1.5 0 1 1 -1.3e-5,-0.0063"
+             sodipodi:ry="1.5"
+             sodipodi:rx="1.5"
+             sodipodi:cy="43.5"
+             sodipodi:cx="30.5"
+             id="path3792-0"
+             style="fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:#b3b3b3;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+             sodipodi:type="arc" />
+          <path
+             transform="translate(7.5,3)"
+             sodipodi:open="true"
+             sodipodi:end="6.2789689"
+             sodipodi:start="0"
+             d="m 32,43.5 a 1.5,1.5 0 1 1 -1.3e-5,-0.0063"
+             sodipodi:ry="1.5"
+             sodipodi:rx="1.5"
+             sodipodi:cy="43.5"
+             sodipodi:cx="30.5"
+             id="path3792-7"
+             style="fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:#b3b3b3;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+             sodipodi:type="arc" />
+        </g>
+      </g>
+    </g>
+    <rect
+       style="fill:none;stroke:none"
+       id="rect2996"
+       width="54"
+       height="54"
+       x="4"
+       y="4" />
+  </g>
+</svg>
diff --git a/src/locale/qmapshack_cs.ts b/src/locale/qmapshack_cs.ts
index 35c2ef8..e8fd998 100644
--- a/src/locale/qmapshack_cs.ts
+++ b/src/locale/qmapshack_cs.ts
@@ -128,12 +128,12 @@
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="229"/>
         <source>Build diary...</source>
-        <translation type="unfinished"></translation>
+        <translation>Sestavit deník...</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="229"/>
         <source>Abort</source>
-        <translation type="unfinished"></translation>
+        <translation>Zrušit</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="234"/>
@@ -162,7 +162,7 @@
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="330"/>
         <source><h2>Areas</h2></source>
-        <translation type="unfinished"></translation>
+        <translation><h2>Oblasti</h2></translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="366"/>
@@ -202,12 +202,12 @@
     <message>
         <location filename="../gis/trk/CDetailsTrk.cpp" line="70"/>
         <source>Change elevation of track points</source>
-        <translation>Změnit informace o výšce bodů stopy.</translation>
+        <translation>Změnit informace o výškách bodů stopy</translation>
     </message>
     <message>
         <location filename="../gis/trk/CDetailsTrk.cpp" line="83"/>
         <source>Change timestamp of track points</source>
-        <translation>Změnit časové razítko bodů stopy</translation>
+        <translation>Změnit časová razítka bodů stopy</translation>
     </message>
     <message>
         <location filename="../gis/trk/CDetailsTrk.cpp" line="96"/>
@@ -360,97 +360,98 @@
 <context>
     <name>CGisListWks</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="82"/>
+        <location filename="../gis/CGisListWks.cpp" line="90"/>
         <source>Save As...</source>
         <translation>Uložit jako...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="83"/>
+        <location filename="../gis/CGisListWks.cpp" line="91"/>
         <source>Save</source>
         <translation>Uložit</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="81"/>
+        <location filename="../gis/CGisListWks.cpp" line="89"/>
         <source>Edit..</source>
         <translation>Upravit...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="84"/>
+        <location filename="../gis/CGisListWks.cpp" line="92"/>
         <source>Close</source>
         <translation>Zavřít</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="90"/>
+        <location filename="../gis/CGisListWks.cpp" line="99"/>
         <source>Edit...</source>
         <translation>Upravit...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="91"/>
+        <location filename="../gis/CGisListWks.cpp" line="100"/>
         <source>Copy to...</source>
         <translation>Kopírovat do...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="103"/>
+        <location filename="../gis/CGisListWks.cpp" line="112"/>
         <source>Move Waypoint</source>
         <translation>Přesunout cestovní bod</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="113"/>
         <source>Proj. Waypoint...</source>
-        <translation>Promítnout cestovní bod...</translation>
+        <translation>Promítnutí cestovního bodu...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="92"/>
+        <location filename="../gis/CGisListWks.cpp" line="101"/>
         <source>Track Profile</source>
-        <translation>Sledovat profil</translation>
+        <translation>Profil stopy</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="94"/>
+        <location filename="../gis/CGisListWks.cpp" line="103"/>
         <source>Select Range</source>
         <translation>Vybrat rozsah</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="95"/>
+        <location filename="../gis/CGisListWks.cpp" line="104"/>
         <source>Edit Track Points</source>
         <translation>Upravit body stopy</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="96"/>
+        <location filename="../gis/CGisListWks.cpp" line="105"/>
         <source>Reverse Track</source>
         <translation>Obrátit stopu</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="97"/>
+        <location filename="../gis/CGisListWks.cpp" line="106"/>
         <source>Combine Tracks</source>
         <translation>Spojit stopy</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="116"/>
+        <location filename="../gis/CGisListWks.cpp" line="125"/>
         <source>Edit Area Points</source>
         <translation>Upravit body oblasti</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="98"/>
+        <location filename="../gis/CGisListWks.cpp" line="93"/>
+        <location filename="../gis/CGisListWks.cpp" line="107"/>
         <source>Delete</source>
         <translation>Smazat</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="564"/>
+        <location filename="../gis/CGisListWks.cpp" line="657"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Ukládá se pohled. Počkejte, prosím.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="605"/>
+        <location filename="../gis/CGisListWks.cpp" line="698"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Nahrává se pohled. Počkejte, prosím.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1002"/>
+        <location filename="../gis/CGisListWks.cpp" line="1135"/>
         <source>Close all projects...</source>
         <translation>Zavřít všechny projekty...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1002"/>
+        <location filename="../gis/CGisListWks.cpp" line="1135"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Tímto budou všechny projekty odstraněny z pohledu.</translation>
     </message>
@@ -458,12 +459,12 @@
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="344"/>
+        <location filename="../gis/CGisWidget.cpp" line="382"/>
         <source>Cut Track...</source>
         <translation>Rozkrajet stopu...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="344"/>
+        <location filename="../gis/CGisWidget.cpp" line="382"/>
         <source>Do you want to delete the original track?</source>
         <translation>Opravdu chcete smazat původní stopu?</translation>
     </message>
@@ -1415,7 +1416,7 @@ Neznámá stavba.</translation>
     <message>
         <location filename="../helpers/CPhotoAlbum.cpp" line="65"/>
         <source>Select images...</source>
-        <translation type="unfinished"></translation>
+        <translation>Vybrat obrázky...</translation>
     </message>
 </context>
 <context>
@@ -1428,7 +1429,7 @@ Neznámá stavba.</translation>
     <message>
         <location filename="../plot/CPlotDistance.cpp" line="57"/>
         <source>time</source>
-        <translation type="unfinished"></translation>
+        <translation>Čas</translation>
     </message>
     <message>
         <source>time [h]</source>
@@ -1930,48 +1931,48 @@ není platným vymezením soustavy souřadnic
         <translation>Dialog</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="70"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="92"/>
-        <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="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"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="67"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="89"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="115"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="128"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="141"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="154"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="167"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="193"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="206"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="219"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="232"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="245"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="62"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="59"/>
         <source>about:blank</source>
         <translation>o:prázdný</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="85"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="82"/>
         <source>Position:</source>
         <translation>Poloha:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="105"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="102"/>
         <source>Difficulty</source>
         <translation>Obtížnost</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="183"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="180"/>
         <source>Terrain</source>
         <translation>Terén</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="35"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="32"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="259"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="256"/>
         <source>Hint:</source>
         <translation>Rada:</translation>
     </message>
@@ -2045,17 +2046,17 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="70"/>
         <source>Sort By Time</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="86"/>
         <source>Keep Order of Project</source>
-        <translation type="unfinished"></translation>
+        <translation>Zachovat pořadí projektu</translation>
     </message>
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="93"/>
         <source>Print diary</source>
-        <translation type="unfinished"></translation>
+        <translation>Tisk deníku</translation>
     </message>
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="96"/>
@@ -2066,7 +2067,7 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="113"/>
         <source>Rebuild diary.</source>
-        <translation type="unfinished"></translation>
+        <translation>Sestavit deník znovu.</translation>
     </message>
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="43"/>
@@ -2228,12 +2229,12 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="270"/>
         <source>Add images.</source>
-        <translation type="unfinished"></translation>
+        <translation>Přidat obrázky.</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="290"/>
         <source>Delete selected image.</source>
-        <translation type="unfinished"></translation>
+        <translation>Smazat vybraný obrázek.</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="144"/>
@@ -2279,12 +2280,12 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/trk/filter/IFilterDelete.ui" line="51"/>
         <source><b>Remove Track Points</b></source>
-        <translation><b>Odstranit cestovní body</b></translation>
+        <translation><b>Odstranit body stopy</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDelete.ui" line="63"/>
         <source>Remove all hidden track points permanently.</source>
-        <translation>Odstranit trvale všechny skryté cestovní body.</translation>
+        <translation>Odstranit trvale všechny skryté body stopy.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDelete.ui" line="70"/>
@@ -2307,7 +2308,7 @@ není platným vymezením soustavy souřadnic
     <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>Skrýt cestovní body, když je vzdálenost k čáře mezi sousedícími body méně než</translation>
+        <translation>Skrýt body stopy, 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"/>
@@ -2340,7 +2341,7 @@ není platným vymezením soustavy souřadnic
     <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>Zmenšit odchylku výšky cestovních bodů pomocí filtru střední hodnoty o velikosti </translation>
+        <translation>Zmenšit odchylku výšky bodů stopy pomocí filtru střední hodnoty o velikosti </translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterMedian.ui" line="76"/>
@@ -2429,7 +2430,7 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="95"/>
         <source>to track points elevation.</source>
-        <translation>ke každé výšce cestovního bodu.</translation>
+        <translation>ke každé výšce bodu stopy.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="115"/>
@@ -2452,7 +2453,7 @@ není platným vymezením soustavy souřadnic
     <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>Nahradit výšková data cestovních bodů daty z nahraných souborů s digitálními výškovými modely.</translation>
+        <translation>Nahradit výšková data bodů stopy 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"/>
@@ -2465,22 +2466,22 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/trk/filter/IFilterReset.ui" line="14"/>
         <source>Form</source>
-        <translation type="unfinished">Formulář</translation>
+        <translation>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>
+        <translation><b>Nastavit znovu skryté body stopy</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterReset.ui" line="47"/>
         <source>Make all trackpoints visible again.</source>
-        <translation type="unfinished"></translation>
+        <translation>Udělat všechny body stopy znovu viditelnými.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterReset.ui" line="54"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2523,13 +2524,13 @@ není platným vymezením soustavy souřadnic
         <translation type="obsolete">Stav</translation>
     </message>
     <message>
-        <location filename="../gis/IGisWidget.ui" line="65"/>
-        <location filename="../gis/IGisWidget.ui" line="97"/>
+        <location filename="../gis/IGisWidget.ui" line="69"/>
+        <location filename="../gis/IGisWidget.ui" line="99"/>
         <source>Name</source>
         <translation>Název</translation>
     </message>
     <message>
-        <location filename="../gis/IGisWidget.ui" line="130"/>
+        <location filename="../gis/IGisWidget.ui" line="133"/>
         <source>To add a database do a right click on the database list above.</source>
         <translation>Pro přidání databáze klepněte pravým tlačítkem myši na seznam s databázemi výše.</translation>
     </message>
@@ -3029,13 +3030,13 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../helpers/IPhotoAlbum.ui" line="20"/>
         <source>Form</source>
-        <translation type="unfinished">Formulář</translation>
+        <translation>Formulář</translation>
     </message>
     <message>
         <location filename="../helpers/IPhotoAlbum.ui" line="50"/>
         <location filename="../helpers/IPhotoAlbum.ui" line="77"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -3881,13 +3882,13 @@ nebo
         <translation>Špatný polohový formát. Musí být: "[N|S] ddd mm.sss [W|E] ddd mm.sss"</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="66"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="75"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="105"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="114"/>
         <source>Failed to read...</source>
         <translation>Nepodařilo se přečíst...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="66"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="105"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
@@ -3896,7 +3897,7 @@ line %2, column %3:
 %4</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="75"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="114"/>
         <source>Not a GPX file: </source>
         <translation>Není souborem GPX: </translation>
     </message>
@@ -3931,34 +3932,34 @@ Areas: %1</source>
 Oblasti: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="165"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="206"/>
         <source><br/>
 Filename: %1</source>
         <translation><br/>
 Název souboru: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="182"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="223"/>
         <source>Waypoints: %1</source>
         <translation>Cestovní body: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="186"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="227"/>
         <source>Tracks: %1</source>
         <translation>Stopy: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="190"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="231"/>
         <source>Routes: %1</source>
         <translation>Cesty: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="194"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="235"/>
         <source>Areas: %1</source>
         <translation>Oblasti: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="250"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="291"/>
         <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>
@@ -3969,19 +3970,19 @@ Název souboru: %1</translation>
     </message>
     <message>
         <location filename="../gis/CGisListDB.cpp" line="407"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="251"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="292"/>
         <source>Delete...</source>
         <translation>Smazat...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="53"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="92"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
         <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/gpx/CGpxProject.cpp" line="92"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="143"/>
         <source>Failed to open %1</source>
@@ -3989,7 +3990,7 @@ Název souboru: %1</translation>
     </message>
     <message>
         <location filename="../gis/db/CDBProject.cpp" line="125"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="154"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="196"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="93"/>
         <source>Save GIS data to...</source>
         <translation>Uložit data GIS do...</translation>
@@ -4005,128 +4006,127 @@ Název souboru: %1</translation>
         <translation>Zrušit ukládání</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="229"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="271"/>
         <source>File exists ...</source>
         <translation>Soubor existuje...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="230"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="272"/>
         <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="296"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="306"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="364"/>
         <source>Saveing GIS data failed...</source>
         <translation>Nepodařilo se uložit data GIS...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="296"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="350"/>
         <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="306"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="359"/>
         <source>Failed to write file '%1'</source>
         <translation>Nepodařilo se zapsat soubor '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="292"/>
+        <location filename="../gis/IGisItem.cpp" line="294"/>
         <source>Initial version.</source>
         <translation>Počáteční verze.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="376"/>
+        <location filename="../gis/IGisItem.cpp" line="388"/>
         <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="377"/>
+        <location filename="../gis/IGisItem.cpp" line="389"/>
         <source>Read Only Mode...</source>
         <translation>Režim pouze pro čtení...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="575"/>
+        <location filename="../gis/IGisItem.cpp" line="587"/>
         <source><h4>Comment:</h4></source>
         <translation><h4>Poznámka:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="578"/>
+        <location filename="../gis/IGisItem.cpp" line="590"/>
         <source><p>--- no comment ---</p></source>
         <translation><p>--- žádná poznámka ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="589"/>
-        <location filename="../gis/IGisItem.cpp" line="634"/>
+        <location filename="../gis/IGisItem.cpp" line="601"/>
+        <location filename="../gis/IGisItem.cpp" line="646"/>
         <source><h4>Description:</h4></source>
         <translation><h4>Popis:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="592"/>
-        <location filename="../gis/IGisItem.cpp" line="637"/>
+        <location filename="../gis/IGisItem.cpp" line="604"/>
+        <location filename="../gis/IGisItem.cpp" line="649"/>
         <source><p>--- no description ---</p></source>
         <translation><p>--- žádný popis ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="603"/>
-        <location filename="../gis/IGisItem.cpp" line="648"/>
+        <location filename="../gis/IGisItem.cpp" line="615"/>
+        <location filename="../gis/IGisItem.cpp" line="660"/>
         <source><h4>Links:</h4></source>
         <translation><h4>Odkazy:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="606"/>
-        <location filename="../gis/IGisItem.cpp" line="651"/>
+        <location filename="../gis/IGisItem.cpp" line="618"/>
+        <location filename="../gis/IGisItem.cpp" line="663"/>
         <source><p>--- no links ---</p></source>
         <translation><p>--- žádné odkazy ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="332"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="333"/>
         <source>Length: %1 %2</source>
         <translation>Délka: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="339"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="340"/>
         <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="347"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="348"/>
         <source>Time: %1</source>
         <translation>Čas: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="350"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="360"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="351"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="361"/>
         <source>, Speed: %1 %2</source>
         <translation>, Rychlost: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="357"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="358"/>
         <source>Moving: %1</source>
         <translation>Pohyb: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="366"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="367"/>
         <source>Start: %1</source>
         <translation>Začátek: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="371"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="372"/>
         <source>End: %1</source>
         <translation>Konec: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="375"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="376"/>
         <source>Points: %1 (%2)</source>
         <translation>Body: %1 (%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="440"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="441"/>
         <source>Ele.: %1 %2</source>
         <translation>Výška: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="443"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="444"/>
         <source> slope: %1%3 (%2%)</source>
         <translation> sklon: %1%3 (%2%)</translation>
     </message>
@@ -4145,37 +4145,37 @@ Název souboru: %1</translation>
         <translation type="obsolete"> sklon: %1°(%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="448"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="449"/>
         <source> speed: %1%2</source>
         <translation> rychlost: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="460"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="461"/>
         <source>Ascend: %1%2 (%3%)</source>
         <translation>Stoupání: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="464"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="465"/>
         <source>Ascend: - (-)</source>
         <translation>Stoupání: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="474"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="475"/>
         <source> Descend: - (-) </source>
         <translation> Klesání: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="495"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="496"/>
         <source> Moving: - (-) </source>
         <translation> Pohyb: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="470"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="471"/>
         <source> Descend: %1%2 (%3%)</source>
         <translation> Klesání: %1%2 (%3%) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="265"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="266"/>
         <source>Changed trackpoints, sacrificed all previous data.</source>
         <translation>Změněny body stop. Obětována veškerá předchozí data.</translation>
     </message>
@@ -4184,17 +4184,17 @@ Název souboru: %1</translation>
         <translation type="obsolete"> sklon: %1° (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="481"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="482"/>
         <source>Dist.: %1%2 (%3%)</source>
         <translation>Vzdálenost: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="485"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="486"/>
         <source>Dist.: - (-)</source>
         <translation>Vzdálenost: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="491"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="492"/>
         <source> Moving: %1%2 (%3%)</source>
         <translation> Pohyb: %1%2 (%3%) </translation>
     </message>
@@ -4219,80 +4219,80 @@ Název souboru: %1</translation>
         <translation>Silný</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="141"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="44"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="161"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="101"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="142"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="45"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="162"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="102"/>
         <source>_Clone</source>
         <translation>_Klon</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="417"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="418"/>
         <source>Area: %1%2</source>
         <translation>Oblast: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="475"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="476"/>
         <source>Changed area shape.</source>
         <translation>Změněn tvar oblasti.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="483"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="484"/>
         <source>Changed name.</source>
         <translation>Změněn název.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="489"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="490"/>
         <source>Changed border width.</source>
         <translation>Změněna šířka okraje.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="495"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="496"/>
         <source>Changed fill pattern.</source>
         <translation>Změněn vzor výplně.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="501"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="502"/>
         <source>Changed opacity.</source>
         <translation>Změněna neprůhlednost.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="507"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="508"/>
         <source>Changed comment.</source>
         <translation>Změněna poznámka.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="513"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="514"/>
         <source>Changed description.</source>
         <translation>Změněn popis.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="519"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="138"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="520"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="139"/>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="1428"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="359"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="360"/>
         <source>Changed links</source>
         <translation>Změněné odkazy</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="531"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="532"/>
         <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="228"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="229"/>
         <source>Elevation: %1 %2</source>
         <translation>Výška: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="239"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="240"/>
         <source>Proximity: %1 %2</source>
         <translation>Blízkost: %1 %2</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="1410"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="310"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="311"/>
         <source>Changed name</source>
         <translation>Změněný název</translation>
     </message>
@@ -4302,68 +4302,68 @@ Název souboru: %1</translation>
         <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="../gis/wpt/CGisItemWpt.cpp" line="177"/>
         <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="176"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="177"/>
         <source>Enter new waypoint name.</source>
         <translation>Zadat nový název pro cestovní bod.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="317"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="318"/>
         <source>Changed position</source>
         <translation>Změněná poloha</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="323"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="324"/>
         <source>Changed elevation</source>
         <translation>Změněná výška</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="329"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="330"/>
         <source>Changed proximity</source>
         <translation>Změněná blízkost</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="341"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="342"/>
         <source>Changed icon</source>
         <translation>Změněná ikona</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="365"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="366"/>
         <source>Changed images</source>
-        <translation type="unfinished"></translation>
+        <translation>Změněné obrázky</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="126"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="127"/>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="1416"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="347"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="348"/>
         <source>Changed comment</source>
         <translation>Změněná poznámka</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="132"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="133"/>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="1422"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="353"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="354"/>
         <source>Changed description</source>
         <translation>Změněný popis</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="507"/>
+        <location filename="../gis/gpx/serialization.cpp" line="575"/>
         <source>Archived</source>
         <translation>Archivováno</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="511"/>
+        <location filename="../gis/gpx/serialization.cpp" line="579"/>
         <source>Available</source>
         <translation>Dostupné</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="515"/>
+        <location filename="../gis/gpx/serialization.cpp" line="583"/>
         <source>Not Available</source>
         <translation>Nedostupné</translation>
     </message>
@@ -4452,12 +4452,12 @@ Název souboru: %1</translation>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="111"/>
         <source>Reset all hidden track points to visible</source>
-        <translation type="unfinished"></translation>
+        <translation>Nastavit znovu všechny skryté body stopy na viditelné</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="136"/>
         <source>Permanently removed all hidden track points</source>
-        <translation>Všechny skryté body stopy odstraněné trvale</translation>
+        <translation>Všechny skryté body stopy odstraněny trvale</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="186"/>
@@ -4494,5 +4494,15 @@ Název souboru: %1</translation>
         <source>Changed speed to %1%2.</source>
         <translation>Rychlost změněna na %1%2.</translation>
     </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="878"/>
+        <source>Delete project...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="878"/>
+        <source>Do you really want to delete %1?</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
diff --git a/src/locale/qmapshack_de.ts b/src/locale/qmapshack_de.ts
index fa126a7..695c581 100644
--- a/src/locale/qmapshack_de.ts
+++ b/src/locale/qmapshack_de.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="de_DE">
+<TS version="2.1" language="de_DE">
 <context>
     <name>CCanvas</name>
     <message>
@@ -132,7 +132,7 @@
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="229"/>
         <source>Build diary...</source>
-        <translation>Erstelle Tagebuch...</translation>
+        <translation>Tagebuch erstellen...</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="229"/>
@@ -205,22 +205,22 @@
     <message>
         <location filename="../gis/trk/CDetailsTrk.cpp" line="57"/>
         <source>Reduce visible track points</source>
-        <translation>Die Anzahl der sichtbaren Trackpunkte reduzieren</translation>
+        <translation>Sichtbare Trackpunkte reduzieren</translation>
     </message>
     <message>
         <location filename="../gis/trk/CDetailsTrk.cpp" line="70"/>
         <source>Change elevation of track points</source>
-        <translation>Die Höheninformation der Trackpunkte ändern</translation>
+        <translation>Höhe von Trackpunkten ändern</translation>
     </message>
     <message>
         <location filename="../gis/trk/CDetailsTrk.cpp" line="83"/>
         <source>Change timestamp of track points</source>
-        <translation>Die Zeitmarken der Trackpunkte ändern</translation>
+        <translation>Zeitstempel von Trackpunkten ändern</translation>
     </message>
     <message>
         <location filename="../gis/trk/CDetailsTrk.cpp" line="96"/>
         <source>Cut track into pieces</source>
-        <translation>Den Track in Stücke zerschneiden</translation>
+        <translation>Track in Stücke teilen</translation>
     </message>
     <message>
         <location filename="../gis/trk/CDetailsTrk.cpp" line="210"/>
@@ -377,48 +377,48 @@
     <message>
         <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>
+        <translation>Sind Sie sicher, dass Sie alle Elemente in Verloren & Gefunden löschen wollen? Sie werden dauerhaftentfernt.</translation>
     </message>
     <message>
         <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>
+        <translation>Sind Sie sicher, dass Sie alle ausgewählten Elemente in Verloren & Gefunden löschen wollen? Sie werden dauerhaft entfernt.</translation>
     </message>
 </context>
 <context>
     <name>CGisListWks</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="83"/>
+        <location filename="../gis/CGisListWks.cpp" line="91"/>
         <source>Save</source>
         <translation>Speichern</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="82"/>
+        <location filename="../gis/CGisListWks.cpp" line="90"/>
         <source>Save As...</source>
         <translation>Speichern unter...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="81"/>
+        <location filename="../gis/CGisListWks.cpp" line="89"/>
         <source>Edit..</source>
         <translation>Bearbeiten..</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="84"/>
+        <location filename="../gis/CGisListWks.cpp" line="92"/>
         <source>Close</source>
         <translation>Schließen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="90"/>
+        <location filename="../gis/CGisListWks.cpp" line="99"/>
         <source>Edit...</source>
-        <translation>Ändern...</translation>
+        <translation>Bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="91"/>
+        <location filename="../gis/CGisListWks.cpp" line="100"/>
         <source>Copy to...</source>
         <translation>Kopieren nach...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="103"/>
+        <location filename="../gis/CGisListWks.cpp" line="112"/>
         <source>Move Waypoint</source>
         <translation>Wegpunkt verschieben</translation>
     </message>
@@ -427,62 +427,63 @@
         <translation type="obsolete">Wegpunkt verschieben...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="113"/>
         <source>Proj. Waypoint...</source>
         <translation>Wegpunkt Projektion...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="92"/>
+        <location filename="../gis/CGisListWks.cpp" line="101"/>
         <source>Track Profile</source>
         <translation>Trackprofil</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="94"/>
+        <location filename="../gis/CGisListWks.cpp" line="103"/>
         <source>Select Range</source>
         <translation>Bereich wählen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="95"/>
+        <location filename="../gis/CGisListWks.cpp" line="104"/>
         <source>Edit Track Points</source>
-        <translation>Wegpunkte bearbeiten</translation>
+        <translation>Trackpunkte bearbeiten</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="96"/>
+        <location filename="../gis/CGisListWks.cpp" line="105"/>
         <source>Reverse Track</source>
         <translation>Track umkehren</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="97"/>
+        <location filename="../gis/CGisListWks.cpp" line="106"/>
         <source>Combine Tracks</source>
         <translation>Tracks verbinden</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="116"/>
+        <location filename="../gis/CGisListWks.cpp" line="125"/>
         <source>Edit Area Points</source>
         <translation>Flächenpunkte bearbeiten</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="98"/>
+        <location filename="../gis/CGisListWks.cpp" line="93"/>
+        <location filename="../gis/CGisListWks.cpp" line="107"/>
         <source>Delete</source>
         <translation>Löschen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="564"/>
+        <location filename="../gis/CGisListWks.cpp" line="657"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Ansicht speichern. Bitte warten.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="605"/>
+        <location filename="../gis/CGisListWks.cpp" line="698"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Ansicht laden. Bitte warten.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1002"/>
+        <location filename="../gis/CGisListWks.cpp" line="1135"/>
         <source>Close all projects...</source>
         <translation>Alle Projkete schließen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1002"/>
+        <location filename="../gis/CGisListWks.cpp" line="1135"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Dies wird alle Projekte aus der Ansicht entfernen.</translation>
     </message>
@@ -498,14 +499,14 @@
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="344"/>
+        <location filename="../gis/CGisWidget.cpp" line="382"/>
         <source>Cut Track...</source>
-        <translation>Track zerschneiden...</translation>
+        <translation>Track teilen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="344"/>
+        <location filename="../gis/CGisWidget.cpp" line="382"/>
         <source>Do you want to delete the original track?</source>
-        <translation>Wollen sie den originalen Track löschen?</translation>
+        <translation>Wollen Sie den ursprünglichen Track löschen?</translation>
     </message>
 </context>
 <context>
@@ -538,7 +539,7 @@
     <message>
         <location filename="../qlgt/CImportDatabase.cpp" line="29"/>
         <source>Import QLandkarte Database</source>
-        <translation>Importiert eine QLandkarte Datenbank</translation>
+        <translation>QLandkarte Datenbank importieren</translation>
     </message>
     <message>
         <location filename="../qlgt/CImportDatabase.cpp" line="73"/>
@@ -569,7 +570,7 @@
     <message>
         <location filename="../CMainWindow.cpp" line="559"/>
         <source>Load GIS Data...</source>
-        <translation>Lade GIS Daten...</translation>
+        <translation>GIS Daten laden...</translation>
     </message>
 </context>
 <context>
@@ -1240,7 +1241,7 @@
     <message>
         <location filename="../map/CMapPathSetup.cpp" line="39"/>
         <source>Add or remove paths containing maps. There can be multiple maps in a path but no sub-path is parsed. Supported formats are: %1</source>
-        <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>
+        <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="54"/>
@@ -1486,7 +1487,7 @@ Unbekannte Struktur.</translation>
     <message>
         <location filename="../mouse/CMouseRangeTrk.cpp" line="48"/>
         <source><b>Select Range</b><br/>Select first track point. And then a second one.<br/></source>
-        <translation><b>Bereich wählen</b><br/>Wähle einen ersten Punkt. Dann einen zweiten.<br/></translation>
+        <translation><b>Bereich wählen</b><br/>Wählen Sie einen ersten Punkt. Dann einen zweiten.<br/></translation>
     </message>
 </context>
 <context>
@@ -1494,7 +1495,7 @@ Unbekannte Struktur.</translation>
     <message>
         <location filename="../helpers/CPhotoAlbum.cpp" line="65"/>
         <source>Select images...</source>
-        <translation>Photos auswählen...</translation>
+        <translation>Bilder wählen...</translation>
     </message>
 </context>
 <context>
@@ -1511,7 +1512,7 @@ Unbekannte Struktur.</translation>
     </message>
     <message>
         <source>time [h]</source>
-        <translation type="obsolete">Zeit [h]</translation>
+        <translation type="obsolete">Uhrzeit</translation>
     </message>
     <message>
         <location filename="../plot/CPlotDistance.cpp" line="59"/>
@@ -1909,7 +1910,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../dem/IDemPathSetup.ui" line="14"/>
         <source>Setup DEM file pathss</source>
-        <translation>Pfad für die DEM Dateien setzen</translation>
+        <translation>Pfad für DEM Dateien setzen</translation>
     </message>
     <message>
         <location filename="../dem/IDemPathSetup.ui" line="31"/>
@@ -1997,7 +1998,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../dem/IDemList.ui" line="131"/>
         <source>Use the context menu (right mouse button click on entry) to activate a file. Use drag-n-drop to move the activated file in the process order. </source>
-        <translation>Nutze das Kontextmenü ( Klick mit rechter Maustaste auf Eintrag), um eine Datei zu aktivieren. Nutze Ziehen u. Ablegen um die aktivierte Datei in der Reihenfolge der Ansicht zu verschieben.</translation>
+        <translation>Nutze das Kontextmenü (Klick mit rechter Maustaste auf Eintrag), um eine Datei zu aktivieren. Nutze Ziehen u. Ablegen um die aktivierte Datei in der Reihenfolge der Ansicht zu verschieben.</translation>
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="156"/>
@@ -2013,48 +2014,48 @@ ist keine gültige Koordinatensystemdefinition:
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="70"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="92"/>
-        <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="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"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="67"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="89"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="115"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="128"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="141"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="154"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="167"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="193"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="206"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="219"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="232"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="245"/>
         <source>-</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="62"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="59"/>
         <source>about:blank</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="85"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="82"/>
         <source>Position:</source>
         <translation>Position:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="105"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="102"/>
         <source>Difficulty</source>
         <translation>Schwierigkeit</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="183"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="180"/>
         <source>Terrain</source>
         <translation>Gelände</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="35"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="32"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="259"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="256"/>
         <source>Hint:</source>
         <translation>Hinweis:</translation>
     </message>
@@ -2128,12 +2129,12 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="70"/>
         <source>Sort By Time</source>
-        <translation>Nach der Zeit sortieren</translation>
+        <translation>Sortieren nach Zeit</translation>
     </message>
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="86"/>
         <source>Keep Order of Project</source>
-        <translation>Die Reihenfolge beibehalten</translation>
+        <translation>Reihenfolge beibehalten</translation>
     </message>
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="93"/>
@@ -2149,7 +2150,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="113"/>
         <source>Rebuild diary.</source>
-        <translation>Tagebuch erneut erstellen.</translation>
+        <translation>Tagebuch aktualisieren.</translation>
     </message>
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="43"/>
@@ -2240,7 +2241,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="156"/>
         <source>Info</source>
-        <translation></translation>
+        <translation>Info.</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="273"/>
@@ -2322,12 +2323,12 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="270"/>
         <source>Add images.</source>
-        <translation>Photos hinzufügen.</translation>
+        <translation>Bilder hinzufügen.</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="290"/>
         <source>Delete selected image.</source>
-        <translation>Ausgewähltes Foto entfernen.</translation>
+        <translation>Ausgewähltes Bild löschen.</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="144"/>
@@ -2340,7 +2341,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="14"/>
         <source>Edit elevation...</source>
-        <translation>Höhenangabe bearbeiten...</translation>
+        <translation>Höhe bearbeiten...</translation>
     </message>
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="22"/>
@@ -2378,7 +2379,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterDelete.ui" line="63"/>
         <source>Remove all hidden track points permanently.</source>
-        <translation>Alle versteckten Trackpunkte werden für immer entfernt.</translation>
+        <translation>Alle verborgenen Trackpunkte werden dauerhaft entfernt.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDelete.ui" line="70"/>
@@ -2396,12 +2397,12 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="45"/>
         <source><b>Hide Points (Douglas Peuker)</b></source>
-        <translation><b>Trackpunkte verstecken (Douglas Peuker)</b></translation>
+        <translation><b>Trackpunkte verbergen (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>Trackpunkte werden versteckt, wenn der Abstand zu einer Linien zwischen benachbarten Punkten weniger beträgt als</translation>
+        <translation>Trackpunkte werden verborgen, wenn der Abstand zu einer Linien zwischen benachbarten Punkten weniger beträgt als</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="70"/>
@@ -2429,12 +2430,12 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterMedian.ui" line="51"/>
         <source><b>Smooth Profile (Median Method)</b></source>
-        <translation><b>Profil glätten (Medianmethode) </b></translation>
+        <translation><b>Profil glätten (Median-Methode) </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>Veringeren Sie die Varianz der Trackpunkthöhe mit einem Medianfilter der Länge </translation>
+        <translation>Glättet die Abweichung der Höhe von Trackpunkten mit einem Median-Filter der Größe </translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterMedian.ui" line="76"/>
@@ -2462,7 +2463,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterNewDate.ui" line="44"/>
         <source>Change start of track to </source>
-        <translation>Verändern Sie die Anfangszeit des Tracks auf </translation>
+        <translation>Ändert den Trackbeginn auf </translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterNewDate.ui" line="71"/>
@@ -2480,22 +2481,22 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="45"/>
         <source><b>Obscure Timestamps</b></source>
-        <translation><b>Zeitmarken verschleiern</b></translation>
+        <translation><b>Zeitstempel verschleiern</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="54"/>
         <source>Increase timestamp by</source>
-        <translation>Vergrößern Sie die Zeitmarke um </translation>
+        <translation>Erhöht den Zeitstempel um </translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="61"/>
         <source> sec.</source>
-        <translation>Sek.</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>für jeden Trackpunkt. 0 Sek. entfernt alle Zeitmarken.</translation>
+        <translation>für jeden Trackpunkt. 0 s. entfernt alle Zeitstempel.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="88"/>
@@ -2513,17 +2514,17 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="51"/>
         <source><b>Offset Elevation</b></source>
-        <translation><b>Offset Höhe</b></translation>
+        <translation><b>Höhenversatz</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="69"/>
         <source>Add offset of</source>
-        <translation>Fügen Sie einen Offset von </translation>
+        <translation>Fügt einen Versatz von </translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="95"/>
         <source>to track points elevation.</source>
-        <translation>zu jeder Trackpunkthöhe hinzu. </translation>
+        <translation>zur Höhe der Trackpunkte hinzu.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="115"/>
@@ -2546,7 +2547,7 @@ ist keine gültige Koordinatensystemdefinition:
     <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>Ersetzen Sie die Höhendaten der Trackpunkte mit Daten aus den geladenen DEM Dateien.</translation>
+        <translation>Ersetzt die Höhendaten durch Daten aus den geladenen DEM Dateien.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="70"/>
@@ -2564,7 +2565,7 @@ ist keine gültige Koordinatensystemdefinition:
     <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>
+        <translation><b>Verborgene Trackpunkte wiederherstellen</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterReset.ui" line="47"/>
@@ -2592,12 +2593,12 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../gis/trk/filter/IFilterSpeed.ui" line="44"/>
         <source>Set speed to </source>
-        <translation>Ändern Sie die Geschwindigkeit auf </translation>
+        <translation>Ändert Geschwindigkeit auf </translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterSpeed.ui" line="51"/>
         <source> km/h</source>
-        <translation></translation>
+        <translation> km/h</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterSpeed.ui" line="102"/>
@@ -2617,13 +2618,13 @@ ist keine gültige Koordinatensystemdefinition:
         <translation type="obsolete">Status</translation>
     </message>
     <message>
-        <location filename="../gis/IGisWidget.ui" line="65"/>
-        <location filename="../gis/IGisWidget.ui" line="97"/>
+        <location filename="../gis/IGisWidget.ui" line="69"/>
+        <location filename="../gis/IGisWidget.ui" line="99"/>
         <source>Name</source>
         <translation>Name</translation>
     </message>
     <message>
-        <location filename="../gis/IGisWidget.ui" line="130"/>
+        <location filename="../gis/IGisWidget.ui" line="133"/>
         <source>To add a database do a right click on the database list above.</source>
         <translation>Um eine Datenbank hinzuzufügen rechtsklicken Sie oben auf die Datenbankliste.</translation>
     </message>
@@ -2714,7 +2715,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../helpers/IInputDialog.ui" line="14"/>
         <source>Edit...</source>
-        <translation>Ändern...</translation>
+        <translation>Bearbeiten...</translation>
     </message>
     <message>
         <location filename="../helpers/IInputDialog.ui" line="20"/>
@@ -3044,7 +3045,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../map/IMapPropSetup.ui" line="35"/>
         <source><html><head/><body><p>Change opacity of map</p></body></html></source>
-        <translation><html><head/><body><p>Ändern Sie die Transparenz der Karte</p></body></html></translation>
+        <translation><html><head/><body><p>Ändert die Transparenz der Karte</p></body></html></translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="50"/>
@@ -3061,7 +3062,7 @@ ist keine gültige Koordinatensystemdefinition:
     <message>
         <location filename="../map/IMapPropSetup.ui" line="74"/>
         <source><html><head/><body><p>Control the range of scale the map is displayed. Use the two buttons left and right to define the actual scale as either minimum or maximum scale.</p></body></html></source>
-        <translation><html><head/><body><p>Stellen Sie den Skalierungsbereich ein, in dem die Karte sichtbar ist. Benutzen Sie die beiden Knöpfe links und rechts um die minimale und maximale Skalierung einzustellen.</p></body></html></translation>
+        <translation><html><head/><body><p>Stellt den Skalierungsbereich ein, in dem die Karte sichtbar ist. Benutzen Sie die beiden Knöpfe links und rechts um die minimale und maximale Skalierung einzustellen.</p></body></html></translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="87"/>
@@ -3162,7 +3163,7 @@ ist keine gültige Koordinatensystemdefinition:
 "[N|S] ddd mm.sss [W|E] ddd mm.sss"
 or
 "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
-        <translation>Falsches Positionsformat. Das muss entweder 
+        <translation>Falsches Positionsformat. Muss entweder 
 "[N|S] ddd mm.sss [W|E] ddd mm.sss"
 oder
 "[N|S] ddd.ddd [W|E] ddd.ddd"
@@ -3174,7 +3175,7 @@ sein</translation>
     <message>
         <location filename="../grid/IProjWizard.ui" line="14"/>
         <source>Proj4 Wizzard</source>
-        <translation></translation>
+        <translation>Proj4 Wizard</translation>
     </message>
     <message>
         <location filename="../grid/IProjWizard.ui" line="29"/>
@@ -3252,7 +3253,7 @@ sein</translation>
     <message>
         <location filename="../gis/wpt/IProjWpt.ui" line="66"/>
         <source>m</source>
-        <translation></translation>
+        <translation> m</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IProjWpt.ui" line="76"/>
@@ -3333,7 +3334,7 @@ sein</translation>
     <message>
         <location filename="../mouse/IScrOptPoint.ui" line="49"/>
         <source>Select a range of points.</source>
-        <translation>Wähle einen Punktebereich.</translation>
+        <translation>Einen Punktebereich auswählen.</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptPoint.ui" line="63"/>
@@ -3361,7 +3362,7 @@ sein</translation>
     <message>
         <location filename="../mouse/IScrOptRange.ui" line="32"/>
         <source>Delete selected range of points.</source>
-        <translation>Gewählten Punktebereich löschen.</translation>
+        <translation>Löscht gewählten Punktebereich.</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptRange.ui" line="35"/>
@@ -3379,17 +3380,17 @@ sein</translation>
     <message>
         <location filename="../mouse/IScrOptRangeTrk.ui" line="40"/>
         <source>Hide all points.</source>
-        <translation>Alle Punkte ausblenden.</translation>
+        <translation>Blendet alle Punkte aus.</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptRangeTrk.ui" line="54"/>
         <source>Show all points.</source>
-        <translation>Alle Punkte anzeigen.</translation>
+        <translation>Zeigt alle Punkte an.</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptRangeTrk.ui" line="68"/>
         <source>Copy track points as new track.</source>
-        <translation>Trackpunkte in neuen Track kopieren.</translation>
+        <translation>Kopiert Trackpunkte in neuen Track.</translation>
     </message>
     <message>
         <source>Hide points.</source>
@@ -3426,7 +3427,7 @@ sein</translation>
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="28"/>
         <source><html><head/><body><p>View details &amp; Edit</p></body></html></source>
-        <translation><html><head/><body><p>Details anzeigen; Bearbeiten</p></body></html></translation>
+        <translation><html><head/><body><p>Details anzeigen & Bearbeiten</p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="31"/>
@@ -3438,7 +3439,7 @@ sein</translation>
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="42"/>
         <source>Copy route into another project.</source>
-        <translation>Route in ein anderes Projekt kopieren.</translation>
+        <translation>Kopiert die Route in ein anderes Projekt.</translation>
     </message>
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="56"/>
@@ -3461,7 +3462,7 @@ sein</translation>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="40"/>
         <source>View details &amp; Edit properties of track.</source>
-        <translation>Detailansicht &amp; Trackeigenschaften bearbeiten.</translation>
+        <translation>Detailansicht & Trackeigenschaften bearbeiten.</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="54"/>
@@ -3598,12 +3599,12 @@ sein</translation>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="14"/>
         <source>Copy item...</source>
-        <translation>Elemente kopieren...</translation>
+        <translation>Element kopieren...</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="23"/>
         <source>Replace existing item</source>
-        <translation>Bestehendes Element ersetzen</translation>
+        <translation>Ersetzt vorhandenes Element</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="30"/>
@@ -3621,7 +3622,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="97"/>
         <source>Create a clone</source>
-        <translation>Einen Klon erstellen</translation>
+        <translation>Abbild erstellen</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="104"/>
@@ -3636,12 +3637,12 @@ sein</translation>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="118"/>
         <source>The clone's name will be appended with '_Clone'</source>
-        <translation>Der Name das Klones wird mit '_Klon' erweitert</translation>
+        <translation>Der Name das Abbildes wird mit '_Klon' erweitert</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="132"/>
         <source>And for all other items, too.</source>
-        <translation>Und auch für alle weiteren Elemente.</translation>
+        <translation>Auch für alle anderen Elemente anwenden.</translation>
     </message>
 </context>
 <context>
@@ -3653,7 +3654,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ISelectProjectDialog.ui" line="14"/>
         <source>Select a project...</source>
-        <translation>Wähle ein Projekt...</translation>
+        <translation>Ein Projekt wählen...</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectProjectDialog.ui" line="20"/>
@@ -3720,7 +3721,7 @@ sein</translation>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="46"/>
         <source>Add new database.</source>
-        <translation>Neue Datenbank hinzufügen.</translation>
+        <translation>Fügt eine neue Datenbank hinzu.</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="49"/>
@@ -3731,7 +3732,7 @@ sein</translation>
     <message>
         <location filename="../gis/db/ISetupDatabase.ui" line="60"/>
         <source>Open existing database.</source>
-        <translation>Öffne eine vorhandene DAtenbank.</translation>
+        <translation>Öffnet ein vorhandene Datenbank.</translation>
     </message>
 </context>
 <context>
@@ -3816,7 +3817,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="259"/>
         <source>Ctrl+Z</source>
-        <translation></translation>
+        <translation>Strg+Z</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="268"/>
@@ -3826,7 +3827,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="271"/>
         <source>Ctrl+Shift+Z</source>
-        <translation></translation>
+        <translation>Strg+Shift+Z</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="280"/>
@@ -3836,7 +3837,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="283"/>
         <source>Ctrl+X</source>
-        <translation></translation>
+        <translation>Strg+X</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="292"/>
@@ -3846,7 +3847,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="295"/>
         <source>Ctrl+C</source>
-        <translation></translation>
+        <translation>Strg+C</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="304"/>
@@ -3856,7 +3857,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="307"/>
         <source>Ctrl+V</source>
-        <translation></translation>
+        <translation>Strg+V</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="319"/>
@@ -3866,7 +3867,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="322"/>
         <source>Ctrl+L</source>
-        <translation></translation>
+        <translation>Strg+L</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="334"/>
@@ -3876,7 +3877,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="337"/>
         <source>Ctrl+R</source>
-        <translation></translation>
+        <translation>Strg+R</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="349"/>
@@ -3886,7 +3887,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="352"/>
         <source>Ctrl+E</source>
-        <translation></translation>
+        <translation>Strg+E</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="364"/>
@@ -3896,7 +3897,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="367"/>
         <source>Ctrl+J</source>
-        <translation></translation>
+        <translation>Strg+J</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="379"/>
@@ -3906,7 +3907,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="382"/>
         <source>Ctrl+U</source>
-        <translation></translation>
+        <translation>Strg+U</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="394"/>
@@ -3916,7 +3917,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="397"/>
         <source>Ctrl+B</source>
-        <translation></translation>
+        <translation>Strg+B</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="409"/>
@@ -3926,7 +3927,7 @@ sein</translation>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="412"/>
         <source>Ctrl+I</source>
-        <translation></translation>
+        <translation>Strg+I</translation>
     </message>
 </context>
 <context>
@@ -3996,13 +3997,13 @@ sein</translation>
         <translation>Falsches Positionsformat. Richtig: [N|S] ddd mm.sss [W|E] ddd mm.sss </translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="66"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="75"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="105"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="114"/>
         <source>Failed to read...</source>
         <translation>Lesen fehlgeschlagen...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="66"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="105"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
@@ -4011,7 +4012,7 @@ Zeile %2, Spalte %3:
 %4</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="75"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="114"/>
         <source>Not a GPX file: </source>
         <translation>Keien GPX Datei:</translation>
     </message>
@@ -4041,34 +4042,34 @@ Areas: %1</source>
         <translation type="obsolete">Fläche: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="165"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="206"/>
         <source><br/>
 Filename: %1</source>
         <translation><br/>
 Dateiname: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="182"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="223"/>
         <source>Waypoints: %1</source>
         <translation>Wegpunkte: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="186"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="227"/>
         <source>Tracks: %1</source>
         <translation>Tracks: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="190"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="231"/>
         <source>Routes: %1</source>
         <translation>Routen: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="194"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="235"/>
         <source>Areas: %1</source>
         <translation>Flächen: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="250"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="291"/>
         <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>
@@ -4079,19 +4080,19 @@ Dateiname: %1</translation>
     </message>
     <message>
         <location filename="../gis/CGisListDB.cpp" line="407"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="251"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="292"/>
         <source>Delete...</source>
         <translation>Löschen...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="53"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="92"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
         <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/gpx/CGpxProject.cpp" line="92"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="143"/>
         <source>Failed to open %1</source>
@@ -4099,7 +4100,7 @@ Dateiname: %1</translation>
     </message>
     <message>
         <location filename="../gis/db/CDBProject.cpp" line="125"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="154"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="196"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="93"/>
         <source>Save GIS data to...</source>
         <translation>GIS Daten speichern in...</translation>
@@ -4115,86 +4116,85 @@ Dateiname: %1</translation>
         <translation>Speichern abbrechen</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="229"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="271"/>
         <source>File exists ...</source>
         <translation>Datei existiert...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="230"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="272"/>
         <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="296"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="350"/>
         <source>Failed to create file '%1'</source>
         <translation>Datei %1' konnte nicht erstellt werden</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="296"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="306"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="364"/>
         <source>Saveing GIS data failed...</source>
         <translation>Speichern der GIS Daten fehlgeschlagen...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="306"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="359"/>
         <source>Failed to write file '%1'</source>
         <translation>Datei %1' konnte nicht gespeichert werden</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="265"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="266"/>
         <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="332"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="333"/>
         <source>Length: %1 %2</source>
         <translation>Länge: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="339"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="340"/>
         <source>, %1%2 %3, %4%5 %6</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="347"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="348"/>
         <source>Time: %1</source>
         <translation>Zeit: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="350"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="360"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="351"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="361"/>
         <source>, Speed: %1 %2</source>
         <translation>, Geschw.: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="357"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="358"/>
         <source>Moving: %1</source>
         <translation>Bewegung: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="366"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="367"/>
         <source>Start: %1</source>
         <translation>Beginn: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="371"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="372"/>
         <source>End: %1</source>
         <translation>Ende: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="375"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="376"/>
         <source>Points: %1 (%2)</source>
         <translation>Punkte: %1 (%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="440"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="441"/>
         <source>Ele.: %1 %2</source>
         <translation>Höhe: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="443"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="444"/>
         <source> slope: %1%3 (%2%)</source>
-        <translation> Neigung: %1%3 (%2%)</translation>
+        <translation>, Neigung: %1%3 (%2%)</translation>
     </message>
     <message>
         <source> slope: %1° (%2%)</source>
@@ -4215,49 +4215,49 @@ Dateiname: %1</translation>
         <translation type="obsolete">Neigung: %1°(%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="448"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="449"/>
         <source> speed: %1%2</source>
-        <translation>Geschwindigkeit: %1%2</translation>
+        <translation>, Geschw.: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="460"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="461"/>
         <source>Ascend: %1%2 (%3%)</source>
-        <translation>Anstieg: %1%2 (%3%)</translation>
+        <translation>Anstieg: %1 %2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="464"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="465"/>
         <source>Ascend: - (-)</source>
         <translation>Anstieg: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="470"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="471"/>
         <source> Descend: %1%2 (%3%)</source>
-        <translation> Abstieg: %1%2 (%3%)</translation>
+        <translation>, Abstieg: %1 %2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="474"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="475"/>
         <source> Descend: - (-) </source>
-        <translation> Abstieg: - (-) </translation>
+        <translation>, Abstieg: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="481"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="482"/>
         <source>Dist.: %1%2 (%3%)</source>
-        <translation>Entf.: %1%2 (%3%)</translation>
+        <translation>Entf.: %1 %2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="485"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="486"/>
         <source>Dist.: - (-)</source>
         <translation>Entf.: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="491"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="492"/>
         <source> Moving: %1%2 (%3%)</source>
-        <translation>Bewegung: %1%2 (%3%)</translation>
+        <translation>, Bewegung: %1 %2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="495"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="496"/>
         <source> Moving: - (-) </source>
-        <translation> Bewegung: - (-) </translation>
+        <translation>, Bewegung: - (-) </translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="95"/>
@@ -4280,63 +4280,63 @@ Dateiname: %1</translation>
         <translation>stark</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="141"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="44"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="161"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="101"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="142"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="45"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="162"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="102"/>
         <source>_Clone</source>
         <translation>_Klon</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="417"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="418"/>
         <source>Area: %1%2</source>
         <translation>Fläche: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="475"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="476"/>
         <source>Changed area shape.</source>
         <translation>Flächenform geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="483"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="484"/>
         <source>Changed name.</source>
         <translation>Name geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="489"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="490"/>
         <source>Changed border width.</source>
         <translation>Umrandungsbreite geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="495"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="496"/>
         <source>Changed fill pattern.</source>
         <translation>Füllung geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="501"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="502"/>
         <source>Changed opacity.</source>
         <translation>Durchsichtigkeit geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="507"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="508"/>
         <source>Changed comment.</source>
         <translation>Kommentar geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="513"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="514"/>
         <source>Changed description.</source>
         <translation>Beschreibung geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="519"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="138"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="520"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="139"/>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="1428"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="359"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="360"/>
         <source>Changed links</source>
         <translation>Geänderte Verknüpfungen</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="531"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="532"/>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="1440"/>
         <source>Changed color</source>
         <translation>Farbe geändert</translation>
@@ -4347,84 +4347,84 @@ Dateiname: %1</translation>
         <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="../gis/wpt/CGisItemWpt.cpp" line="177"/>
         <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="176"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="177"/>
         <source>Enter new waypoint name.</source>
         <translation>Name eingeben.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="228"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="229"/>
         <source>Elevation: %1 %2</source>
         <translation>Höhe: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="239"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="240"/>
         <source>Proximity: %1 %2</source>
         <translation>Abstand: %1 %2</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="1410"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="310"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="311"/>
         <source>Changed name</source>
         <translation>Name geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="317"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="318"/>
         <source>Changed position</source>
         <translation>Position geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="323"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="324"/>
         <source>Changed elevation</source>
         <translation>Höhe geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="329"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="330"/>
         <source>Changed proximity</source>
         <translation>Abstandsalarm geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="341"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="342"/>
         <source>Changed icon</source>
         <translation>Symbol geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="365"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="366"/>
         <source>Changed images</source>
-        <translation>Photos geändert</translation>
+        <translation>Bilder geändert</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="126"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="127"/>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="1416"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="347"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="348"/>
         <source>Changed comment</source>
         <translation>Kommentar geändert</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="132"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="133"/>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="1422"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="353"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="354"/>
         <source>Changed description</source>
         <translation>Beschreibung geändert</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="507"/>
+        <location filename="../gis/gpx/serialization.cpp" line="575"/>
         <source>Archived</source>
         <translation>Archiviert</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="511"/>
+        <location filename="../gis/gpx/serialization.cpp" line="579"/>
         <source>Available</source>
         <translation>Verfügbar</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="515"/>
+        <location filename="../gis/gpx/serialization.cpp" line="583"/>
         <source>Not Available</source>
         <translation>Nicht verfügbar</translation>
     </message>
@@ -4445,51 +4445,51 @@ Dateiname: %1</translation>
         <translation>Dieser Dateityp hat eine unbekannte Polyline Kodierung. Bitte mitteilen!</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="292"/>
+        <location filename="../gis/IGisItem.cpp" line="294"/>
         <source>Initial version.</source>
         <translation>Erstversion.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="376"/>
+        <location filename="../gis/IGisItem.cpp" line="388"/>
         <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="377"/>
+        <location filename="../gis/IGisItem.cpp" line="389"/>
         <source>Read Only Mode...</source>
         <translation>Schreibgeschützt...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="575"/>
+        <location filename="../gis/IGisItem.cpp" line="587"/>
         <source><h4>Comment:</h4></source>
         <translation><h4>Kommentar:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="578"/>
+        <location filename="../gis/IGisItem.cpp" line="590"/>
         <source><p>--- no comment ---</p></source>
         <translation><p>--- kein Kommentar ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="589"/>
-        <location filename="../gis/IGisItem.cpp" line="634"/>
+        <location filename="../gis/IGisItem.cpp" line="601"/>
+        <location filename="../gis/IGisItem.cpp" line="646"/>
         <source><h4>Description:</h4></source>
         <translation><h4>Beschreibung:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="592"/>
-        <location filename="../gis/IGisItem.cpp" line="637"/>
+        <location filename="../gis/IGisItem.cpp" line="604"/>
+        <location filename="../gis/IGisItem.cpp" line="649"/>
         <source><p>--- no description ---</p></source>
         <translation><p>--- keine Beschreibung ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="603"/>
-        <location filename="../gis/IGisItem.cpp" line="648"/>
+        <location filename="../gis/IGisItem.cpp" line="615"/>
+        <location filename="../gis/IGisItem.cpp" line="660"/>
         <source><h4>Links:</h4></source>
         <translation><h4>Verknüpfungen:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="606"/>
-        <location filename="../gis/IGisItem.cpp" line="651"/>
+        <location filename="../gis/IGisItem.cpp" line="618"/>
+        <location filename="../gis/IGisItem.cpp" line="663"/>
         <source><p>--- no links ---</p></source>
         <translation><p>--- keine Verknüpfungen ---</p></translation>
     </message>
@@ -4561,32 +4561,32 @@ Dateiname: %1</translation>
     <message>
         <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>
+        <translation>Punkte verstecken mit dem Douglas-Peuker Algorithmus (%1%2)</translation>
     </message>
     <message>
         <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>
+        <translation>Alle verborgenen Trackpunkte 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>
+        <translation>Alle verborgenen Trackpunkte wurden dauerhaft entfernt</translation>
     </message>
     <message>
         <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>
+        <translation>Mit einem Median-Filter der Größe %1 geglättetes Profil</translation>
     </message>
     <message>
         <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>
+        <translation>Höhendaten durch Daten von DEM Dateien ersetzt.</translation>
     </message>
     <message>
         <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>
+        <translation>Versatz der Höhendaten um %1%2.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="264"/>
@@ -4596,17 +4596,31 @@ Dateiname: %1</translation>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="283"/>
         <source>Remove timestamps.</source>
-        <translation>Zeitmarken entfernt.</translation>
+        <translation>Zeitstempel entfernt.</translation>
     </message>
     <message>
         <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>
+        <translation>Künstliche Zeitstempel mit einem Abstand von %1 Sek. gesetzt.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="339"/>
         <source>Changed speed to %1%2.</source>
-        <translation>Die Geschwindigkeit auf %1%2 gesetzt.</translation>
+        <translation>Geschwindigkeit auf %1%2 geändert.</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="878"/>
+        <source>Delete project...</source>
+        <translation>Projekt löschen...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="878"/>
+        <source>Do you really want to delete %1?</source>
+        <translation>Sind Sie sicher, dass sie %1? löschen wollen?</translation>
+    </message>
+    <message>
+        <source>Do you really want to delete %1</source>
+        <translation type="vanished">Sind Sie sicher, dass sie %1 löschen wollen?</translation>
     </message>
 </context>
 </TS>
diff --git a/src/locale/qmapshack_es.ts b/src/locale/qmapshack_es.ts
index 1b36fbb..cee3806 100644
--- a/src/locale/qmapshack_es.ts
+++ b/src/locale/qmapshack_es.ts
@@ -356,97 +356,98 @@
 <context>
     <name>CGisListWks</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="83"/>
+        <location filename="../gis/CGisListWks.cpp" line="91"/>
         <source>Save</source>
         <translation>Guardar</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="82"/>
+        <location filename="../gis/CGisListWks.cpp" line="90"/>
         <source>Save As...</source>
         <translation>Guardar Como...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="81"/>
+        <location filename="../gis/CGisListWks.cpp" line="89"/>
         <source>Edit..</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="84"/>
+        <location filename="../gis/CGisListWks.cpp" line="92"/>
         <source>Close</source>
         <translation>Cerrar</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="90"/>
+        <location filename="../gis/CGisListWks.cpp" line="99"/>
         <source>Edit...</source>
         <translation>Editar...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="91"/>
+        <location filename="../gis/CGisListWks.cpp" line="100"/>
         <source>Copy to...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="103"/>
+        <location filename="../gis/CGisListWks.cpp" line="112"/>
         <source>Move Waypoint</source>
         <translation>Mover Waypoint</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="113"/>
         <source>Proj. Waypoint...</source>
         <translation>Proyectar Waypoint...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="92"/>
+        <location filename="../gis/CGisListWks.cpp" line="101"/>
         <source>Track Profile</source>
         <translation>Perfil del Track</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="94"/>
+        <location filename="../gis/CGisListWks.cpp" line="103"/>
         <source>Select Range</source>
         <translation>Seleccionar Rango</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="95"/>
+        <location filename="../gis/CGisListWks.cpp" line="104"/>
         <source>Edit Track Points</source>
         <translation>Editar Puntos del Track</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="96"/>
+        <location filename="../gis/CGisListWks.cpp" line="105"/>
         <source>Reverse Track</source>
         <translation>Invertir Track</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="97"/>
+        <location filename="../gis/CGisListWks.cpp" line="106"/>
         <source>Combine Tracks</source>
         <translation>Combinar Tracks</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="116"/>
+        <location filename="../gis/CGisListWks.cpp" line="125"/>
         <source>Edit Area Points</source>
         <translation>Editar Puntos del Área</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="98"/>
+        <location filename="../gis/CGisListWks.cpp" line="93"/>
+        <location filename="../gis/CGisListWks.cpp" line="107"/>
         <source>Delete</source>
         <translation>Borrar</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="564"/>
+        <location filename="../gis/CGisListWks.cpp" line="657"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Guardando espacio de trabajo. Por favor espere.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="605"/>
+        <location filename="../gis/CGisListWks.cpp" line="698"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Cargando espacio de trabajo. Por favor espere.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1002"/>
+        <location filename="../gis/CGisListWks.cpp" line="1135"/>
         <source>Close all projects...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1002"/>
+        <location filename="../gis/CGisListWks.cpp" line="1135"/>
         <source>This will remove all projects from the workspace.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -454,12 +455,12 @@
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="344"/>
+        <location filename="../gis/CGisWidget.cpp" line="382"/>
         <source>Cut Track...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="344"/>
+        <location filename="../gis/CGisWidget.cpp" line="382"/>
         <source>Do you want to delete the original track?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1921,48 +1922,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="70"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="92"/>
-        <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="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"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="67"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="89"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="115"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="128"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="141"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="154"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="167"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="193"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="206"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="219"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="232"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="245"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="62"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="59"/>
         <source>about:blank</source>
         <translation>about:blank</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="85"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="82"/>
         <source>Position:</source>
         <translation>Posición:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="105"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="102"/>
         <source>Difficulty</source>
         <translation>Dificultad</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="183"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="180"/>
         <source>Terrain</source>
         <translation>Terreno</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="35"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="32"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="259"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="256"/>
         <source>Hint:</source>
         <translation>Consejo:</translation>
     </message>
@@ -2510,13 +2511,13 @@ no es una definición de sistema de coordenadas válido:
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisWidget.ui" line="65"/>
-        <location filename="../gis/IGisWidget.ui" line="97"/>
+        <location filename="../gis/IGisWidget.ui" line="69"/>
+        <location filename="../gis/IGisWidget.ui" line="99"/>
         <source>Name</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisWidget.ui" line="130"/>
+        <location filename="../gis/IGisWidget.ui" line="133"/>
         <source>To add a database do a right click on the database list above.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3848,13 +3849,13 @@ o
         <translation>Formato de posición incorrecto. Debe ser: "[N|S] ggg mm.sss [W|E] ggg mm.sss"</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="66"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="75"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="105"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="114"/>
         <source>Failed to read...</source>
         <translation>Fallo al leer...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="66"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="105"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
@@ -3863,7 +3864,7 @@ línea %2, columna %3.
  %4</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="75"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="114"/>
         <source>Not a GPX file: </source>
         <translation>No es un archivo GPX: </translation>
     </message>
@@ -3898,33 +3899,33 @@ Areas: %1</source>
 Áreas: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="165"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="206"/>
         <source><br/>
 Filename: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="182"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="223"/>
         <source>Waypoints: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="186"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="227"/>
         <source>Tracks: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="190"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="231"/>
         <source>Routes: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="194"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="235"/>
         <source>Areas: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="250"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="291"/>
         <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>
@@ -3935,19 +3936,19 @@ Filename: %1</source>
     </message>
     <message>
         <location filename="../gis/CGisListDB.cpp" line="407"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="251"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="292"/>
         <source>Delete...</source>
         <translation>Borrar...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="53"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="92"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
         <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/gpx/CGpxProject.cpp" line="92"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="143"/>
         <source>Failed to open %1</source>
@@ -3955,7 +3956,7 @@ Filename: %1</source>
     </message>
     <message>
         <location filename="../gis/db/CDBProject.cpp" line="125"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="154"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="196"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="93"/>
         <source>Save GIS data to...</source>
         <translation>Guardar los datos GIS en...</translation>
@@ -3971,104 +3972,103 @@ Filename: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="229"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="271"/>
         <source>File exists ...</source>
         <translation>El archivo ya existe ...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="230"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="272"/>
         <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="296"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="350"/>
         <source>Failed to create file '%1'</source>
         <translation>Fallo al crear el archivo '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="296"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="306"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="364"/>
         <source>Saveing GIS data failed...</source>
         <translation>Fallo al guardar los datos GIS...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="306"/>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="359"/>
         <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="332"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="333"/>
         <source>Length: %1 %2</source>
         <translation>Longitud: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="339"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="340"/>
         <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="347"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="348"/>
         <source>Time: %1</source>
         <translation>Tiempo: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="350"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="360"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="351"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="361"/>
         <source>, Speed: %1 %2</source>
         <translation>, Velocidad: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="357"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="358"/>
         <source>Moving: %1</source>
         <translation>En movimiento: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="366"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="367"/>
         <source>Start: %1</source>
         <translation>Comienzo: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="371"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="372"/>
         <source>End: %1</source>
         <translation>Final: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="375"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="376"/>
         <source>Points: %1 (%2)</source>
         <translation>Puntos: %1 (%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="440"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="441"/>
         <source>Ele.: %1 %2</source>
         <translation>Altitud: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="443"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="444"/>
         <source> slope: %1%3 (%2%)</source>
         <translation> pendiente: %1%3 (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="448"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="449"/>
         <source> speed: %1%2</source>
         <translation> velocidad: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="460"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="461"/>
         <source>Ascend: %1%2 (%3%)</source>
         <translation>Ascenso: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="464"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="465"/>
         <source>Ascend: - (-)</source>
         <translation>Ascenso: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="474"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="475"/>
         <source> Descend: - (-) </source>
         <translation> Descenso: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="495"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="496"/>
         <source> Moving: - (-) </source>
         <translation> En movimiento: - (-) </translation>
     </message>
@@ -4083,27 +4083,27 @@ Filename: %1</source>
         <translation>Mostrar puntos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="470"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="471"/>
         <source> Descend: %1%2 (%3%)</source>
         <translation> Descenso: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="265"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="266"/>
         <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="481"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="482"/>
         <source>Dist.: %1%2 (%3%)</source>
         <translation>Distancia: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="485"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="486"/>
         <source>Dist.: - (-)</source>
         <translation>Dist.: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="491"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="492"/>
         <source> Moving: %1%2 (%3%)</source>
         <translation> En movimiento: %1%2 (%3%)</translation>
     </message>
@@ -4128,80 +4128,80 @@ Filename: %1</source>
         <translation>intenso</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="141"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="44"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="161"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="101"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="142"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="45"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="162"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="102"/>
         <source>_Clone</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="417"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="418"/>
         <source>Area: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="475"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="476"/>
         <source>Changed area shape.</source>
         <translation>Se cambió la forma del área.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="483"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="484"/>
         <source>Changed name.</source>
         <translation>Se cambió el nombre.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="489"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="490"/>
         <source>Changed border width.</source>
         <translation>Se cambió la anchura del borde.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="495"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="496"/>
         <source>Changed fill pattern.</source>
         <translation>Se cambió el patró de relleno.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="501"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="502"/>
         <source>Changed opacity.</source>
         <translation>Se cambió la opacidad.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="507"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="508"/>
         <source>Changed comment.</source>
         <translation>Se cambió el comentario.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="513"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="514"/>
         <source>Changed description.</source>
         <translation>Se cambió la descripción.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="519"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="138"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="520"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="139"/>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="1428"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="359"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="360"/>
         <source>Changed links</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="531"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="532"/>
         <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="228"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="229"/>
         <source>Elevation: %1 %2</source>
         <translation>Altitud: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="239"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="240"/>
         <source>Proximity: %1 %2</source>
         <translation>Proximidad: %1 %2</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="1410"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="310"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="311"/>
         <source>Changed name</source>
         <translation>Se cambió el nombre</translation>
     </message>
@@ -4211,68 +4211,68 @@ Filename: %1</source>
         <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="../gis/wpt/CGisItemWpt.cpp" line="177"/>
         <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="176"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="177"/>
         <source>Enter new waypoint name.</source>
         <translation>Introduzca el nuevo nombre del waypoint.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="317"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="318"/>
         <source>Changed position</source>
         <translation>Se cambió la posición</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="323"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="324"/>
         <source>Changed elevation</source>
         <translation>Se cambió la altitud</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="329"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="330"/>
         <source>Changed proximity</source>
         <translation>Se cambió la proximidad</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="341"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="342"/>
         <source>Changed icon</source>
         <translation>Se cambió el icono</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="365"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="366"/>
         <source>Changed images</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="126"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="127"/>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="1416"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="347"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="348"/>
         <source>Changed comment</source>
         <translation>Se cambió el comentario</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="132"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="133"/>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="1422"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="353"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="354"/>
         <source>Changed description</source>
         <translation>Se cambió la descripción</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="507"/>
+        <location filename="../gis/gpx/serialization.cpp" line="575"/>
         <source>Archived</source>
         <translation>Archivado</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="511"/>
+        <location filename="../gis/gpx/serialization.cpp" line="579"/>
         <source>Available</source>
         <translation>Disponible</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="515"/>
+        <location filename="../gis/gpx/serialization.cpp" line="583"/>
         <source>Not Available</source>
         <translation>No Disponible</translation>
     </message>
@@ -4293,51 +4293,51 @@ Filename: %1</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="292"/>
+        <location filename="../gis/IGisItem.cpp" line="294"/>
         <source>Initial version.</source>
         <translation>Versión inicial</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="376"/>
+        <location filename="../gis/IGisItem.cpp" line="388"/>
         <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="377"/>
+        <location filename="../gis/IGisItem.cpp" line="389"/>
         <source>Read Only Mode...</source>
         <translation>Modo Sólo Lectura...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="575"/>
+        <location filename="../gis/IGisItem.cpp" line="587"/>
         <source><h4>Comment:</h4></source>
         <translation type="unfinished"><h4>Comentario:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="578"/>
+        <location filename="../gis/IGisItem.cpp" line="590"/>
         <source><p>--- no comment ---</p></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="589"/>
-        <location filename="../gis/IGisItem.cpp" line="634"/>
+        <location filename="../gis/IGisItem.cpp" line="601"/>
+        <location filename="../gis/IGisItem.cpp" line="646"/>
         <source><h4>Description:</h4></source>
         <translation type="unfinished"><h4>Descripción:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="592"/>
-        <location filename="../gis/IGisItem.cpp" line="637"/>
+        <location filename="../gis/IGisItem.cpp" line="604"/>
+        <location filename="../gis/IGisItem.cpp" line="649"/>
         <source><p>--- no description ---</p></source>
         <translation type="unfinished"><p>---sin descripción---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="603"/>
-        <location filename="../gis/IGisItem.cpp" line="648"/>
+        <location filename="../gis/IGisItem.cpp" line="615"/>
+        <location filename="../gis/IGisItem.cpp" line="660"/>
         <source><h4>Links:</h4></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="606"/>
-        <location filename="../gis/IGisItem.cpp" line="651"/>
+        <location filename="../gis/IGisItem.cpp" line="618"/>
+        <location filename="../gis/IGisItem.cpp" line="663"/>
         <source><p>--- no links ---</p></source>
         <translation type="unfinished"></translation>
     </message>
@@ -4452,5 +4452,15 @@ Filename: %1</source>
         <source>Changed speed to %1%2.</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="878"/>
+        <source>Delete project...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="878"/>
+        <source>Do you really want to delete %1?</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
diff --git a/src/main.cpp b/src/main.cpp
index e7b8dc5..ff706c2 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -181,5 +181,11 @@ int main(int argc, char ** argv)
         delete splash;
     }
 
+    QDir dir = QDir::home();
+    if(!dir.exists(".config/QLandkarte"))
+    {
+        dir.mkpath(".config/QLandkarte");
+    }
+
     return a.exec();
 }
diff --git a/src/qlgt/converter.cpp b/src/qlgt/converter.cpp
index 715be99..571ef93 100644
--- a/src/qlgt/converter.cpp
+++ b/src/qlgt/converter.cpp
@@ -37,7 +37,7 @@ inline qreal readFloat(float val)
 }
 
 CDBProject::CDBProject(CQlgtFolder& folder)
-    : IGisProject(eTypeDb, "", 0)
+    : IGisProject(eTypeDb, "", (CGisListWks*)0)
 {
     metadata.name = folder.name;
     if(folder.diary)
diff --git a/src/resources.qrc b/src/resources.qrc
index 2f96f84..a92a2a6 100644
--- a/src/resources.qrc
+++ b/src/resources.qrc
@@ -131,6 +131,7 @@
         <file>icons/32x32/AddImage.png</file>
         <file>icons/32x32/DelImage.png</file>
         <file>icons/32x32/Image.png</file>
+        <file>icons/32x32/Device.png</file>
 
         <file>icons/48x48/2DFix.png</file>
         <file>icons/48x48/3DFix.png</file>
@@ -244,6 +245,7 @@
         <file>icons/48x48/AddImage.png</file>
         <file>icons/48x48/DelImage.png</file>
         <file>icons/48x48/Image.png</file>
+        <file>icons/48x48/Device.png</file>
 
         <file>icons/cache/32x32/bluepin.png</file>
         <file>icons/cache/32x32/cito.png</file>

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