[qmapshack] 02/06: Imported Upstream version 1.0.1

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Thu Mar 19 20:42:58 UTC 2015


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

sebastic pushed a commit to branch master
in repository qmapshack.

commit 3f103f35e2b77419d5433cb52fd5d785f59ca749
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Thu Mar 19 20:57:20 2015 +0100

    Imported Upstream version 1.0.1
---
 CMakeLists.txt                                     |   2 +-
 CMakeLists.txt.user                                |  12 +-
 ...sts.txt.user.18 => CMakeLists.txt.user.3.3-pre1 |  71 +----
 CPackConfig.cmake                                  |   2 +-
 changelog.txt                                      |   8 +
 nsi/QMapShack_Installer.nsi                        |   6 +-
 nsi/QMapShack_Installer32.nsi                      |   6 +-
 src/CMainWindow.cpp                                |  76 +++++-
 src/CMainWindow.h                                  |   2 +
 src/GeoMath.cpp                                    |  67 +++--
 src/IMainWindow.ui                                 |  29 +-
 src/canvas/CCanvas.cpp                             |  11 +-
 src/dem/CDemDraw.cpp                               |  39 ++-
 src/dem/CDemDraw.h                                 |   1 +
 src/dem/CDemVRT.cpp                                |   8 +-
 src/dem/IDem.cpp                                   |  16 +-
 src/device/CDeviceGarmin.cpp                       |  11 +
 src/gis/CGisListWks.cpp                            |  11 +-
 src/gis/IGisItem.cpp                               |  12 +-
 src/gis/ovl/CDetailsOvlArea.cpp                    |   6 +
 src/gis/ovl/CGisItemOvlArea.cpp                    |   4 +-
 src/gis/ovl/IScrOptOvlArea.ui                      |   3 +
 src/gis/prj/IGisProject.cpp                        |  33 ++-
 src/gis/prj/IGisProject.h                          |   7 +-
 src/gis/rte/IScrOptRte.ui                          |   3 +
 src/gis/trk/CDetailsTrk.cpp                        |   5 +
 src/gis/trk/CGisItemTrk.cpp                        |  14 +-
 src/gis/trk/IDetailsTrk.ui                         |   3 +
 src/gis/trk/IScrOptTrk.ui                          |   3 +
 src/gis/trk/filter/filter.cpp                      |   5 +-
 src/gis/wpt/CDetailsWpt.cpp                        |   6 +
 src/gis/wpt/IScrOptWpt.ui                          |   5 +-
 src/grid/CGrid.cpp                                 |   4 +-
 src/helpers/CHistoryListWidget.cpp                 |   7 +-
 src/helpers/CPhotoViewer.cpp                       |   4 +-
 src/helpers/Platform.h                             |   2 +-
 src/icons/32x32/Save.png                           | Bin 0 -> 364 bytes
 src/icons/48x48/Save.png                           | Bin 0 -> 422 bytes
 src/icons/Save.svg                                 | 108 ++++++++
 src/locale/qmapshack_cs.ts                         | 290 +++++++++++---------
 src/locale/qmapshack_de.ts                         | 302 ++++++++++++---------
 src/locale/qmapshack_es.ts                         | 290 +++++++++++---------
 src/locale/qmapshack_fr.ts                         | 290 +++++++++++---------
 src/map/CMapDraw.cpp                               |  39 ++-
 src/map/CMapDraw.h                                 |   2 +
 src/map/CMapIMG.cpp                                |  18 +-
 src/map/CMapJNX.cpp                                |   2 +-
 src/map/CMapRMAP.cpp                               |   8 +-
 src/map/CMapTMS.cpp                                |  10 +-
 src/map/CMapVRT.cpp                                |   2 +-
 src/map/IMap.cpp                                   |   6 +-
 src/mouse/CMouseMoveWpt.cpp                        |   4 +-
 src/mouse/IMouseEditLine.cpp                       |   2 +-
 src/plot/CPlotAxis.cpp                             |   8 +
 src/plot/CPlotAxis.h                               |  11 +-
 src/plot/CPlotAxisTime.cpp                         |  12 +-
 src/plot/CPlotDistance.cpp                         |   7 +
 src/plot/CPlotSpeed.cpp                            |   7 +
 src/plot/IPlot.cpp                                 |  58 +++-
 src/plot/IPlot.h                                   |   9 +
 src/resources.qrc                                  |   2 +
 61 files changed, 1276 insertions(+), 715 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 95b1823..5255043 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,7 +21,7 @@ set(APPLICATION_NAME qmapshack)
 
 set(APPLICATION_VERSION_MAJOR "1")
 set(APPLICATION_VERSION_MINOR "0")
-set(APPLICATION_VERSION_PATCH "0")
+set(APPLICATION_VERSION_PATCH "1")
 
 add_definitions(-DVER_MAJOR=${APPLICATION_VERSION_MAJOR} -DVER_MINOR=${APPLICATION_VERSION_MINOR} -DVER_STEP=${APPLICATION_VERSION_PATCH} -DAPPLICATION_NAME=${PROJECT_NAME})
 
diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user
index 9b29bd5..b69a358 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.2.2, 2015-03-07T12:00:05. -->
+<!-- Written by QtCreator 3.3.1, 2015-03-18T20:57:17. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
@@ -72,6 +72,7 @@
       <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="QString" key="CMakeProjectManager.MakeStep.MakeCommand"></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>
@@ -87,6 +88,7 @@
       <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="QString" key="CMakeProjectManager.MakeStep.MakeCommand"></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>
@@ -155,9 +157,9 @@
      <value type="int">14</value>
     </valuelist>
     <value type="QString" key="CMakeProjectManager.CMakeRunConfiguation.Title">qmapshack</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments">-d</value>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments">-d --help</value>
     <value type="bool" key="CMakeProjectManager.CMakeRunConfiguration.UseTerminal">false</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory">/home/oeichler/Code/cpp/build_QMapShack/</value>
+    <value type="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>
@@ -179,10 +181,10 @@
  </data>
  <data>
   <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
-  <value type="int">16</value>
+  <value type="int">18</value>
  </data>
  <data>
   <variable>Version</variable>
-  <value type="int">16</value>
+  <value type="int">18</value>
  </data>
 </qtcreator>
diff --git a/CMakeLists.txt.user.18 b/CMakeLists.txt.user.3.3-pre1
similarity index 75%
rename from CMakeLists.txt.user.18
rename to CMakeLists.txt.user.3.3-pre1
index e4b3405..2d183c2 100644
--- a/CMakeLists.txt.user.18
+++ b/CMakeLists.txt.user.3.3-pre1
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 3.3.0, 2015-02-06T19:12:10. -->
+<!-- Written by QtCreator 3.2.2, 2015-03-13T18:02:53. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
@@ -58,12 +58,12 @@
  <data>
   <variable>ProjectExplorer.Project.Target.0</variable>
   <valuemap type="QVariantMap">
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 5.3.2</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 5.3.2</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{2f92db73-2408-4a53-964e-2415f5ea1157}</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.8.4 in Pfad (System)</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 4.8.4 in Pfad (System)</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{b3896d75-6773-49ab-b85b-a90805c4269a}</value>
    <value type="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>
+   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</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>
@@ -72,7 +72,6 @@
       <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="QString" key="CMakeProjectManager.MakeStep.MakeCommand"></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>
@@ -88,7 +87,6 @@
       <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="QString" key="CMakeProjectManager.MakeStep.MakeCommand"></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>
@@ -156,61 +154,10 @@
      <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.CMakeRunConfiguation.Title">qmapshack</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 (deaktiviert)</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>
-   <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">/home/oeichler/Code/cpp/build_QMapShack</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>
@@ -223,7 +170,7 @@
     <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
     <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
    </valuemap>
-   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">2</value>
+   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
   </valuemap>
  </data>
  <data>
@@ -232,10 +179,10 @@
  </data>
  <data>
   <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
-  <value type="int">18</value>
+  <value type="int">16</value>
  </data>
  <data>
   <variable>Version</variable>
-  <value type="int">18</value>
+  <value type="int">16</value>
  </data>
 </qtcreator>
diff --git a/CPackConfig.cmake b/CPackConfig.cmake
index b03b04b..4b0a063 100644
--- a/CPackConfig.cmake
+++ b/CPackConfig.cmake
@@ -18,7 +18,7 @@ set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSI
 
 ### source package settings
 set(CPACK_SOURCE_GENERATOR "TGZ")
-set(CPACK_SOURCE_IGNORE_FILES "~$;[.]swp$;/[.]svn/;/[.]git/;.gitignore;/build/;tags;cscope.*;[.]rej$;[.]orig$;svn-commit[.]")
+set(CPACK_SOURCE_IGNORE_FILES "~$;[.]swp$;/[.]svn/;/[.]git/;[.]hg/;.gitignore;/build/;tags;cscope.*;[.]rej$;[.]orig$;svn-commit[.]")
 set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}")
 
 include(CPack)
diff --git a/changelog.txt b/changelog.txt
index 9ce9073..a0a7c3c 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,11 @@
+V 1.0.1
+* [Issue #11]Exclude items not visible from highlighting
+* Fix track edit hangup for tracks with corrupted timestamps
+* GPX: fix bad loading of trak colors from GPX
+* Add menu to track graphs to save graph to PNG
+* [Issue #7] Store/restore list of active maps into/from a file
+* Disable lock button for items on devices
+
 V 1.0.0
 * Update Czech, French, German and Spanish translation
 * Fix dialogs hiding behind main window
diff --git a/nsi/QMapShack_Installer.nsi b/nsi/QMapShack_Installer.nsi
index 88f963e..f082436 100644
--- a/nsi/QMapShack_Installer.nsi
+++ b/nsi/QMapShack_Installer.nsi
@@ -55,7 +55,7 @@ OutFile "QMapShack_Install.exe"
 ; Page welcome description
 !define MUI_WELCOMEPAGE_TITLE "QMapShack"
 !define MUI_WELCOMEPAGE_TITLE_3LINES
-!define MUI_WELCOMEPAGE_TEXT "QMapShack provides a versatile and fast display of raster and vector maps with visualization of GIS data such as tracks and waypoints. It allows the use of several workspaces and of several maps on a workspace. GIS data is handled project-oriented and can be exchanged with the device by drag-n-drop."
+!define MUI_WELCOMEPAGE_TEXT "QMapShack is a consumer grade software to work with data aquired by GPS devices. The data can be displayed on a variety of maps and stored in a database. Additionally new data can be created to plan tours."
 
 !define MUI_LICENSEPAGE_CHECKBOX
 
@@ -189,8 +189,8 @@ Section "QMapShack" QMapShack
 
   WriteUninstaller "$INSTDIR\Uninstall.exe"
 SectionEnd
-LangString DESC_QMapShack ${LANG_ENGLISH} "View GeoTiff and Garmin Maps. Visualize and analyze GPX files and much more!"
-LangString DESC_QMapShack ${LANG_GERMAN}  "Landkarten im GeoTiff und Garmin Format betrachten. GPX Dateien visualisieren und analysieren und vieles mehr!"
+LangString DESC_QMapShack ${LANG_ENGLISH} "View Raster, Garmin and Online Maps combined with elevation data. Work with GIS data. Synchronize your GPS device."
+LangString DESC_QMapShack ${LANG_GERMAN}  "Raster-, Garmin- und Online Karten mit H�heninformation anzeigen. GIS Daten bearbeiten. GPS Ger�te synchronisieren"
 
 
 Section "StartMenue" StartMenue
diff --git a/nsi/QMapShack_Installer32.nsi b/nsi/QMapShack_Installer32.nsi
index 3ef9886..304d8f6 100644
--- a/nsi/QMapShack_Installer32.nsi
+++ b/nsi/QMapShack_Installer32.nsi
@@ -56,7 +56,7 @@ OutFile "QMapShack_Install32.exe"
 ; Page welcome description
 !define MUI_WELCOMEPAGE_TITLE "QMapShack"
 !define MUI_WELCOMEPAGE_TITLE_3LINES
-!define MUI_WELCOMEPAGE_TEXT "QMapShack provides a versatile and fast display of raster and vector maps with visualization of GIS data such as tracks and waypoints. It allows the use of several workspaces and of several maps on a workspace. GIS data is handled project-oriented and can be exchanged with the device by drag-n-drop."
+!define MUI_WELCOMEPAGE_TEXT "QMapShack is a consumer grade software to work with data aquired by GPS devices. The data can be displayed on a variety of maps and stored in a database. Additionally new data can be created to plan tours."
 
 !define MUI_LICENSEPAGE_CHECKBOX
 
@@ -190,8 +190,8 @@ Section "QMapShack" QMapShack
 
   WriteUninstaller "$INSTDIR\Uninstall.exe"
 SectionEnd
-LangString DESC_QMapShack ${LANG_ENGLISH} "View GeoTiff and Garmin Maps. Visualize and analyze GPX files and much more!"
-LangString DESC_QMapShack ${LANG_GERMAN}  "Landkarten im GeoTiff und Garmin Format betrachten. GPX Dateien visualisieren und analysieren und vieles mehr!"
+LangString DESC_QMapShack ${LANG_ENGLISH} "View Raster, Garmin and Online Maps combined with elevation data. Work with GIS data. Synchronize your GPS device."
+LangString DESC_QMapShack ${LANG_GERMAN}  "Raster-, Garmin- und Online Karten mit H�heninformation anzeigen. GIS Daten bearbeiten. GPS Ger�te synchronisieren"
 
 
 Section "StartMenue" StartMenue
diff --git a/src/CMainWindow.cpp b/src/CMainWindow.cpp
index b269a1d..fefb37b 100644
--- a/src/CMainWindow.cpp
+++ b/src/CMainWindow.cpp
@@ -28,6 +28,7 @@
 #include "gis/db/CSetupWorkspace.h"
 #include "helpers/CSettings.h"
 #include "map/CMapDraw.h"
+#include "map/CMapItem.h"
 #include "map/CMapList.h"
 #include "map/CMapVrtBuilder.h"
 #include "qlgt/CImportDatabase.h"
@@ -103,6 +104,8 @@ CMainWindow::CMainWindow()
     connect(actionSaveGISData, SIGNAL(triggered()), gisWidget, SLOT(slotSaveAll()));
     connect(actionLoadGISData, SIGNAL(triggered()), this, SLOT(slotLoadGISData()));
     connect(actionVrtBuilder, SIGNAL(triggered()), this, SLOT(slotBuildVrt()));
+    connect(actionStoreView, SIGNAL(triggered()), this, SLOT(slotStoreView()));
+    connect(actionLoadView, SIGNAL(triggered()), this, SLOT(slotLoadView()));
     connect(tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(slotTabCloseRequest(int)));
 
 
@@ -365,6 +368,8 @@ void CMainWindow::slotAddCanvas()
 
 void CMainWindow::slotTabCloseRequest(int i)
 {
+    QMutexLocker lock(&CMapItem::mutexActiveMaps);
+
     QWidget * w = tabWidget->widget(i);
 
     delete w;
@@ -607,6 +612,75 @@ void CMainWindow::loadGISData(const QStringList& filenames)
     }
 }
 
+
+void CMainWindow::slotStoreView()
+{
+    CCanvas * canvas = getVisibleCanvas();
+    if(canvas == 0)
+    {
+        return;
+    }
+
+    SETTINGS;
+    QString path = cfg.value("Paths/lastViewPath", QDir::homePath()).toString();
+    QString filename = QFileDialog::getSaveFileName( this, tr("Select output file"), path,"QMapShack View (*.view)");
+
+    if(filename.isEmpty())
+    {
+        return;
+    }
+
+    QFileInfo fi(filename);
+    if(fi.suffix().toLower() != "view")
+    {
+        filename += ".view";
+    }
+
+    QSettings view(filename, QSettings::IniFormat);
+    view.clear();
+
+    canvas->saveConfig(view);
+
+    path = fi.absolutePath();
+    cfg.setValue("Paths/lastViewPath", path);
+}
+
+void CMainWindow::slotLoadView()
+{
+    SETTINGS;
+    QString path = cfg.value("Paths/lastViewPath", QDir::homePath()).toString();
+    QString filename = QFileDialog::getOpenFileName(this, tr("Select file to load"), path, "QMapShack View (*.view)");
+
+    if(filename.isEmpty())
+    {
+        return;
+    }
+
+    slotAddCanvas();
+
+    CCanvas * canvas = getVisibleCanvas();
+    if(canvas == 0)
+    {
+        return;
+    }
+
+    QSettings view(filename, QSettings::IniFormat);
+    canvas->loadConfig(view);
+
+    cfg.beginGroup("Canvas");
+    cfg.beginGroup("Views");
+    cfg.beginGroup(canvas->objectName());
+    canvas->saveConfig(cfg);
+    cfg.endGroup();
+    cfg.endGroup();
+    cfg.endGroup();
+
+    QFileInfo fi(filename);
+    path = fi.absolutePath();
+    cfg.setValue("Paths/lastViewPath", path);
+}
+
+
 #ifdef WIN32
 
 static void sendDeviceEvent(DWORD unitmask, bool add)
@@ -668,4 +742,4 @@ bool CMainWindow::nativeEvent(const QByteArray & eventType, void * message, long
 
     return QWidget::nativeEvent(eventType, message, result);
 }
-#endif // WIN32
\ No newline at end of file
+#endif // WIN32
diff --git a/src/CMainWindow.h b/src/CMainWindow.h
index 4527b7e..21821fb 100644
--- a/src/CMainWindow.h
+++ b/src/CMainWindow.h
@@ -93,6 +93,8 @@ private slots:
     void slotImportDatabase();
     void slotLoadGISData();
     void slotBuildVrt();
+    void slotStoreView();
+    void slotLoadView();
 
 private:
     friend int main(int argc, char ** argv);
diff --git a/src/GeoMath.cpp b/src/GeoMath.cpp
index dcba192..b9feb0a 100644
--- a/src/GeoMath.cpp
+++ b/src/GeoMath.cpp
@@ -19,7 +19,6 @@
 
 #include "GeoMath.h"
 #include "canvas/IDrawContext.h"
-#include <math.h>
 #include <proj_api.h>
 #include <stdlib.h>
 
@@ -185,18 +184,18 @@ qreal GPS_Math_Distance(const qreal u1, const qreal v1, const qreal u2, const qr
     qreal a = 6378137.0, b = 6356752.3142,  f = 1.0/298.257223563;  // WGS-84 ellipsiod
     qreal L = u2 - u1;
 
-    qreal U1 = atan((1-f) * tan(v1));
-    qreal U2 = atan((1-f) * tan(v2));
-    qreal sinU1 = sin(U1), cosU1 = cos(U1);
-    qreal sinU2 = sin(U2), cosU2 = cos(U2);
+    qreal U1 = qAtan((1-f) * qTan(v1));
+    qreal U2 = qAtan((1-f) * qTan(v2));
+    qreal sinU1 = qSin(U1), cosU1 = qCos(U1);
+    qreal sinU2 = qSin(U2), cosU2 = qCos(U2);
     qreal lambda = L, lambdaP = 2*PI;
     unsigned iterLimit = 20;
 
     while ((qAbs(lambda - lambdaP) > 1e-12) && (--iterLimit > 0))
     {
-        sinLambda = sin(lambda);
-        cosLambda = cos(lambda);
-        sinSigma = sqrt((cosU2*sinLambda) * (cosU2*sinLambda) + (cosU1*sinU2-sinU1*cosU2*cosLambda) * (cosU1*sinU2-sinU1*cosU2*cosLambda));
+        sinLambda = qSin(lambda);
+        cosLambda = qCos(lambda);
+        sinSigma = qSqrt((cosU2*sinLambda) * (cosU2*sinLambda) + (cosU1*sinU2-sinU1*cosU2*cosLambda) * (cosU1*sinU2-sinU1*cosU2*cosLambda));
 
         if (sinSigma==0)
         {
@@ -204,12 +203,12 @@ qreal GPS_Math_Distance(const qreal u1, const qreal v1, const qreal u2, const qr
         }
 
         cosSigma = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda;
-        sigma = atan2(sinSigma, cosSigma);
+        sigma = qAtan2(sinSigma, cosSigma);
         sinAlpha = cosU1 * cosU2 * sinLambda / sinSigma;
         cosSqAlpha = 1 - sinAlpha * sinAlpha;
         cos2SigmaM = cosSigma - 2 * sinU1 * sinU2 / cosSqAlpha;
 
-        if (isnan(cos2SigmaM))
+        if (qIsNaN(cos2SigmaM))
         {
             cos2SigmaM = 0;  // equatorial line: cosSqAlpha=0 (§6)
         }
@@ -228,8 +227,8 @@ qreal GPS_Math_Distance(const qreal u1, const qreal v1, const qreal u2, const qr
     qreal deltaSigma = B*sinSigma*(cos2SigmaM+B/4*(cosSigma*(-1+2*cos2SigmaM*cos2SigmaM)-B/6*cos2SigmaM*(-3+4*sinSigma*sinSigma)*(-3+4*cos2SigmaM*cos2SigmaM)));
     qreal s = b*A*(sigma-deltaSigma);
 
-    a1 = atan2(cosU2 * sinLambda, cosU1 * sinU2 - sinU1 * cosU2 * cosLambda) * 360 / TWOPI;
-    a2 = atan2(cosU1 * sinLambda, -sinU1 * cosU2 + cosU1 * sinU2 * cosLambda) * 360 / TWOPI;
+    a1 = qAtan2(cosU2 * sinLambda, cosU1 * sinU2 - sinU1 * cosU2 * cosLambda) * 360 / TWOPI;
+    a2 = qAtan2(cosU1 * sinLambda, -sinU1 * cosU2 + cosU1 * sinU2 * cosLambda) * 360 / TWOPI;
     return s;
 }
 
@@ -247,18 +246,18 @@ qreal GPS_Math_Distance(const qreal u1, const qreal v1, const qreal u2, const qr
     qreal a = 6378137.0, b = 6356752.3142,  f = 1.0/298.257223563;  // WGS-84 ellipsiod
     qreal L = u2 - u1;
 
-    qreal U1 = atan((1-f) * tan(v1));
-    qreal U2 = atan((1-f) * tan(v2));
-    qreal sinU1 = sin(U1), cosU1 = cos(U1);
-    qreal sinU2 = sin(U2), cosU2 = cos(U2);
+    qreal U1 = qAtan((1-f) * qTan(v1));
+    qreal U2 = qAtan((1-f) * qTan(v2));
+    qreal sinU1 = qSin(U1), cosU1 = qCos(U1);
+    qreal sinU2 = qSin(U2), cosU2 = qCos(U2);
     qreal lambda = L, lambdaP = 2*PI;
     unsigned iterLimit = 20;
 
     while ((qAbs(lambda - lambdaP) > 1e-12) && (--iterLimit > 0))
     {
-        sinLambda = sin(lambda);
-        cosLambda = cos(lambda);
-        sinSigma = sqrt((cosU2*sinLambda) * (cosU2*sinLambda) + (cosU1*sinU2-sinU1*cosU2*cosLambda) * (cosU1*sinU2-sinU1*cosU2*cosLambda));
+        sinLambda = qSin(lambda);
+        cosLambda = qCos(lambda);
+        sinSigma = qSqrt((cosU2*sinLambda) * (cosU2*sinLambda) + (cosU1*sinU2-sinU1*cosU2*cosLambda) * (cosU1*sinU2-sinU1*cosU2*cosLambda));
 
         if (sinSigma==0)
         {
@@ -266,12 +265,12 @@ qreal GPS_Math_Distance(const qreal u1, const qreal v1, const qreal u2, const qr
         }
 
         cosSigma = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda;
-        sigma = atan2(sinSigma, cosSigma);
+        sigma = qAtan2(sinSigma, cosSigma);
         sinAlpha = cosU1 * cosU2 * sinLambda / sinSigma;
         cosSqAlpha = 1 - sinAlpha * sinAlpha;
         cos2SigmaM = cosSigma - 2 * sinU1 * sinU2 / cosSqAlpha;
 
-        if (isnan(cos2SigmaM))
+        if (qIsNaN(cos2SigmaM))
         {
             cos2SigmaM = 0;  // equatorial line: cosSqAlpha=0 (§6)
         }
@@ -298,7 +297,7 @@ qreal GPS_Math_DistanceQuick(const qreal u1, const qreal v1, const qreal u2, con
     qreal dU = u2 - u1; // lambda
     qreal dV = v2 - v1; // roh
 
-    qreal d = 2*asin(sqrt(sin(dV/2) * sin(dV/2) + cos(v1) * cos(v2) * sin(dU/2) * sin(dU/2)));
+    qreal d = 2*qAsin(qSqrt(qSin(dV/2) * qSin(dV/2) + qCos(v1) * qCos(v2) * qSin(dU/2) * qSin(dU/2)));
 
     return 6371010 * d;
 }
@@ -306,8 +305,8 @@ qreal GPS_Math_DistanceQuick(const qreal u1, const qreal v1, const qreal u2, con
 void GPS_Math_Wpt_Projection(const qreal lon1, const qreal lat1, const qreal distance, const qreal bearing, qreal& lon2, qreal& lat2)
 {
     qreal d    = distance / 6378130.0;
-    lat2 = asin(sin(lat1) * cos(d) + cos(lat1) * sin(d) * cos(-bearing));
-    lon2 = cos(lat1) == 0 ? lon1 : fmod(lon1 - asin(sin(-bearing) * sin(d) / cos(lat1)) + PI, TWOPI) - PI;
+    lat2 = qAsin(qSin(lat1) * qCos(d) + qCos(lat1) * qSin(d) * qCos(-bearing));
+    lon2 = qCos(lat1) == 0 ? lon1 : fmod(lon1 - qAsin(qSin(-bearing) * qSin(d) / qCos(lat1)) + PI, TWOPI) - PI;
 }
 
 qreal GPS_Math_distPointLine3D(point3D& x1, point3D& x2, point3D& x0)
@@ -341,7 +340,7 @@ qreal GPS_Math_distPointLine3D(point3D& x1, point3D& x2, point3D& x0)
     // |(x2 - x1)|
     a3      = v3.x*v3.x + v3.y*v3.y + v3.z*v3.z;
 
-    return sqrt(a1x2/a3);
+    return qSqrt(a1x2/a3);
 }
 
 
@@ -408,8 +407,8 @@ QPointF GPS_Math_Wpt_Projection(const QPointF& pt1, qreal distance, qreal bearin
     qreal lon1 = pt1.x();
     qreal lat1 = pt1.y();
 
-    qreal lat2 = asin(sin(lat1) * cos(d) + cos(lat1) * sin(d) * cos(-bearing));
-    qreal lon2 = cos(lat1) == 0 ? lon1 : fmod(lon1 - asin(sin(-bearing) * sin(d) / cos(lat1)) + M_PI, (2*M_PI)) - M_PI;
+    qreal lat2 = qAsin(qSin(lat1) * qCos(d) + qCos(lat1) * qSin(d) * qCos(-bearing));
+    qreal lon2 = qCos(lat1) == 0 ? lon1 : fmod(lon1 - qAsin(qSin(-bearing) * qSin(d) / qCos(lat1)) + M_PI, (2*M_PI)) - M_PI;
 
     pt2.rx() = lon2;
     pt2.ry() = lat2;
@@ -471,7 +470,7 @@ void GPS_Math_SubPolyline(const QPointF& pt1, const QPointF& pt2, qint32 thresho
 
         dx = p2.u - p1.u;
         dy = p2.v - p1.v;
-        d_p1_p2 = sqrt(dx * dx + dy * dy);
+        d_p1_p2 = qSqrt(dx * dx + dy * dy);
 
         // find point on line closest to pt1
         u = ((pt1.x() - p1.u) * dx + (pt1.y() - p1.v) * dy) / (d_p1_p2 * d_p1_p2);
@@ -481,7 +480,7 @@ void GPS_Math_SubPolyline(const QPointF& pt1, const QPointF& pt2, qint32 thresho
             x = p1.u + u * dx;
             y = p1.v + u * dy;
 
-            distance = sqrt((x - pt1.x())*(x - pt1.x()) + (y - pt1.y())*(y - pt1.y()));
+            distance = qSqrt((x - pt1.x())*(x - pt1.x()) + (y - pt1.y())*(y - pt1.y()));
 
             if(distance < shortest1)
             {
@@ -501,7 +500,7 @@ void GPS_Math_SubPolyline(const QPointF& pt1, const QPointF& pt2, qint32 thresho
             x = p1.u + u * dx;
             y = p1.v + u * dy;
 
-            distance = sqrt((x - pt2.x())*(x - pt2.x()) + (y - pt2.y())*(y - pt2.y()));
+            distance = qSqrt((x - pt2.x())*(x - pt2.x()) + (y - pt2.y())*(y - pt2.y()));
 
             if(distance < shortest2)
             {
@@ -517,7 +516,7 @@ void GPS_Math_SubPolyline(const QPointF& pt1, const QPointF& pt2, qint32 thresho
     if(idx11 == -1)
     {
         QPointF px = pixel.first();
-        distance = sqrt((qreal)((px.x() - pt1.x())*(px.x() - pt1.x()) + (px.y() - pt1.y())*(px.y() - pt1.y())));
+        distance = qSqrt((qreal)((px.x() - pt1.x())*(px.x() - pt1.x()) + (px.y() - pt1.y())*(px.y() - pt1.y())));
         if(distance < (threshold<<1))
         {
             idx11 = 0;
@@ -527,7 +526,7 @@ void GPS_Math_SubPolyline(const QPointF& pt1, const QPointF& pt2, qint32 thresho
         else
         {
             px = pixel.last();
-            distance = sqrt((qreal)((px.x() - pt1.x())*(px.x() - pt1.x()) + (px.y() - pt1.y())*(px.y() - pt1.y())));
+            distance = qSqrt((qreal)((px.x() - pt1.x())*(px.x() - pt1.x()) + (px.y() - pt1.y())*(px.y() - pt1.y())));
             if(distance < (threshold<<1))
             {
                 idx11 = pixel.size() - 2;
@@ -541,7 +540,7 @@ void GPS_Math_SubPolyline(const QPointF& pt1, const QPointF& pt2, qint32 thresho
     if(idx21 == -1)
     {
         QPointF px = pixel.first();
-        distance = sqrt((qreal)((px.x() - pt2.x())*(px.x() - pt2.x()) + (px.y() - pt2.y())*(px.y() - pt2.y())));
+        distance = qSqrt((qreal)((px.x() - pt2.x())*(px.x() - pt2.x()) + (px.y() - pt2.y())*(px.y() - pt2.y())));
 
         if(distance < (threshold<<1))
         {
@@ -551,7 +550,7 @@ void GPS_Math_SubPolyline(const QPointF& pt1, const QPointF& pt2, qint32 thresho
         else
         {
             px = pixel.last();
-            distance = sqrt((qreal)((px.x() - pt2.x())*(px.x() - pt2.x()) + (px.y() - pt2.y())*(px.y() - pt2.y())));
+            distance = qSqrt((qreal)((px.x() - pt2.x())*(px.x() - pt2.x()) + (px.y() - pt2.y())*(px.y() - pt2.y())));
             if(distance < (threshold<<1))
             {
                 idx21 = pixel.size() - 2;
diff --git a/src/IMainWindow.ui b/src/IMainWindow.ui
index a172c7b..7ab60c2 100644
--- a/src/IMainWindow.ui
+++ b/src/IMainWindow.ui
@@ -62,6 +62,9 @@
     <addaction name="actionLoadGISData"/>
     <addaction name="actionSaveGISData"/>
     <addaction name="separator"/>
+    <addaction name="actionLoadView"/>
+    <addaction name="actionStoreView"/>
+    <addaction name="separator"/>
     <addaction name="actionSetupMapPaths"/>
     <addaction name="actionSetupDEMPaths"/>
    </widget>
@@ -102,9 +105,9 @@
     </property>
     <addaction name="actionAddEmptyProject"/>
     <addaction name="actionSearchGoogle"/>
+    <addaction name="actionCloseAllProjects"/>
     <addaction name="separator"/>
     <addaction name="actionSetupWorkspace"/>
-    <addaction name="actionCloseAllProjects"/>
    </widget>
    <widget class="QMenu" name="menuExtra">
     <property name="title">
@@ -482,6 +485,30 @@
     <string>GUI front end to gdalbuildvrt</string>
    </property>
   </action>
+  <action name="actionStoreView">
+   <property name="icon">
+    <iconset resource="resources.qrc">
+     <normaloff>:/icons/32x32/SaveView.png</normaloff>:/icons/32x32/SaveView.png</iconset>
+   </property>
+   <property name="text">
+    <string>Store Map View</string>
+   </property>
+   <property name="toolTip">
+    <string>Write current active map and DEM list including the properties to a file</string>
+   </property>
+  </action>
+  <action name="actionLoadView">
+   <property name="icon">
+    <iconset resource="resources.qrc">
+     <normaloff>:/icons/32x32/LoadView.png</normaloff>:/icons/32x32/LoadView.png</iconset>
+   </property>
+   <property name="text">
+    <string>Load Map View</string>
+   </property>
+   <property name="toolTip">
+    <string>Restore view with active map and DEM list including the properties from a file</string>
+   </property>
+  </action>
  </widget>
  <resources>
   <include location="resources.qrc"/>
diff --git a/src/canvas/CCanvas.cpp b/src/canvas/CCanvas.cpp
index 4085713..fd67d44 100644
--- a/src/canvas/CCanvas.cpp
+++ b/src/canvas/CCanvas.cpp
@@ -133,11 +133,12 @@ void CCanvas::saveConfig(QSettings& cfg)
 
 void CCanvas::loadConfig(QSettings& cfg)
 {
+    posFocus = cfg.value("posFocus", posFocus).toPointF();
+    setProjection(cfg.value("proj", map->getProjection()).toString());
+
     map->loadConfig(cfg);
     dem->loadConfig(cfg);
     grid->loadConfig(cfg);
-    posFocus = cfg.value("posFocus", posFocus).toPointF();
-    setProjection(cfg.value("proj", map->getProjection()).toString());
 
     dem->zoom(map->zoom());
     gis->zoom(map->zoom());
@@ -542,15 +543,15 @@ void CCanvas::drawScale(QPainter& p)
 
     if(0 <= b && b < log10(3.0f))
     {
-        d = 1 * pow(10,a);
+        d = 1 * qPow(10,a);
     }
     else if(log10(3.0f) < b && b < log10(5.0f))
     {
-        d = 3 * pow(10,a);
+        d = 3 * qPow(10,a);
     }
     else
     {
-        d = 5 * pow(10,a);
+        d = 5 * qPow(10,a);
     }
 
     // step III: convert the scale length from [m] into [px]
diff --git a/src/dem/CDemDraw.cpp b/src/dem/CDemDraw.cpp
index e89c40f..84de920 100644
--- a/src/dem/CDemDraw.cpp
+++ b/src/dem/CDemDraw.cpp
@@ -110,7 +110,15 @@ void CDemDraw::loadConfig(QSettings& cfg)
     cfgGroup = cfg.group();
     // -------------------
     cfg.beginGroup("dem");
-    restoreActiveMapsList(cfg.value("active", "").toStringList());
+    if(cfgGroup.isEmpty())
+    {
+        restoreActiveMapsList(cfg.value("active", "").toStringList(), cfg);
+    }
+    else
+    {
+        restoreActiveMapsList(cfg.value("active", "").toStringList());
+    }
+
     cfg.endGroup();
 }
 
@@ -175,6 +183,11 @@ void CDemDraw::saveActiveMapsList(QStringList& keys, QSettings& cfg)
 
 void CDemDraw::loadConfigForDemItem(CDemItem * item)
 {
+    if(cfgGroup.isEmpty())
+    {
+        return;
+    }
+
     SETTINGS;
     cfg.beginGroup(cfgGroup);
     cfg.beginGroup("dem");
@@ -208,6 +221,30 @@ void CDemDraw::restoreActiveMapsList(const QStringList& keys)
     demList->updateHelpText();
 }
 
+void CDemDraw::restoreActiveMapsList(const QStringList& keys, QSettings& cfg)
+{
+    QMutexLocker lock(&CDemItem::mutexActiveDems);
+
+    foreach(const QString &key, keys)
+    {
+        for(int i = 0; i < demList->count(); i++)
+        {
+            CDemItem * item = demList->item(i);
+
+            if(item && item->key == key)
+            {
+                if(item->activate())
+                {
+                    item->loadConfig(cfg);
+                }
+                break;
+            }
+        }
+    }
+
+    demList->updateHelpText();
+}
+
 
 qreal CDemDraw::getElevationAt(const QPointF& pos)
 {
diff --git a/src/dem/CDemDraw.h b/src/dem/CDemDraw.h
index 3bda64a..6e45f0c 100644
--- a/src/dem/CDemDraw.h
+++ b/src/dem/CDemDraw.h
@@ -79,6 +79,7 @@ private:
        @brief Restore list of active maps from configuration file
      */
     void restoreActiveMapsList(const QStringList &keys);
+    void restoreActiveMapsList(const QStringList& keys, QSettings &cfg);
 
     CDemList * demList;
 
diff --git a/src/dem/CDemVRT.cpp b/src/dem/CDemVRT.cpp
index 7a67e71..724537b 100644
--- a/src/dem/CDemVRT.cpp
+++ b/src/dem/CDemVRT.cpp
@@ -103,7 +103,7 @@ CDemVRT::CDemVRT(const QString &filename, CDemDraw *parent)
 
     if(adfGeoTransform[4] != 0.0)
     {
-        trFwd.rotate(atan(adfGeoTransform[2]/adfGeoTransform[4]));
+        trFwd.rotate(qAtan(adfGeoTransform[2]/adfGeoTransform[4]));
     }
 
     if(pj_is_latlong(pjsrc))
@@ -154,11 +154,11 @@ qreal CDemVRT::getElevationAt(const QPointF& pos)
 
     pt = trInv.map(pt);
 
-    qreal x    = pt.x() - floor(pt.x());
-    qreal y    = pt.y() - floor(pt.y());
+    qreal x    = pt.x() - qFloor(pt.x());
+    qreal y    = pt.y() - qFloor(pt.y());
 
     mutex.lock();
-    CPLErr err = dataset->RasterIO(GF_Read, floor(pt.x()), floor(pt.y()), 2, 2, &e, 2, 2, GDT_Int16, 1, 0, 0, 0, 0);
+    CPLErr err = dataset->RasterIO(GF_Read, qFloor(pt.x()), qFloor(pt.y()), 2, 2, &e, 2, 2, GDT_Int16, 1, 0, 0, 0, 0);
     mutex.unlock();
     if(err == CE_Failure)
     {
diff --git a/src/dem/IDem.cpp b/src/dem/IDem.cpp
index 7ce3375..37f24b2 100644
--- a/src/dem/IDem.cpp
+++ b/src/dem/IDem.cpp
@@ -162,8 +162,8 @@ void IDem::hillshading(QVector<qint16>& data, qreal w, qreal h, QImage& img)
 
 #define ZFACT           0.125
 #define ZFACT_BY_ZFACT  (ZFACT*ZFACT)
-#define SIN_ALT         (sin(45*DEG_TO_RAD))
-#define ZFACT_COS_ALT   (ZFACT*cos(45*DEG_TO_RAD))
+#define SIN_ALT         (qSin(45*DEG_TO_RAD))
+#define ZFACT_COS_ALT   (ZFACT*qCos(45*DEG_TO_RAD))
 #define AZ              (315 * DEG_TO_RAD)
     for(int m = 1; m <= h; m++)
     {
@@ -179,9 +179,9 @@ void IDem::hillshading(QVector<qint16>& data, qreal w, qreal h, QImage& img)
 
             dx          = ((win[0] + win[3] + win[3] + win[6]) - (win[2] + win[5] + win[5] + win[8])) / (xscale*factorHillshading);
             dy          = ((win[6] + win[7] + win[7] + win[8]) - (win[0] + win[1] + win[1] + win[2])) / (yscale*factorHillshading);
-            aspect      = atan2(dy, dx);
+            aspect      = qAtan2(dy, dx);
             xx_plus_yy  = dx * dx + dy * dy;
-            cang        = (SIN_ALT - ZFACT_COS_ALT * sqrt(xx_plus_yy) * sin(aspect - AZ)) / sqrt(1+ZFACT_BY_ZFACT*xx_plus_yy);
+            cang        = (SIN_ALT - ZFACT_COS_ALT * qSqrt(xx_plus_yy) * qSin(aspect - AZ)) / qSqrt(1+ZFACT_BY_ZFACT*xx_plus_yy);
 
             if (cang <= 0.0)
             {
@@ -211,7 +211,7 @@ void IDem::slopecolor(QVector<qint16>& data, qreal w, qreal h, QImage &img)
             dx  = ((win[0] + win[3] + win[3] + win[6]) - (win[2] + win[5] + win[5] + win[8])) / (xscale);
             dy  = ((win[6] + win[7] + win[7] + win[8]) - (win[0] + win[1] + win[1] + win[2])) / (yscale);
             k   = (dx * dx + dy * dy);
-            slope =  atan(sqrt(k) / (8 * 1.0)) * 180.0 / M_PI;
+            slope =  qAtan(qSqrt(k) / (8 * 1.0)) * 180.0 / M_PI;
 
             if(slope > tblGrade[gradeSlopeColor][5])
             {
@@ -251,11 +251,11 @@ void IDem::drawTile(QImage& img, QPolygonF& l, QPainter& p)
     qreal dy1   = l[0].y() - l[1].y();
     qreal dx2   = l[0].x() - l[3].x();
     qreal dy2   = l[0].y() - l[3].y();
-    qreal w    = ceil( sqrt(dx1*dx1 + dy1*dy1));
-    qreal h    = ceil( sqrt(dx2*dx2 + dy2*dy2));
+    qreal w    = qCeil( qSqrt(dx1*dx1 + dy1*dy1));
+    qreal h    = qCeil( qSqrt(dx2*dx2 + dy2*dy2));
 
     // calculate rotation. This is not really a reprojection but might be good enough for close zoom levels
-    qreal a = atan(dy1/dx1) * RAD_TO_DEG;
+    qreal a = qAtan(dy1/dx1) * RAD_TO_DEG;
 
     // finally translate, scale, rotate and draw tile
     p.save();
diff --git a/src/device/CDeviceGarmin.cpp b/src/device/CDeviceGarmin.cpp
index ec53f30..8e4832c 100644
--- a/src/device/CDeviceGarmin.cpp
+++ b/src/device/CDeviceGarmin.cpp
@@ -115,6 +115,17 @@ CDeviceGarmin::CDeviceGarmin(const QString &path, const QString &key, const QStr
             delete project;
         }
     }
+
+    QDir dirGpxArchive(dir.absoluteFilePath(pathGpx + "/Archive"));
+    entries = dirGpxArchive.entryList(QStringList("*.gpx"));
+    foreach(const QString &entry, entries)
+    {
+        IGisProject * project =  new CGpxProject(dirGpxArchive.absoluteFilePath(entry), this);
+        if(!project->isValid())
+        {
+            delete project;
+        }
+    }
 }
 
 CDeviceGarmin::~CDeviceGarmin()
diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
index fbaedc8..a98a305 100644
--- a/src/gis/CGisListWks.cpp
+++ b/src/gis/CGisListWks.cpp
@@ -155,16 +155,15 @@ CGisListWks::CGisListWks(QWidget *parent)
     {
         QTimer::singleShot(saveEvery * 60000, this, SLOT(slotSaveWorkspace()));
     }
+
 #ifdef Q_OS_LINUX
     deviceWatcher = new CDeviceWatcherLinux(this);
+    connect(deviceWatcher, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
 #endif
 #ifdef Q_OS_WIN
     deviceWatcher = new CDeviceWatcherWindows(this);
+    connect(deviceWatcher, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
 #endif
-    if(deviceWatcher)
-    {
-        connect(deviceWatcher, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
-    }
 
     QTimer::singleShot(500, this, SLOT(slotLoadWorkspace()));
 }
@@ -693,7 +692,7 @@ void CGisListWks::slotSaveWorkspace()
         query.bindValue(":type", project->getType());
         query.bindValue(":key", project->getKey());
         query.bindValue(":name", project->getName());
-        query.bindValue(":changed", project->text(1) == "*");
+        query.bindValue(":changed", project->isChanged());
         query.bindValue(":data", data);
         QUERY_EXEC(continue);
     }
@@ -771,7 +770,7 @@ void CGisListWks::slotLoadWorkspace()
         project->setToolTip(eColumnName,project->getInfo());
         if(changed)
         {
-            project->setText(eColumnDecoration, "*");
+            project->setChanged();
         }
     }
 
diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
index 894e56c..1778024 100644
--- a/src/gis/IGisItem.cpp
+++ b/src/gis/IGisItem.cpp
@@ -223,7 +223,7 @@ void IGisItem::updateDecoration(mark_e enable, mark_e disable)
     IGisProject * project = dynamic_cast<IGisProject*>(parent());
     if(project && (enable & eMarkChanged))
     {
-        project->setText(CGisListWks::eColumnDecoration,"*");
+        project->setChanged();
     }
 
     // set marks in column 1
@@ -400,6 +400,11 @@ bool IGisItem::isOnDevice() const
 
 void IGisItem::setReadOnlyMode(bool readOnly)
 {
+    if(isOnDevice())
+    {
+        return;
+    }
+
     if(!(flags & (eFlagCreatedInQms|eFlagTainted)))
     {
         if(isReadOnly() && !readOnly)
@@ -440,8 +445,9 @@ QColor IGisItem::str2color(const QString& name)
     const color_t * p = colorMap;
     while(p->name)
     {
-        if(p->color == ref)
+        if((p->name == name) || (ref == p->color))
         {
+            qDebug() << p->name << p->color;
             return p->color;
         }
         p++;
@@ -561,7 +567,7 @@ void IGisItem::drawArrows(const QPolygonF& line, const QRectF& extViewport, QPai
             {
                 if(0 != pt.x() - pt1.x() && (pt.y() - pt1.y()))
                 {
-                    heading = ( atan2((qreal)(pt.y() - pt1.y()), (qreal)(pt.x() - pt1.x())) * 180.) / M_PI;
+                    heading = ( qAtan2((qreal)(pt.y() - pt1.y()), (qreal)(pt.x() - pt1.x())) * 180.) / M_PI;
 
                     p.save();
                     // draw arrow between bullets
diff --git a/src/gis/ovl/CDetailsOvlArea.cpp b/src/gis/ovl/CDetailsOvlArea.cpp
index 87578ce..5dfaceb 100644
--- a/src/gis/ovl/CDetailsOvlArea.cpp
+++ b/src/gis/ovl/CDetailsOvlArea.cpp
@@ -58,6 +58,12 @@ CDetailsOvlArea::CDetailsOvlArea(CGisItemOvlArea &area, QWidget * parent)
 
     setupGui();
 
+    if(area.isOnDevice())
+    {
+        toolLock->setDisabled(true);
+    }
+
+
     connect(comboColor, SIGNAL(currentIndexChanged(int)), this, SLOT(slotSetColor(int)));
     connect(comboBorderWidth, SIGNAL(currentIndexChanged(int)), this, SLOT(slotSetWidth(int)));
     connect(comboStyle, SIGNAL(currentIndexChanged(int)), this, SLOT(slotSetStyle(int)));
diff --git a/src/gis/ovl/CGisItemOvlArea.cpp b/src/gis/ovl/CGisItemOvlArea.cpp
index 5faa2d7..3c13949 100644
--- a/src/gis/ovl/CGisItemOvlArea.cpp
+++ b/src/gis/ovl/CGisItemOvlArea.cpp
@@ -296,8 +296,8 @@ void CGisItemOvlArea::deriveSecondaryData()
 
         d = GPS_Math_Distance(pt11.lon * DEG_TO_RAD, pt11.lat * DEG_TO_RAD, pt12.lon * DEG_TO_RAD, pt12.lat * DEG_TO_RAD, a1, a2);
 
-        pt22.rx() = pt21.x() + cos(a1 * DEG_TO_RAD) * d;
-        pt22.ry() = pt21.y() + sin(a1 * DEG_TO_RAD) * d;
+        pt22.rx() = pt21.x() + qCos(a1 * DEG_TO_RAD) * d;
+        pt22.ry() = pt21.y() + qSin(a1 * DEG_TO_RAD) * d;
     }
 
     area.area = 0;
diff --git a/src/gis/ovl/IScrOptOvlArea.ui b/src/gis/ovl/IScrOptOvlArea.ui
index 9a9fddf..88e6522 100644
--- a/src/gis/ovl/IScrOptOvlArea.ui
+++ b/src/gis/ovl/IScrOptOvlArea.ui
@@ -111,6 +111,9 @@
      <property name="text">
       <string>TextLabel</string>
      </property>
+     <property name="textInteractionFlags">
+      <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
+     </property>
     </widget>
    </item>
   </layout>
diff --git a/src/gis/prj/IGisProject.cpp b/src/gis/prj/IGisProject.cpp
index b29719d..0cdc8b0 100644
--- a/src/gis/prj/IGisProject.cpp
+++ b/src/gis/prj/IGisProject.cpp
@@ -56,6 +56,11 @@ IGisProject::~IGisProject()
 }
 
 
+bool IGisProject::isVisible() const
+{
+    return checkState(CGisListWks::eColumnDecoration) == Qt::Checked;
+}
+
 void IGisProject::genKey()
 {
     if(key.isEmpty())
@@ -95,6 +100,11 @@ bool IGisProject::isOnDevice() const
     return device != 0;
 }
 
+bool IGisProject::isChanged() const
+{
+    return text(CGisListWks::eColumnDecoration) == "*";
+}
+
 void IGisProject::edit()
 {
     if(dlgDetails.isNull())
@@ -110,28 +120,28 @@ void IGisProject::setName(const QString& str)
 {
     metadata.name = str;
     setText(CGisListWks::eColumnName, str);
-    changed();
+    setChanged();
 }
 
 void IGisProject::setKeywords(const QString& str)
 {
     metadata.keywords = str;
-    changed();
+    setChanged();
 }
 
 void IGisProject::setDescription(const QString& str)
 {
     metadata.desc = str;
-    changed();
+    setChanged();
 }
 
 void IGisProject::setLinks(const QList<IGisItem::link_t>& links)
 {
     metadata.links = links;
-    changed();
+    setChanged();
 }
 
-void IGisProject::changed()
+void IGisProject::setChanged()
 {
     setText(CGisListWks::eColumnDecoration,"*");
 }
@@ -260,6 +270,11 @@ IGisItem * IGisProject::getItemByKey(const IGisItem::key_t& key)
 
 void IGisProject::getItemByPos(const QPointF& pos, QList<IGisItem *> &items)
 {
+    if(!isVisible())
+    {
+        return;
+    }
+
     for(int i = 0; i < childCount(); i++)
     {
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
@@ -306,7 +321,7 @@ bool IGisProject::delItemByKey(const IGisItem::key_t& key, QMessageBox::Standard
              */
             if(type != eTypeDb)
             {
-                changed();
+                setChanged();
             }
 
             // as each item in the project has to be unique, we can stop searching.
@@ -434,7 +449,7 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
 
 void IGisProject::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis)
 {
-    if(checkState(CGisListWks::eColumnDecoration) != Qt::Checked)
+    if(!isVisible())
     {
         return;
     }
@@ -458,7 +473,7 @@ void IGisProject::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
 
 void IGisProject::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
 {
-    if(checkState(CGisListWks::eColumnDecoration) != Qt::Checked)
+    if(!isVisible())
     {
         return;
     }
@@ -478,7 +493,7 @@ void IGisProject::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
 
 void IGisProject::drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis)
 {
-    if(checkState(CGisListWks::eColumnDecoration) != Qt::Checked)
+    if(!isVisible())
     {
         return;
     }
diff --git a/src/gis/prj/IGisProject.h b/src/gis/prj/IGisProject.h
index 838564b..57bd6be 100644
--- a/src/gis/prj/IGisProject.h
+++ b/src/gis/prj/IGisProject.h
@@ -153,6 +153,7 @@ public:
     void setKeywords(const QString& str);
     void setDescription(const QString& str);
     void setLinks(const QList<IGisItem::link_t>& links);
+    void setChanged();
 
     /**
        @brief Get a short metadata summary
@@ -215,12 +216,16 @@ public:
         return valid;
     }
 
+    bool isVisible() const;
+
+
     /**
        @brief Test if this project is handled by a device
        @return True if handled by a device
      */
     bool isOnDevice() const;
 
+    bool isChanged() 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);
@@ -281,7 +286,7 @@ protected:
     void setupName(const QString& defaultName);
     void markAsSaved();
     void readMetadata(const QDomNode& xml, metadata_t& metadata);
-    void changed();
+
 
     // Those are the URIs of the GPX extensions we support
     static const QString gpxx_ns;
diff --git a/src/gis/rte/IScrOptRte.ui b/src/gis/rte/IScrOptRte.ui
index 12892f5..c084f11 100644
--- a/src/gis/rte/IScrOptRte.ui
+++ b/src/gis/rte/IScrOptRte.ui
@@ -87,6 +87,9 @@
      <property name="textFormat">
       <enum>Qt::AutoText</enum>
      </property>
+     <property name="textInteractionFlags">
+      <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
+     </property>
     </widget>
    </item>
   </layout>
diff --git a/src/gis/trk/CDetailsTrk.cpp b/src/gis/trk/CDetailsTrk.cpp
index b2da483..ddb0ed6 100644
--- a/src/gis/trk/CDetailsTrk.cpp
+++ b/src/gis/trk/CDetailsTrk.cpp
@@ -51,6 +51,11 @@ CDetailsTrk::CDetailsTrk(CGisItemTrk& trk, QWidget *parent)
 
     setupGui();
 
+    if(trk.isOnDevice())
+    {
+        toolLock->setDisabled(true);
+    }
+
     QTreeWidgetItem * item, * item0;
     item0 = new QTreeWidgetItem(treeFilter);
     item0->setIcon(0, QIcon("://icons/48x48/PointHide.png"));
diff --git a/src/gis/trk/CGisItemTrk.cpp b/src/gis/trk/CGisItemTrk.cpp
index d3a9e80..cb107f4 100644
--- a/src/gis/trk/CGisItemTrk.cpp
+++ b/src/gis/trk/CGisItemTrk.cpp
@@ -445,14 +445,14 @@ QString CGisItemTrk::getInfoRange()
         str += QString("%4 %1:%2:%3\n").arg(hh,2,10,QChar('0')).arg(mm,2,10,QChar('0')).arg(ss,2,10,QChar('0')).arg(QChar(0x231a));
     }
 
-    tmp       = atan((pt2->ascend - pt1->ascend)/d);
+    tmp       = qAtan((pt2->ascend - pt1->ascend)/d);
     slope1    = qAbs(tmp * 360.0/(2 * M_PI));
     slope2    = qTan(slope1 * DEG_TO_RAD) * 100;
 
     IUnit::self().meter2elevation(pt2->ascend - pt1->ascend, val, unit);
     str += QString("%3 %1%2 (%4%5, %6%)\n").arg(val).arg(unit).arg(QChar(0x2197)).arg(qRound(slope1)).arg(QChar(0260)).arg(qRound(slope2));
 
-    tmp       = atan((pt2->descend - pt1->descend)/d);
+    tmp       = qAtan((pt2->descend - pt1->descend)/d);
     slope1    = qAbs(tmp * 360.0/(2 * M_PI));
     slope2    = qTan(slope1 * DEG_TO_RAD) * 100;
 
@@ -772,7 +772,7 @@ void CGisItemTrk::deriveSecondaryData()
                 n++;
             }
 
-            qreal a         = atan((e2 - e1)/(d2 - d1));
+            qreal a         = qAtan((e2 - e1)/(d2 - d1));
             trkpt.slope1    = qAbs(a * 360.0/(2 * M_PI));
             trkpt.slope2    = qTan(trkpt.slope1 * DEG_TO_RAD) * 100;
 
@@ -869,8 +869,8 @@ void CGisItemTrk::findWaypointsCloseBy()
         qreal a1, a2;
         qreal d = GPS_Math_Distance(pt0.x, pt0.y, trkwpt.x, trkwpt.y, a1, a2);
 
-        trkwpt.x = cos(a1 * DEG_TO_RAD) * d;
-        trkwpt.y = sin(a1 * DEG_TO_RAD) * d;
+        trkwpt.x = qCos(a1 * DEG_TO_RAD) * d;
+        trkwpt.y = qSin(a1 * DEG_TO_RAD) * d;
 
         trkwpts << trkwpt;
     }
@@ -889,8 +889,8 @@ void CGisItemTrk::findWaypointsCloseBy()
 
         pt0 = pt2;
 
-        pt2.x = pt1.x + cos(a1 * DEG_TO_RAD) * d;
-        pt2.y = pt1.y + sin(a1 * DEG_TO_RAD) * d;
+        pt2.x = pt1.x + qCos(a1 * DEG_TO_RAD) * d;
+        pt2.y = pt1.y + qSin(a1 * DEG_TO_RAD) * d;
 
         // test for waypoint close by
         for(int n = 0; n < trkwpts.size(); n++)
diff --git a/src/gis/trk/IDetailsTrk.ui b/src/gis/trk/IDetailsTrk.ui
index 05c006c..2bc6538 100644
--- a/src/gis/trk/IDetailsTrk.ui
+++ b/src/gis/trk/IDetailsTrk.ui
@@ -310,6 +310,9 @@
                <property name="alignment">
                 <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
                </property>
+               <property name="textInteractionFlags">
+                <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
+               </property>
               </widget>
              </item>
              <item>
diff --git a/src/gis/trk/IScrOptTrk.ui b/src/gis/trk/IScrOptTrk.ui
index 633b98a..0f6dab3 100644
--- a/src/gis/trk/IScrOptTrk.ui
+++ b/src/gis/trk/IScrOptTrk.ui
@@ -190,6 +190,9 @@
      <property name="text">
       <string>TextLabel</string>
      </property>
+     <property name="textInteractionFlags">
+      <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
+     </property>
     </widget>
    </item>
   </layout>
diff --git a/src/gis/trk/filter/filter.cpp b/src/gis/trk/filter/filter.cpp
index 323c4a0..587aa4e 100644
--- a/src/gis/trk/filter/filter.cpp
+++ b/src/gis/trk/filter/filter.cpp
@@ -20,6 +20,7 @@
 #include "GeoMath.h"
 #include "gis/trk/CGisItemTrk.h"
 
+#include <QtMath>
 #include <proj_api.h>
 
 void CGisItemTrk::filterReducePoints(qreal dist)
@@ -59,8 +60,8 @@ void CGisItemTrk::filterReducePoints(qreal dist)
 
         pt0 = pt2;
 
-        pt2.x = pt1.x + cos(a1 * DEG_TO_RAD) * d;
-        pt2.y = pt1.y + sin(a1 * DEG_TO_RAD) * d;
+        pt2.x = pt1.x + qCos(a1 * DEG_TO_RAD) * d;
+        pt2.y = pt1.y + qSin(a1 * DEG_TO_RAD) * d;
     }
 
     GPS_Math_DouglasPeucker(line, dist);
diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
index 9d26201..60895d9 100644
--- a/src/gis/wpt/CDetailsWpt.cpp
+++ b/src/gis/wpt/CDetailsWpt.cpp
@@ -42,6 +42,12 @@ CDetailsWpt::CDetailsWpt(CGisItemWpt &wpt, QWidget *parent)
     photoAlbum->hide();
 
     setupGui();
+
+    if(wpt.isOnDevice())
+    {
+        toolLock->setDisabled(true);
+    }
+
     connect(labelName, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
     connect(labelPositon, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
     connect(labelElevation, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
diff --git a/src/gis/wpt/IScrOptWpt.ui b/src/gis/wpt/IScrOptWpt.ui
index 038b696..ca88da2 100644
--- a/src/gis/wpt/IScrOptWpt.ui
+++ b/src/gis/wpt/IScrOptWpt.ui
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>500</width>
-    <height>72</height>
+    <height>153</height>
    </rect>
   </property>
   <property name="sizePolicy">
@@ -161,6 +161,9 @@
      <property name="wordWrap">
       <bool>true</bool>
      </property>
+     <property name="textInteractionFlags">
+      <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
+     </property>
     </widget>
    </item>
    <item>
diff --git a/src/grid/CGrid.cpp b/src/grid/CGrid.cpp
index 1b50fa6..165dfa1 100644
--- a/src/grid/CGrid.cpp
+++ b/src/grid/CGrid.cpp
@@ -249,8 +249,8 @@ void CGrid::draw(QPainter& p, const QRect& rect)
     qreal yGridSpace = 1000;
     findGridSpace(leftMin, rightMax, xGridSpace, yGridSpace);
 
-    qreal xStart = floor(leftMin / xGridSpace) * xGridSpace;
-    qreal yStart = ceil(topMax / yGridSpace) * yGridSpace;
+    qreal xStart = qFloor(leftMin / xGridSpace) * xGridSpace;
+    qreal yStart = qCeil(topMax / yGridSpace) * yGridSpace;
 
     qreal x = xStart - xGridSpace;
     qreal y = yStart + yGridSpace;
diff --git a/src/helpers/CHistoryListWidget.cpp b/src/helpers/CHistoryListWidget.cpp
index b04b6e8..79d20a9 100644
--- a/src/helpers/CHistoryListWidget.cpp
+++ b/src/helpers/CHistoryListWidget.cpp
@@ -17,6 +17,7 @@
 **********************************************************************************************/
 
 #include "gis/CGisWidget.h"
+#include "gis/prj/IGisProject.h"
 #include "helpers/CHistoryListWidget.h"
 
 #include <QtWidgets>
@@ -114,7 +115,11 @@ void CHistoryListWidget::slotCutHistory()
 
     item->cutHistory();
     item->setText(CGisListWks::eColumnDecoration,"*");
-    item->parent()->setText(CGisListWks::eColumnDecoration,"*");
+    IGisProject * project = dynamic_cast<IGisProject*>(item->parent());
+    if(project)
+    {
+        project->setChanged();
+    }
 
     emit sigChanged();
 }
diff --git a/src/helpers/CPhotoViewer.cpp b/src/helpers/CPhotoViewer.cpp
index cf4c419..85b8a26 100644
--- a/src/helpers/CPhotoViewer.cpp
+++ b/src/helpers/CPhotoViewer.cpp
@@ -78,14 +78,14 @@ void CPhotoViewer::setImageAtIdx(int i)
         {
             double ratio = width / rectImage.width();
             rectImage.setWidth(width);
-            rectImage.setHeight(floor(rectImage.height() * ratio) - 1);
+            rectImage.setHeight(qFloor(rectImage.height() * ratio) - 1);
         }
 
         if(pixmap.height() > height)
         {
             double ratio = height / rectImage.height();
             rectImage.setHeight(height);
-            rectImage.setWidth(floor(rectImage.width() * ratio) - 1);
+            rectImage.setWidth(qFloor(rectImage.width() * ratio) - 1);
         }
 
         rectImage.moveCenter(center);
diff --git a/src/helpers/Platform.h b/src/helpers/Platform.h
index 53fecd1..0194297 100644
--- a/src/helpers/Platform.h
+++ b/src/helpers/Platform.h
@@ -111,7 +111,7 @@ typedef unsigned __int16 uint16_t;
 typedef unsigned __int32 uint32_t;
 typedef unsigned __int64 uint64_t;
 
-#define isnan(x) _isnan(x)
+#define qIsNaN(x) _isnan(x)
 
 #else
 #  error neither inttypes.h nor stdint.h are available
diff --git a/src/icons/32x32/Save.png b/src/icons/32x32/Save.png
new file mode 100644
index 0000000..9db5fc2
Binary files /dev/null and b/src/icons/32x32/Save.png differ
diff --git a/src/icons/48x48/Save.png b/src/icons/48x48/Save.png
new file mode 100644
index 0000000..5d2b74d
Binary files /dev/null and b/src/icons/48x48/Save.png differ
diff --git a/src/icons/Save.svg b/src/icons/Save.svg
new file mode 100644
index 0000000..984481c
--- /dev/null
+++ b/src/icons/Save.svg
@@ -0,0 +1,108 @@
+<?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="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="Save.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6"
+     inkscape:cx="-19.522074"
+     inkscape:cy="39.059244"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1012"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot3859"
+       style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:12px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion
+         id="flowRegion3861"><rect
+           id="rect3863"
+           width="75.35714"
+           height="62.142857"
+           x="-9.4642859"
+           y="2.2142856" /></flowRegion><flowPara
+         id="flowPara3865" /></flowRoot>    <g
+       id="g4549"
+       transform="matrix(1.3333333,0,0,1.3333335,78.423613,-333.00436)">
+      <rect
+         y="998.10114"
+         x="-49.82143"
+         height="29.999996"
+         width="30"
+         id="rect3366-5"
+         style="fill:#000080;fill-opacity:1;stroke:#0000ff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+      <rect
+         y="1017.6011"
+         x="-44.464287"
+         height="10.499999"
+         width="19.5"
+         id="rect4136-7"
+         style="fill:#cccccc;fill-opacity:1;stroke:#0000ff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+      <rect
+         y="1020.2748"
+         x="-40.067711"
+         height="5.0856576"
+         width="3.8534257"
+         id="rect4138-5"
+         style="fill:#000080;fill-opacity:1;stroke:#0000ff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+      <rect
+         y="1000.1259"
+         x="-45.793831"
+         height="14.050763"
+         width="21.944799"
+         id="rect4145-7"
+         style="fill:#ececec;fill-opacity:1;stroke:#0000ff;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/src/locale/qmapshack_cs.ts b/src/locale/qmapshack_cs.ts
index a66473e..ce46292 100644
--- a/src/locale/qmapshack_cs.ts
+++ b/src/locale/qmapshack_cs.ts
@@ -101,12 +101,12 @@
 <context>
     <name>CDetailsOvlArea</name>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
+        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="136"/>
         <source>Edit name...</source>
         <translation>Upravit název...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
+        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="136"/>
         <source>Enter new area name.</source>
         <translation type="unfinished">Zadat název nové oblasti.</translation>
     </message>
@@ -209,42 +209,42 @@
 <context>
     <name>CDetailsTrk</name>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="57"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="62"/>
         <source>Reduce visible track points</source>
         <translation>Omezit počet viditelných bodů stopy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="70"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="75"/>
         <source>Change elevation of track points</source>
         <translation>Změnit informace o výškách bodů stopy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="83"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="88"/>
         <source>Change timestamp of track points</source>
         <translation>Změnit časová razítka bodů stopy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="96"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="101"/>
         <source>Cut track into pieces</source>
         <translation>Rozkrájet stopu na kusy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="210"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="219"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="222"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="228"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="247"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="249"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="215"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="224"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="227"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="233"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="252"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="254"/>
         <source>%1 %2</source>
         <translation>%1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="363"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="368"/>
         <source>Edit name...</source>
         <translation type="unfinished">Upravit název...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="363"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="368"/>
         <source>Enter new track name.</source>
         <translation type="unfinished">Zadat název nové stopy.</translation>
     </message>
@@ -284,12 +284,12 @@
         <translation type="obsolete"><p>--- žádný popis ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="151"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="157"/>
         <source>Edit name...</source>
         <translation>Upravit název...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="151"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="157"/>
         <source>Enter new waypoint name.</source>
         <translation>Zadat nový cestovní bod.</translation>
     </message>
@@ -298,7 +298,7 @@
         <translation type="obsolete">Zadat novou výšku.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="170"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="176"/>
         <source>Enter new proximity range.</source>
         <translation>Zadat nový rozsah blízkosti.</translation>
     </message>
@@ -434,8 +434,8 @@
         <translation>Promítnutí cestovního bodu...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1215"/>
-        <location filename="../gis/CGisListWks.cpp" line="1253"/>
+        <location filename="../gis/CGisListWks.cpp" line="1214"/>
+        <location filename="../gis/CGisListWks.cpp" line="1252"/>
         <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
         <translation><b>Aktualizovat zařízení</b><p>Aktualizovat %1<br/>Počkejte, prosím...</p></translation>
     </message>
@@ -476,22 +476,22 @@
         <translation>Smazat</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="673"/>
+        <location filename="../gis/CGisListWks.cpp" line="672"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Ukládá se pohled. Počkejte, prosím.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="714"/>
+        <location filename="../gis/CGisListWks.cpp" line="713"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Nahrává se pohled. Počkejte, prosím.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1163"/>
+        <location filename="../gis/CGisListWks.cpp" line="1162"/>
         <source>Close all projects...</source>
         <translation>Zavřít všechny projekty...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1163"/>
+        <location filename="../gis/CGisListWks.cpp" line="1162"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Tímto budou všechny projekty odstraněny z pohledu.</translation>
     </message>
@@ -529,7 +529,7 @@
 <context>
     <name>CHistoryListWidget</name>
     <message>
-        <location filename="../helpers/CHistoryListWidget.cpp" line="33"/>
+        <location filename="../helpers/CHistoryListWidget.cpp" line="34"/>
         <source>Cut history</source>
         <translation>Vyjmout historii</translation>
     </message>
@@ -555,15 +555,25 @@
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="461"/>
+        <location filename="../CMainWindow.cpp" line="466"/>
         <source>Ele: %1%2</source>
         <translation>Výška: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="587"/>
+        <location filename="../CMainWindow.cpp" line="592"/>
         <source>Load GIS Data...</source>
         <translation>Nahrát data GIS...</translation>
     </message>
+    <message>
+        <location filename="../CMainWindow.cpp" line="626"/>
+        <source>Select output file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../CMainWindow.cpp" line="652"/>
+        <source>Select file to load</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CMapIMG</name>
@@ -1490,12 +1500,12 @@ Neznámá stavba.</translation>
 <context>
     <name>CPlotDistance</name>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="53"/>
+        <location filename="../plot/CPlotDistance.cpp" line="58"/>
         <source>distance [%1]</source>
         <translation>Vzdálenost [%1]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="57"/>
+        <location filename="../plot/CPlotDistance.cpp" line="62"/>
         <source>time</source>
         <translation>Čas</translation>
     </message>
@@ -1504,7 +1514,7 @@ Neznámá stavba.</translation>
         <translation type="obsolete">Čas [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="59"/>
+        <location filename="../plot/CPlotDistance.cpp" line="64"/>
         <source>distance. [%1]</source>
         <translation>Vzdálenost [%1]</translation>
     </message>
@@ -1530,17 +1540,17 @@ Neznámá stavba.</translation>
 <context>
     <name>CPlotSpeed</name>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="52"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="57"/>
         <source>distance [%1]</source>
         <translation>Vzdálenost [%1]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="56"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="61"/>
         <source>time [h]</source>
         <translation>Čas [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="58"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="63"/>
         <source>speed. [%1]</source>
         <translation>Rychlost [%1]</translation>
     </message>
@@ -2181,7 +2191,7 @@ není platným vymezením soustavy souřadnic
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="210"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="443"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="446"/>
         <source>Speed</source>
         <translation>Rychlost</translation>
     </message>
@@ -2201,52 +2211,52 @@ není platným vymezením soustavy souřadnic
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="375"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="378"/>
         <source>Points</source>
         <translation>Body</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="423"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="426"/>
         <source>Time</source>
         <translation>Čas</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="428"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="431"/>
         <source>Ele.</source>
         <translation>Výška</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="433"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="436"/>
         <source>Delta</source>
         <translation>Rozdíl</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="438"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="441"/>
         <source>Dist.</source>
         <translation>Vzdál.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="448"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="451"/>
         <source>Slope</source>
         <translation>Sklon</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="453"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="456"/>
         <source>Ascend</source>
         <translation>Stoupání</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="458"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="461"/>
         <source>Descend</source>
         <translation>Klesání</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="463"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="466"/>
         <source>Position</source>
         <translation>Poloha</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="347"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="350"/>
         <source>Info</source>
         <translation>Informace</translation>
     </message>
@@ -2256,12 +2266,12 @@ není platným vymezením soustavy souřadnic
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="472"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="475"/>
         <source>Filter</source>
         <translation>Filtr</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="509"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="512"/>
         <source>Hist.</source>
         <translation>Hist.</translation>
     </message>
@@ -2760,42 +2770,42 @@ není platným vymezením soustavy souřadnic
         <translation>Soubor</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="70"/>
+        <location filename="../IMainWindow.ui" line="73"/>
         <source>View</source>
         <translation>Pohled</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="89"/>
+        <location filename="../IMainWindow.ui" line="92"/>
         <source>Window</source>
         <translation>Okno</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="94"/>
+        <location filename="../IMainWindow.ui" line="97"/>
         <source>?</source>
         <translation>Nápověda</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="101"/>
+        <location filename="../IMainWindow.ui" line="104"/>
         <source>Project</source>
         <translation>Projekt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="111"/>
+        <location filename="../IMainWindow.ui" line="114"/>
         <source>Tool</source>
         <translation>Nástroj</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="129"/>
+        <location filename="../IMainWindow.ui" line="132"/>
         <source>Maps</source>
         <translation>Mapy</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="166"/>
+        <location filename="../IMainWindow.ui" line="169"/>
         <source>Dig. Elev. Model (DEM)</source>
         <translation>Digitální výškový model (DEM)</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="199"/>
+        <location filename="../IMainWindow.ui" line="202"/>
         <source>Data</source>
         <translation>Data</translation>
     </message>
@@ -2804,78 +2814,78 @@ není platným vymezením soustavy souřadnic
         <translation type="obsolete">Přidat pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="218"/>
+        <location filename="../IMainWindow.ui" line="221"/>
         <source>Ctrl+T</source>
         <translation>Ctrl+T</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="230"/>
+        <location filename="../IMainWindow.ui" line="233"/>
         <source>Show Scale</source>
         <translation>Ukázat měřítko</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="239"/>
+        <location filename="../IMainWindow.ui" line="242"/>
         <source>Setup Map Font</source>
         <translation>Nastavit písmo mapy</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="251"/>
+        <location filename="../IMainWindow.ui" line="254"/>
         <source>Show Grid</source>
         <translation>Ukázat mřížku</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="254"/>
+        <location filename="../IMainWindow.ui" line="257"/>
         <source>Ctrl+G</source>
         <translation>Ctrl+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="263"/>
+        <location filename="../IMainWindow.ui" line="266"/>
         <source>Setup Grid</source>
         <translation>Nastavit mřížku</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="266"/>
+        <location filename="../IMainWindow.ui" line="269"/>
         <source>Ctrl+Alt+G</source>
         <translation>Ctrl+Alt+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="278"/>
+        <location filename="../IMainWindow.ui" line="281"/>
         <source>Flip Mouse Wheel</source>
         <translation>Obrátit kolečko myši</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="287"/>
         <location filename="../IMainWindow.ui" line="290"/>
+        <location filename="../IMainWindow.ui" line="293"/>
         <source>Setup Map Paths</source>
         <translation>Nastavit cesty k mapám</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="302"/>
+        <location filename="../IMainWindow.ui" line="305"/>
         <source>POI Text</source>
         <translation>Text POI</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="314"/>
+        <location filename="../IMainWindow.ui" line="317"/>
         <source>Night / Day</source>
         <translation>Noc/Den</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="326"/>
+        <location filename="../IMainWindow.ui" line="329"/>
         <source>Map Tool Tip</source>
         <translation>Rada k nástroji pro mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="335"/>
+        <location filename="../IMainWindow.ui" line="338"/>
         <source>Setup DEM Paths</source>
         <translation>Nastavit cesty k DEM</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="344"/>
+        <location filename="../IMainWindow.ui" line="347"/>
         <source>About</source>
         <translation>O programu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="353"/>
+        <location filename="../IMainWindow.ui" line="356"/>
         <source>Help</source>
         <translation>Nápověda</translation>
     </message>
@@ -2884,108 +2894,128 @@ není platným vymezením soustavy souřadnic
         <translation type="obsolete">Nastavit pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="212"/>
         <location filename="../IMainWindow.ui" line="215"/>
+        <location filename="../IMainWindow.ui" line="218"/>
         <source>Add Map View</source>
         <translation>Přidat pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="362"/>
         <location filename="../IMainWindow.ui" line="365"/>
+        <location filename="../IMainWindow.ui" line="368"/>
         <source>Setup Map View</source>
         <translation>Nastavit pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="374"/>
+        <location filename="../IMainWindow.ui" line="377"/>
         <source>Load GIS Data</source>
         <translation>Nahrát data GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="377"/>
+        <location filename="../IMainWindow.ui" line="380"/>
         <source>Load projects from file</source>
         <translation>Nahrát projekty ze souboru</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="380"/>
+        <location filename="../IMainWindow.ui" line="383"/>
         <source>Ctrl+L</source>
         <translation>Ctrl+L</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="389"/>
+        <location filename="../IMainWindow.ui" line="392"/>
         <source>Save All GIS Data</source>
         <translation>Uložit všechna data GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="392"/>
+        <location filename="../IMainWindow.ui" line="395"/>
         <source>Save all projects in the workspace</source>
         <translation>Uložit všechny projekty na pracovním místě</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="395"/>
+        <location filename="../IMainWindow.ui" line="398"/>
         <source>Ctrl+S</source>
         <translation>Ctrl+S</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="404"/>
+        <location filename="../IMainWindow.ui" line="407"/>
         <source>Setup Time Zone</source>
         <translation>Nastavit časové pásmo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="413"/>
+        <location filename="../IMainWindow.ui" line="416"/>
         <source>Add empty project</source>
         <translation>Přidat prázdný projekt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="425"/>
+        <location filename="../IMainWindow.ui" line="428"/>
         <source>Search Google</source>
         <translation>Hledat pomocí Google</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="434"/>
+        <location filename="../IMainWindow.ui" line="437"/>
         <source>Close all projects</source>
         <translation>Zavřít všechny projekty</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="437"/>
+        <location filename="../IMainWindow.ui" line="440"/>
         <source>F8</source>
         <translation>F8</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="446"/>
+        <location filename="../IMainWindow.ui" line="449"/>
         <source>Setup Units</source>
         <translation>Nastavit jednotky</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="455"/>
+        <location filename="../IMainWindow.ui" line="458"/>
         <source>Setup Workspace</source>
         <translation>Nastavit pohled</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="458"/>
+        <location filename="../IMainWindow.ui" line="461"/>
         <source>Setup save on exit.</source>
         <translation>Nastavit uložení při ukončení.</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="467"/>
+        <location filename="../IMainWindow.ui" line="470"/>
         <source>Import Database from QLandkarte</source>
         <translation>Zavést databázi z QLandkarte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="470"/>
+        <location filename="../IMainWindow.ui" line="473"/>
         <source>Import QLandkarte GT database</source>
         <translation>Zavést databázi GT QLandkarte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="479"/>
+        <location filename="../IMainWindow.ui" line="482"/>
         <source>VRT Builder</source>
         <translation>Sestavovač VRT</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="482"/>
+        <location filename="../IMainWindow.ui" line="485"/>
         <source>GUI front end to gdalbuildvrt</source>
         <translation>Rozhraní pro gdalbuildvrt</translation>
     </message>
     <message>
+        <location filename="../IMainWindow.ui" line="494"/>
+        <source>Store Map View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="497"/>
+        <source>Write current active map and DEM list including the properties to a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="506"/>
+        <source>Load Map View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="509"/>
+        <source>Restore view with active map and DEM list including the properties from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Setup Database</source>
         <translation type="obsolete">Nastavit databázi</translation>
     </message>
@@ -3186,10 +3216,20 @@ není platným vymezením soustavy souřadnic
 <context>
     <name>IPlot</name>
     <message>
-        <location filename="../plot/IPlot.cpp" line="481"/>
+        <location filename="../plot/IPlot.cpp" line="92"/>
+        <source>Save...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../plot/IPlot.cpp" line="482"/>
         <source>No or bad data.</source>
         <translation>Žádné nebo špatné údaje.</translation>
     </message>
+    <message>
+        <location filename="../plot/IPlot.cpp" line="875"/>
+        <source>Select output file</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IPositionDialog</name>
@@ -4016,18 +4056,18 @@ nebo
 <context>
     <name>QObject</name>
     <message>
-        <location filename="../GeoMath.cpp" line="160"/>
-        <location filename="../GeoMath.cpp" line="166"/>
+        <location filename="../GeoMath.cpp" line="159"/>
+        <location filename="../GeoMath.cpp" line="165"/>
         <source>Error</source>
         <translation>Chyba</translation>
     </message>
     <message>
-        <location filename="../GeoMath.cpp" line="160"/>
+        <location filename="../GeoMath.cpp" line="159"/>
         <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
         <translation>Špatný polohový formát. Musí být: "[N|S] ddd mm.sss [W|E] ddd mm.sss" nebo "[N|S] ddd.ddd [W|E] ddd.ddd"</translation>
     </message>
     <message>
-        <location filename="../GeoMath.cpp" line="166"/>
+        <location filename="../GeoMath.cpp" line="165"/>
         <source>Position values out of bounds. </source>
         <translation>Polohy mimo platné hodnoty. </translation>
     </message>
@@ -4086,34 +4126,34 @@ Areas: %1</source>
 Oblasti: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="208"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="218"/>
         <source><br/>
 Filename: %1</source>
         <translation><br/>
 Název souboru: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="225"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="235"/>
         <source>Waypoints: %1</source>
         <translation>Cestovní body: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="229"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="239"/>
         <source>Tracks: %1</source>
         <translation>Stopy: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="233"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="243"/>
         <source>Routes: %1</source>
         <translation>Cesty: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="237"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="247"/>
         <source>Areas: %1</source>
         <translation>Oblasti: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="293"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="308"/>
         <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>
@@ -4124,7 +4164,7 @@ Název souboru: %1</translation>
     </message>
     <message>
         <location filename="../gis/CGisListDB.cpp" line="408"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="294"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="309"/>
         <source>Delete...</source>
         <translation>Smazat...</translation>
     </message>
@@ -4191,46 +4231,46 @@ Název souboru: %1</translation>
         <translation>Počáteční verze.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="407"/>
+        <location filename="../gis/IGisItem.cpp" line="412"/>
         <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="408"/>
+        <location filename="../gis/IGisItem.cpp" line="413"/>
         <source>Read Only Mode...</source>
         <translation>Režim pouze pro čtení...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="613"/>
+        <location filename="../gis/IGisItem.cpp" line="619"/>
         <source><h4>Comment:</h4></source>
         <translation><h4>Poznámka:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="616"/>
+        <location filename="../gis/IGisItem.cpp" line="622"/>
         <source><p>--- no comment ---</p></source>
         <translation><p>--- žádná poznámka ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="627"/>
-        <location filename="../gis/IGisItem.cpp" line="672"/>
+        <location filename="../gis/IGisItem.cpp" line="633"/>
+        <location filename="../gis/IGisItem.cpp" line="678"/>
         <source><h4>Description:</h4></source>
         <translation><h4>Popis:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="630"/>
-        <location filename="../gis/IGisItem.cpp" line="675"/>
+        <location filename="../gis/IGisItem.cpp" line="636"/>
+        <location filename="../gis/IGisItem.cpp" line="681"/>
         <source><p>--- no description ---</p></source>
         <translation><p>--- žádný popis ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="641"/>
-        <location filename="../gis/IGisItem.cpp" line="686"/>
+        <location filename="../gis/IGisItem.cpp" line="647"/>
+        <location filename="../gis/IGisItem.cpp" line="692"/>
         <source><h4>Links:</h4></source>
         <translation><h4>Odkazy:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="644"/>
-        <location filename="../gis/IGisItem.cpp" line="689"/>
+        <location filename="../gis/IGisItem.cpp" line="650"/>
+        <location filename="../gis/IGisItem.cpp" line="695"/>
         <source><p>--- no links ---</p></source>
         <translation><p>--- žádné odkazy ---</p></translation>
     </message>
@@ -4605,62 +4645,62 @@ Název souboru: %1</translation>
         <translation>Počet bodů stopy neodpovídá počtu stínových bodů stopy.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="95"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="96"/>
         <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
         <translation>Skrýt body pomocí algoritmu Douglas Peuker (%1%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="111"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="112"/>
         <source>Reset all hidden track points to visible</source>
         <translation>Nastavit znovu všechny skryté body stopy na viditelné</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="136"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="137"/>
         <source>Permanently removed all hidden track points</source>
         <translation>Všechny skryté body stopy odstraněny trvale</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="186"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="187"/>
         <source>Smoothed profile with a Median filter of size %1</source>
         <translation>Profil vyhlazen středovým filtrem o velikosti %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="222"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="223"/>
         <source>Replaced elevation data with data from DEM files.</source>
         <translation>Výšková data nahrazena daty ze souborů s digitálním výškovým modelem.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="245"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="246"/>
         <source>Offset elevation data by %1%2.</source>
         <translation>Výšková data posunuta o %1%2.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="264"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="265"/>
         <source>Changed start of track to %1.</source>
         <translation>Začátek stopy změněn na %1.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="283"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="284"/>
         <source>Remove timestamps.</source>
         <translation>Odstranit časová razítka.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="306"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="307"/>
         <source>Set artificial timestamps with delta of %1 sec.</source>
         <translation>Uměle utvořená časová razítka nastavena s odstupem %1 s.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="339"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="340"/>
         <source>Changed speed to %1%2.</source>
         <translation>Rychlost změněna na %1%2.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="897"/>
+        <location filename="../gis/CGisListWks.cpp" line="896"/>
         <source>Delete project...</source>
         <translation>Smazat projekt...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="897"/>
+        <location filename="../gis/CGisListWks.cpp" line="896"/>
         <source>Do you really want to delete %1?</source>
         <translation>Opravdu chcete smazat %1?</translation>
     </message>
@@ -4707,7 +4747,7 @@ Název souboru: %1</translation>
         <translation>Nepodařilo se přečíst data.</translation>
     </message>
     <message>
-        <location filename="../device/CDeviceGarmin.cpp" line="191"/>
+        <location filename="../device/CDeviceGarmin.cpp" line="202"/>
         <source>Picture%1</source>
         <translation>Obrázek %1</translation>
     </message>
diff --git a/src/locale/qmapshack_de.ts b/src/locale/qmapshack_de.ts
index 1c49dbc..ec21684 100644
--- a/src/locale/qmapshack_de.ts
+++ b/src/locale/qmapshack_de.ts
@@ -105,18 +105,18 @@
 <context>
     <name>CDetailsOvlArea</name>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
+        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="136"/>
         <source>Edit name...</source>
         <translation>Name bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
+        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="136"/>
         <source>Enter new area name.</source>
         <translation>Geben Sie einen neuen Namen für das Gebiet ein.</translation>
     </message>
     <message>
         <source>Enter new waypoint name.</source>
-        <translation>Geben Sie einen neuen Namen für den Wegpunkt ein.</translation>
+        <translation type="vanished">Geben Sie einen neuen Namen für den Wegpunkt ein.</translation>
     </message>
     <message>
         <source><h4>Comment:</h4></source>
@@ -217,42 +217,42 @@
 <context>
     <name>CDetailsTrk</name>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="57"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="62"/>
         <source>Reduce visible track points</source>
         <translation>Sichtbare Trackpunkte reduzieren</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="70"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="75"/>
         <source>Change elevation of track points</source>
         <translation>Höhe von Trackpunkten ändern</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="83"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="88"/>
         <source>Change timestamp of track points</source>
         <translation>Zeitstempel von Trackpunkten ändern</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="96"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="101"/>
         <source>Cut track into pieces</source>
         <translation>Track in Stücke teilen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="210"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="219"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="222"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="228"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="247"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="249"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="215"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="224"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="227"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="233"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="252"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="254"/>
         <source>%1 %2</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="363"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="368"/>
         <source>Edit name...</source>
         <translation>Name bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="363"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="368"/>
         <source>Enter new track name.</source>
         <translation>Geben Sie einen neuen Namen für den Track ein.</translation>
     </message>
@@ -300,12 +300,12 @@
         <translation type="obsolete"><p>--- keine Beschreibung ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="151"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="157"/>
         <source>Edit name...</source>
         <translation>Name bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="151"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="157"/>
         <source>Enter new waypoint name.</source>
         <translation>Geben Sie einen neuen Namen für den Wegpunkt ein.</translation>
     </message>
@@ -314,7 +314,7 @@
         <translation type="obsolete">Geben Sie eine neue Höhe ein.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="170"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="176"/>
         <source>Enter new proximity range.</source>
         <translation>Geben Sie einen neuen Abstandsalarm ein.</translation>
     </message>
@@ -457,8 +457,8 @@
         <translation>Wegpunkt verschieben</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1215"/>
-        <location filename="../gis/CGisListWks.cpp" line="1253"/>
+        <location filename="../gis/CGisListWks.cpp" line="1214"/>
+        <location filename="../gis/CGisListWks.cpp" line="1252"/>
         <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
         <translation><b>Aktualisieren der Geräte</b><p>Aktualisiere %1<br/>Bitte warten...</p></translation>
     </message>
@@ -508,22 +508,22 @@
         <translation>Löschen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="673"/>
+        <location filename="../gis/CGisListWks.cpp" line="672"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Ansicht speichern. Bitte warten.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="714"/>
+        <location filename="../gis/CGisListWks.cpp" line="713"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Ansicht laden. Bitte warten.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1163"/>
+        <location filename="../gis/CGisListWks.cpp" line="1162"/>
         <source>Close all projects...</source>
         <translation>Alle Projekte schließen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1163"/>
+        <location filename="../gis/CGisListWks.cpp" line="1162"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Dies wird alle Projekte aus der Ansicht entfernen.</translation>
     </message>
@@ -569,7 +569,7 @@
 <context>
     <name>CHistoryListWidget</name>
     <message>
-        <location filename="../helpers/CHistoryListWidget.cpp" line="33"/>
+        <location filename="../helpers/CHistoryListWidget.cpp" line="34"/>
         <source>Cut history</source>
         <translation>Historie kürzen</translation>
     </message>
@@ -603,15 +603,25 @@
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="461"/>
+        <location filename="../CMainWindow.cpp" line="466"/>
         <source>Ele: %1%2</source>
         <translation>Höhe: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="587"/>
+        <location filename="../CMainWindow.cpp" line="592"/>
         <source>Load GIS Data...</source>
         <translation>GIS Daten laden...</translation>
     </message>
+    <message>
+        <location filename="../CMainWindow.cpp" line="626"/>
+        <source>Select output file</source>
+        <translation>Ausgabedatei auswählen</translation>
+    </message>
+    <message>
+        <location filename="../CMainWindow.cpp" line="652"/>
+        <source>Select file to load</source>
+        <translation>Zu ladende Datei auswählen</translation>
+    </message>
 </context>
 <context>
     <name>CMapIMG</name>
@@ -1298,7 +1308,7 @@
     <name>CMapPropSetup</name>
     <message>
         <source>Cache path...</source>
-        <translation>Cache Pfad...</translation>
+        <translation type="vanished">Cache Pfad...</translation>
     </message>
 </context>
 <context>
@@ -1569,12 +1579,12 @@ Unbekannte Struktur.</translation>
 <context>
     <name>CPlotDistance</name>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="53"/>
+        <location filename="../plot/CPlotDistance.cpp" line="58"/>
         <source>distance [%1]</source>
         <translation>Entf. [%1]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="57"/>
+        <location filename="../plot/CPlotDistance.cpp" line="62"/>
         <source>time</source>
         <translation>Uhrzeit</translation>
     </message>
@@ -1583,7 +1593,7 @@ Unbekannte Struktur.</translation>
         <translation type="obsolete">Uhrzeit</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="59"/>
+        <location filename="../plot/CPlotDistance.cpp" line="64"/>
         <source>distance. [%1]</source>
         <translation>Entf. [%1]</translation>
     </message>
@@ -1609,17 +1619,17 @@ Unbekannte Struktur.</translation>
 <context>
     <name>CPlotSpeed</name>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="52"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="57"/>
         <source>distance [%1]</source>
         <translation>Entfernung [%1]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="56"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="61"/>
         <source>time [h]</source>
         <translation>Zeit [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="58"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="63"/>
         <source>speed. [%1]</source>
         <translation>Geschw. [%1]</translation>
     </message>
@@ -2263,7 +2273,7 @@ ist keine gültige Koordinatensystemdefinition:
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="210"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="443"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="446"/>
         <source>Speed</source>
         <translation>Geschw.</translation>
     </message>
@@ -2283,52 +2293,52 @@ ist keine gültige Koordinatensystemdefinition:
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="375"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="378"/>
         <source>Points</source>
         <translation>Punkte</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="423"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="426"/>
         <source>Time</source>
         <translation>Zeit</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="428"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="431"/>
         <source>Ele.</source>
         <translation>Höhe</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="433"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="436"/>
         <source>Delta</source>
         <translation>Delta</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="438"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="441"/>
         <source>Dist.</source>
         <translation>Entf.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="448"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="451"/>
         <source>Slope</source>
-        <translation>Hangneigung</translation>
+        <translation>Steigung</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="453"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="456"/>
         <source>Ascend</source>
         <translation>Anstieg</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="458"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="461"/>
         <source>Descend</source>
         <translation>Abstieg</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="463"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="466"/>
         <source>Position</source>
         <translation>Position</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="347"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="350"/>
         <source>Info</source>
         <translation>Info</translation>
     </message>
@@ -2338,12 +2348,12 @@ ist keine gültige Koordinatensystemdefinition:
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="472"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="475"/>
         <source>Filter</source>
         <translation>Filter</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="509"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="512"/>
         <source>Hist.</source>
         <translation>Hist.</translation>
     </message>
@@ -2854,42 +2864,42 @@ ist keine gültige Koordinatensystemdefinition:
         <translation>Datei</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="70"/>
+        <location filename="../IMainWindow.ui" line="73"/>
         <source>View</source>
         <translation>Ansicht</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="89"/>
+        <location filename="../IMainWindow.ui" line="92"/>
         <source>Window</source>
         <translation>Fenster</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="94"/>
+        <location filename="../IMainWindow.ui" line="97"/>
         <source>?</source>
         <translation>?</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="101"/>
+        <location filename="../IMainWindow.ui" line="104"/>
         <source>Project</source>
         <translation>Projekt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="111"/>
+        <location filename="../IMainWindow.ui" line="114"/>
         <source>Tool</source>
         <translation>Werkzeug</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="129"/>
+        <location filename="../IMainWindow.ui" line="132"/>
         <source>Maps</source>
         <translation>Karten</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="166"/>
+        <location filename="../IMainWindow.ui" line="169"/>
         <source>Dig. Elev. Model (DEM)</source>
         <translation>Dig. Höhenmodell (DEM)</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="199"/>
+        <location filename="../IMainWindow.ui" line="202"/>
         <source>Data</source>
         <translation>Daten</translation>
     </message>
@@ -2898,179 +2908,199 @@ ist keine gültige Koordinatensystemdefinition:
         <translation type="obsolete">Ansicht hinzufügen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="212"/>
         <location filename="../IMainWindow.ui" line="215"/>
+        <location filename="../IMainWindow.ui" line="218"/>
         <source>Add Map View</source>
         <translation>Kartenansicht hinzufügen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="218"/>
+        <location filename="../IMainWindow.ui" line="221"/>
         <source>Ctrl+T</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="230"/>
+        <location filename="../IMainWindow.ui" line="233"/>
         <source>Show Scale</source>
         <translation>Maßstab</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="239"/>
+        <location filename="../IMainWindow.ui" line="242"/>
         <source>Setup Map Font</source>
         <translation>Kartenfont einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="251"/>
+        <location filename="../IMainWindow.ui" line="254"/>
         <source>Show Grid</source>
         <translation>Gitter</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="254"/>
+        <location filename="../IMainWindow.ui" line="257"/>
         <source>Ctrl+G</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="263"/>
+        <location filename="../IMainWindow.ui" line="266"/>
         <source>Setup Grid</source>
         <translation>Gitter einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="266"/>
+        <location filename="../IMainWindow.ui" line="269"/>
         <source>Ctrl+Alt+G</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="278"/>
+        <location filename="../IMainWindow.ui" line="281"/>
         <source>Flip Mouse Wheel</source>
         <translation>Mausrad umdrehen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="287"/>
         <location filename="../IMainWindow.ui" line="290"/>
+        <location filename="../IMainWindow.ui" line="293"/>
         <source>Setup Map Paths</source>
         <translation>Kartenverzeichnisse angeben</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="302"/>
+        <location filename="../IMainWindow.ui" line="305"/>
         <source>POI Text</source>
         <translation>POI Text</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="314"/>
+        <location filename="../IMainWindow.ui" line="317"/>
         <source>Night / Day</source>
         <translation>Nacht / Tag</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="326"/>
+        <location filename="../IMainWindow.ui" line="329"/>
         <source>Map Tool Tip</source>
         <translation>Kartentooltip</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="335"/>
+        <location filename="../IMainWindow.ui" line="338"/>
         <source>Setup DEM Paths</source>
         <translation>DEM Verzeichnisse angeben</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="344"/>
+        <location filename="../IMainWindow.ui" line="347"/>
         <source>About</source>
         <translation>Über</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="353"/>
+        <location filename="../IMainWindow.ui" line="356"/>
         <source>Help</source>
         <translation>Hilfe</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="362"/>
         <location filename="../IMainWindow.ui" line="365"/>
+        <location filename="../IMainWindow.ui" line="368"/>
         <source>Setup Map View</source>
         <translation>Kartenansicht einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="479"/>
+        <location filename="../IMainWindow.ui" line="482"/>
         <source>VRT Builder</source>
         <translation>VRT Builder</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="482"/>
+        <location filename="../IMainWindow.ui" line="485"/>
         <source>GUI front end to gdalbuildvrt</source>
         <translation>Eine graphische Benutzerschnittstelle zu gdalbuildvrt </translation>
     </message>
     <message>
+        <location filename="../IMainWindow.ui" line="494"/>
+        <source>Store Map View</source>
+        <translation>Kartenansicht speichern</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="497"/>
+        <source>Write current active map and DEM list including the properties to a file</source>
+        <translation>Speichert die aktive Karten und DEM Dateien inklusive der Eigenschaften in einer Datei</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="506"/>
+        <source>Load Map View</source>
+        <translation>Kartenansicht laden</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="509"/>
+        <source>Restore view with active map and DEM list including the properties from a file</source>
+        <translation>Stellt die aktive Karten und DEM Dateien inklusive der Eigenschaften aus einer Datei wieder her</translation>
+    </message>
+    <message>
         <source>Setup Map Workspace</source>
         <translation type="obsolete">Arbeitsplatz einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="374"/>
+        <location filename="../IMainWindow.ui" line="377"/>
         <source>Load GIS Data</source>
         <translation>GIS Daten laden</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="377"/>
+        <location filename="../IMainWindow.ui" line="380"/>
         <source>Load projects from file</source>
         <translation>Lade Datei als Projekt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="380"/>
+        <location filename="../IMainWindow.ui" line="383"/>
         <source>Ctrl+L</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="389"/>
+        <location filename="../IMainWindow.ui" line="392"/>
         <source>Save All GIS Data</source>
         <translation>Alle GIS Daten speichern</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="392"/>
+        <location filename="../IMainWindow.ui" line="395"/>
         <source>Save all projects in the workspace</source>
         <translation>Alle Projekte im Arbeitsplatz speichern</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="395"/>
+        <location filename="../IMainWindow.ui" line="398"/>
         <source>Ctrl+S</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="404"/>
+        <location filename="../IMainWindow.ui" line="407"/>
         <source>Setup Time Zone</source>
         <translation>Zeitzone einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="413"/>
+        <location filename="../IMainWindow.ui" line="416"/>
         <source>Add empty project</source>
         <translation>Leeres Projekt hinzufügen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="425"/>
+        <location filename="../IMainWindow.ui" line="428"/>
         <source>Search Google</source>
         <translation>Mit Google suchen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="434"/>
+        <location filename="../IMainWindow.ui" line="437"/>
         <source>Close all projects</source>
         <translation>Alle Projekte schließen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="437"/>
+        <location filename="../IMainWindow.ui" line="440"/>
         <source>F8</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="446"/>
+        <location filename="../IMainWindow.ui" line="449"/>
         <source>Setup Units</source>
         <translation>Einheiten einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="455"/>
+        <location filename="../IMainWindow.ui" line="458"/>
         <source>Setup Workspace</source>
         <translation>Arbeitsplatz einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="458"/>
+        <location filename="../IMainWindow.ui" line="461"/>
         <source>Setup save on exit.</source>
         <translation>Speichert Einstellungen beim Beenden.</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="467"/>
+        <location filename="../IMainWindow.ui" line="470"/>
         <source>Import Database from QLandkarte</source>
         <translation>Datenbankimport aus QLandkarte</translation>
     </message>
@@ -3083,7 +3113,7 @@ ist keine gültige Koordinatensystemdefinition:
         <translation type="obsolete">Datenbank importieren</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="470"/>
+        <location filename="../IMainWindow.ui" line="473"/>
         <source>Import QLandkarte GT database</source>
         <translation>QLandkarte GT Datenbank importieren</translation>
     </message>
@@ -3284,10 +3314,20 @@ ist keine gültige Koordinatensystemdefinition:
 <context>
     <name>IPlot</name>
     <message>
-        <location filename="../plot/IPlot.cpp" line="481"/>
+        <location filename="../plot/IPlot.cpp" line="92"/>
+        <source>Save...</source>
+        <translation>Speichern ...</translation>
+    </message>
+    <message>
+        <location filename="../plot/IPlot.cpp" line="482"/>
         <source>No or bad data.</source>
         <translation>Keine oder schlechte Daten.</translation>
     </message>
+    <message>
+        <location filename="../plot/IPlot.cpp" line="875"/>
+        <source>Select output file</source>
+        <translation>Ausgabedatei auswählen</translation>
+    </message>
 </context>
 <context>
     <name>IPositionDialog</name>
@@ -4131,24 +4171,24 @@ sein</translation>
 <context>
     <name>QObject</name>
     <message>
-        <location filename="../GeoMath.cpp" line="160"/>
-        <location filename="../GeoMath.cpp" line="166"/>
+        <location filename="../GeoMath.cpp" line="159"/>
+        <location filename="../GeoMath.cpp" line="165"/>
         <source>Error</source>
         <translation>Fehler</translation>
     </message>
     <message>
-        <location filename="../GeoMath.cpp" line="160"/>
+        <location filename="../GeoMath.cpp" line="159"/>
         <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
         <translation>Falsches Positionsformat. Muss entweder "[N|S] ddd mm.sss [W|E] ddd mm.sss" oder "[N|S] ddd.ddd [W|E] ddd.ddd" sein.</translation>
     </message>
     <message>
-        <location filename="../GeoMath.cpp" line="166"/>
+        <location filename="../GeoMath.cpp" line="165"/>
         <source>Position values out of bounds. </source>
         <translation>Position außerhalb der gültigen Werte.</translation>
     </message>
     <message>
         <source>Bad position format. Must be: [N|S] ddd mm.sss [W|E] ddd mm.sss</source>
-        <translation>Falsches Positionsformat. Richtig: [N|S] ddd mm.sss [W|E] ddd mm.sss </translation>
+        <translation type="vanished">Falsches Positionsformat. Richtig: [N|S] ddd mm.sss [W|E] ddd mm.sss </translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="106"/>
@@ -4196,34 +4236,34 @@ Areas: %1</source>
         <translation type="obsolete">Fläche: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="208"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="218"/>
         <source><br/>
 Filename: %1</source>
         <translation><br/>
 Dateiname: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="225"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="235"/>
         <source>Waypoints: %1</source>
         <translation>Wegpunkte: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="229"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="239"/>
         <source>Tracks: %1</source>
         <translation>Tracks: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="233"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="243"/>
         <source>Routes: %1</source>
         <translation>Routen: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="237"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="247"/>
         <source>Areas: %1</source>
         <translation>Gebiete: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="293"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="308"/>
         <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>
@@ -4234,7 +4274,7 @@ Dateiname: %1</translation>
     </message>
     <message>
         <location filename="../gis/CGisListDB.cpp" line="408"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="294"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="309"/>
         <source>Delete...</source>
         <translation>Löschen...</translation>
     </message>
@@ -4349,7 +4389,7 @@ Dateiname: %1</translation>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="481"/>
         <source> slope: %1%3 (%2%)</source>
-        <translation>, Hangneigung: %1%3 (%2%)</translation>
+        <translation>, Steigung: %1%3 (%2%)</translation>
     </message>
     <message>
         <source> slope: %1° (%2%)</source>
@@ -4610,46 +4650,46 @@ Dateiname: %1</translation>
         <translation>Erstversion.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="407"/>
+        <location filename="../gis/IGisItem.cpp" line="412"/>
         <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="408"/>
+        <location filename="../gis/IGisItem.cpp" line="413"/>
         <source>Read Only Mode...</source>
         <translation>Schreibgeschützt...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="613"/>
+        <location filename="../gis/IGisItem.cpp" line="619"/>
         <source><h4>Comment:</h4></source>
         <translation><h4>Kommentar:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="616"/>
+        <location filename="../gis/IGisItem.cpp" line="622"/>
         <source><p>--- no comment ---</p></source>
         <translation><p>--- kein ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="627"/>
-        <location filename="../gis/IGisItem.cpp" line="672"/>
+        <location filename="../gis/IGisItem.cpp" line="633"/>
+        <location filename="../gis/IGisItem.cpp" line="678"/>
         <source><h4>Description:</h4></source>
         <translation><h4>Beschreibung:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="630"/>
-        <location filename="../gis/IGisItem.cpp" line="675"/>
+        <location filename="../gis/IGisItem.cpp" line="636"/>
+        <location filename="../gis/IGisItem.cpp" line="681"/>
         <source><p>--- no description ---</p></source>
         <translation><p>--- keine ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="641"/>
-        <location filename="../gis/IGisItem.cpp" line="686"/>
+        <location filename="../gis/IGisItem.cpp" line="647"/>
+        <location filename="../gis/IGisItem.cpp" line="692"/>
         <source><h4>Links:</h4></source>
         <translation><h4>Verknüpfungen:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="644"/>
-        <location filename="../gis/IGisItem.cpp" line="689"/>
+        <location filename="../gis/IGisItem.cpp" line="650"/>
+        <location filename="../gis/IGisItem.cpp" line="695"/>
         <source><p>--- no links ---</p></source>
         <translation><p>--- keine ---</p></translation>
     </message>
@@ -4719,68 +4759,68 @@ Dateiname: %1</translation>
         <translation>Anzahl der Trackpunkte entspricht nicht der Anzahl der ausgeblendeten Trackpunkte.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="95"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="96"/>
         <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
         <translation>Punkte ausblenden mit dem Douglas-Peuker Algorithmus (%1 %2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="111"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="112"/>
         <source>Reset all hidden track points to visible</source>
         <translation>Alle verborgenen Trackpunkte zurücksetzen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="136"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="137"/>
         <source>Permanently removed all hidden track points</source>
         <translation>Alle verborgenen Trackpunkte wurden dauerhaft entfernt</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="186"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="187"/>
         <source>Smoothed profile with a Median filter of size %1</source>
         <translation>Mit einem Median-Filter der Größe %1 geglättetes Profil</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="222"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="223"/>
         <source>Replaced elevation data with data from DEM files.</source>
         <translation>Höhendaten durch Daten von DEM Dateien ersetzt.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="245"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="246"/>
         <source>Offset elevation data by %1%2.</source>
         <translation>Versatz der Höhendaten um %1 %2.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="264"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="265"/>
         <source>Changed start of track to %1.</source>
         <translation>Trackanfang auf %1 verschoben.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="283"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="284"/>
         <source>Remove timestamps.</source>
         <translation>Zeitstempel entfernt.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="306"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="307"/>
         <source>Set artificial timestamps with delta of %1 sec.</source>
         <translation>Künstliche Zeitstempel mit einem Abstand von %1 Sek. gesetzt.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="339"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="340"/>
         <source>Changed speed to %1%2.</source>
         <translation>Geschwindigkeit auf %1 %2 geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="897"/>
+        <location filename="../gis/CGisListWks.cpp" line="896"/>
         <source>Delete project...</source>
         <translation>Projekt löschen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="897"/>
+        <location filename="../gis/CGisListWks.cpp" line="896"/>
         <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>Sind Sie sicher, dass sie %1 löschen wollen?</translation>
+        <translation type="vanished">Sind Sie sicher, dass sie %1 löschen wollen?</translation>
     </message>
     <message>
         <location filename="../gis/tnv/CTwoNavProject.cpp" line="85"/>
@@ -4825,7 +4865,7 @@ Dateiname: %1</translation>
         <translation>Datenlesen fehlgeschlagen.</translation>
     </message>
     <message>
-        <location filename="../device/CDeviceGarmin.cpp" line="191"/>
+        <location filename="../device/CDeviceGarmin.cpp" line="202"/>
         <source>Picture%1</source>
         <translation>Bild %1</translation>
     </message>
diff --git a/src/locale/qmapshack_es.ts b/src/locale/qmapshack_es.ts
index b701628..d6ca066 100644
--- a/src/locale/qmapshack_es.ts
+++ b/src/locale/qmapshack_es.ts
@@ -101,12 +101,12 @@
 <context>
     <name>CDetailsOvlArea</name>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
+        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="136"/>
         <source>Edit name...</source>
         <translation>Editar nombre...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
+        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="136"/>
         <source>Enter new area name.</source>
         <translation type="unfinished">Introduzca el nombre del nuevo área.</translation>
     </message>
@@ -209,42 +209,42 @@
 <context>
     <name>CDetailsTrk</name>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="57"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="62"/>
         <source>Reduce visible track points</source>
         <translation>Reducir puntos visibles del track</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="70"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="75"/>
         <source>Change elevation of track points</source>
         <translation>Cambiar elevación de puntos del track</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="83"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="88"/>
         <source>Change timestamp of track points</source>
         <translation>Cambiar fecha/hora de puntos del track</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="96"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="101"/>
         <source>Cut track into pieces</source>
         <translation>Dividir track en partes</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="210"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="219"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="222"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="228"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="247"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="249"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="215"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="224"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="227"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="233"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="252"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="254"/>
         <source>%1 %2</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="363"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="368"/>
         <source>Edit name...</source>
         <translation type="unfinished">Editar nombre...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="363"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="368"/>
         <source>Enter new track name.</source>
         <translation type="unfinished">Introduzca el nombre del nuevo track.</translation>
     </message>
@@ -284,17 +284,17 @@
         <translation type="obsolete"><p>---sin descripción---</p></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="151"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="157"/>
         <source>Edit name...</source>
         <translation>Editar nombre...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="151"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="157"/>
         <source>Enter new waypoint name.</source>
         <translation>Introducir el nombre del nuevo waypoint.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="170"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="176"/>
         <source>Enter new proximity range.</source>
         <translation>Introduzca el nuevo valor de proximidad.</translation>
     </message>
@@ -430,8 +430,8 @@
         <translation>Proyectar Waypoint...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1215"/>
-        <location filename="../gis/CGisListWks.cpp" line="1253"/>
+        <location filename="../gis/CGisListWks.cpp" line="1214"/>
+        <location filename="../gis/CGisListWks.cpp" line="1252"/>
         <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
         <translation type="unfinished"><b>Actualizar dispositivos</b><p>Actualizar %1<br/>Por favor espere...</p></translation>
     </message>
@@ -472,22 +472,22 @@
         <translation>Borrar</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="673"/>
+        <location filename="../gis/CGisListWks.cpp" line="672"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Guardando espacio de trabajo. Por favor espere.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="714"/>
+        <location filename="../gis/CGisListWks.cpp" line="713"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Cargando espacio de trabajo. Por favor espere.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1163"/>
+        <location filename="../gis/CGisListWks.cpp" line="1162"/>
         <source>Close all projects...</source>
         <translation>Cerrar todos los proyectos...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1163"/>
+        <location filename="../gis/CGisListWks.cpp" line="1162"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Esto quitará.todos los proyectos.del espacio de trabajo.</translation>
     </message>
@@ -525,7 +525,7 @@
 <context>
     <name>CHistoryListWidget</name>
     <message>
-        <location filename="../helpers/CHistoryListWidget.cpp" line="33"/>
+        <location filename="../helpers/CHistoryListWidget.cpp" line="34"/>
         <source>Cut history</source>
         <translation>Cortar historial</translation>
     </message>
@@ -551,15 +551,25 @@
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="461"/>
+        <location filename="../CMainWindow.cpp" line="466"/>
         <source>Ele: %1%2</source>
         <translation>Alt: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="587"/>
+        <location filename="../CMainWindow.cpp" line="592"/>
         <source>Load GIS Data...</source>
         <translation>Cargar Datos GIS...</translation>
     </message>
+    <message>
+        <location filename="../CMainWindow.cpp" line="626"/>
+        <source>Select output file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../CMainWindow.cpp" line="652"/>
+        <source>Select file to load</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CMapIMG</name>
@@ -1481,12 +1491,12 @@ Estructura desconocida.</translation>
 <context>
     <name>CPlotDistance</name>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="53"/>
+        <location filename="../plot/CPlotDistance.cpp" line="58"/>
         <source>distance [%1]</source>
         <translation>distancia [%1]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="57"/>
+        <location filename="../plot/CPlotDistance.cpp" line="62"/>
         <source>time</source>
         <translation>tiempo</translation>
     </message>
@@ -1495,7 +1505,7 @@ Estructura desconocida.</translation>
         <translation type="obsolete">tiempo [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="59"/>
+        <location filename="../plot/CPlotDistance.cpp" line="64"/>
         <source>distance. [%1]</source>
         <translation>distancia. [%1]</translation>
     </message>
@@ -1521,17 +1531,17 @@ Estructura desconocida.</translation>
 <context>
     <name>CPlotSpeed</name>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="52"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="57"/>
         <source>distance [%1]</source>
         <translation>distancia [%1]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="56"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="61"/>
         <source>time [h]</source>
         <translation>tiempo [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="58"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="63"/>
         <source>speed. [%1]</source>
         <translation>velocidad. [%1]</translation>
     </message>
@@ -2172,7 +2182,7 @@ no es una definición de sistema de coordenadas válido:
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="210"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="443"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="446"/>
         <source>Speed</source>
         <translation>Velocidad</translation>
     </message>
@@ -2192,52 +2202,52 @@ no es una definición de sistema de coordenadas válido:
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="375"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="378"/>
         <source>Points</source>
         <translation>Puntos</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="423"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="426"/>
         <source>Time</source>
         <translation>Tiempo</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="428"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="431"/>
         <source>Ele.</source>
         <translation>Altitud</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="433"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="436"/>
         <source>Delta</source>
         <translation>Delta</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="438"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="441"/>
         <source>Dist.</source>
         <translation>Distancia</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="448"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="451"/>
         <source>Slope</source>
         <translation>Pendiente</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="453"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="456"/>
         <source>Ascend</source>
         <translation>Ascenso</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="458"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="461"/>
         <source>Descend</source>
         <translation>Descenso</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="463"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="466"/>
         <source>Position</source>
         <translation>Posición</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="347"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="350"/>
         <source>Info</source>
         <translation>Información</translation>
     </message>
@@ -2247,12 +2257,12 @@ no es una definición de sistema de coordenadas válido:
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="472"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="475"/>
         <source>Filter</source>
         <translation>Filtro</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="509"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="512"/>
         <source>Hist.</source>
         <translation>Historial</translation>
     </message>
@@ -2747,42 +2757,42 @@ no es una definición de sistema de coordenadas válido:
         <translation>Archivo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="70"/>
+        <location filename="../IMainWindow.ui" line="73"/>
         <source>View</source>
         <translation>Ver</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="89"/>
+        <location filename="../IMainWindow.ui" line="92"/>
         <source>Window</source>
         <translation>Ventana</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="94"/>
+        <location filename="../IMainWindow.ui" line="97"/>
         <source>?</source>
         <translation>?</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="101"/>
+        <location filename="../IMainWindow.ui" line="104"/>
         <source>Project</source>
         <translation>Proyecto</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="111"/>
+        <location filename="../IMainWindow.ui" line="114"/>
         <source>Tool</source>
         <translation>Herramientas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="129"/>
+        <location filename="../IMainWindow.ui" line="132"/>
         <source>Maps</source>
         <translation>Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="166"/>
+        <location filename="../IMainWindow.ui" line="169"/>
         <source>Dig. Elev. Model (DEM)</source>
         <translation>Modelo Digital del Terreno (DEM)</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="199"/>
+        <location filename="../IMainWindow.ui" line="202"/>
         <source>Data</source>
         <translation>Datos</translation>
     </message>
@@ -2791,184 +2801,204 @@ no es una definición de sistema de coordenadas válido:
         <translation type="obsolete">Añadir Espacio de Trabajo de Mapa</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="212"/>
         <location filename="../IMainWindow.ui" line="215"/>
+        <location filename="../IMainWindow.ui" line="218"/>
         <source>Add Map View</source>
         <translation>Añadir Vista de Mapa</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="218"/>
+        <location filename="../IMainWindow.ui" line="221"/>
         <source>Ctrl+T</source>
         <translation>Ctrl+T</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="230"/>
+        <location filename="../IMainWindow.ui" line="233"/>
         <source>Show Scale</source>
         <translation>Mostrar Escala</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="239"/>
+        <location filename="../IMainWindow.ui" line="242"/>
         <source>Setup Map Font</source>
         <translation>Configurar Fuente del Mapa</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="251"/>
+        <location filename="../IMainWindow.ui" line="254"/>
         <source>Show Grid</source>
         <translation>Mostrar Malla</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="254"/>
+        <location filename="../IMainWindow.ui" line="257"/>
         <source>Ctrl+G</source>
         <translation>Ctrl+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="263"/>
+        <location filename="../IMainWindow.ui" line="266"/>
         <source>Setup Grid</source>
         <translation>Configurar Malla</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="266"/>
+        <location filename="../IMainWindow.ui" line="269"/>
         <source>Ctrl+Alt+G</source>
         <translation>Ctrl+Alt+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="278"/>
+        <location filename="../IMainWindow.ui" line="281"/>
         <source>Flip Mouse Wheel</source>
         <translation>Invertir la Rueda del Ratón</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="287"/>
         <location filename="../IMainWindow.ui" line="290"/>
+        <location filename="../IMainWindow.ui" line="293"/>
         <source>Setup Map Paths</source>
         <translation>Configurar Rutas de Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="302"/>
+        <location filename="../IMainWindow.ui" line="305"/>
         <source>POI Text</source>
         <translation>Texto del POI</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="314"/>
+        <location filename="../IMainWindow.ui" line="317"/>
         <source>Night / Day</source>
         <translation>Noche / Día</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="326"/>
+        <location filename="../IMainWindow.ui" line="329"/>
         <source>Map Tool Tip</source>
         <translation>Mostrar Tooltips en los Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="335"/>
+        <location filename="../IMainWindow.ui" line="338"/>
         <source>Setup DEM Paths</source>
         <translation>Configurar Rutas a los DEM</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="344"/>
+        <location filename="../IMainWindow.ui" line="347"/>
         <source>About</source>
         <translation>Acerca de</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="353"/>
+        <location filename="../IMainWindow.ui" line="356"/>
         <source>Help</source>
         <translation>Ayuda</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="362"/>
         <location filename="../IMainWindow.ui" line="365"/>
+        <location filename="../IMainWindow.ui" line="368"/>
         <source>Setup Map View</source>
         <translation>Configurar Vista de Mapa</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="479"/>
+        <location filename="../IMainWindow.ui" line="482"/>
         <source>VRT Builder</source>
         <translation>Asistente VRT</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="482"/>
+        <location filename="../IMainWindow.ui" line="485"/>
         <source>GUI front end to gdalbuildvrt</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../IMainWindow.ui" line="494"/>
+        <source>Store Map View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="497"/>
+        <source>Write current active map and DEM list including the properties to a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="506"/>
+        <source>Load Map View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="509"/>
+        <source>Restore view with active map and DEM list including the properties from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Setup Map Workspace</source>
         <translation type="obsolete">Configurar Espacio de Trabajo de Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="374"/>
+        <location filename="../IMainWindow.ui" line="377"/>
         <source>Load GIS Data</source>
         <translation>Cargar Datos GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="377"/>
+        <location filename="../IMainWindow.ui" line="380"/>
         <source>Load projects from file</source>
         <translation>Cargar proyectos desde archivo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="380"/>
+        <location filename="../IMainWindow.ui" line="383"/>
         <source>Ctrl+L</source>
         <translation>Ctrl+L</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="389"/>
+        <location filename="../IMainWindow.ui" line="392"/>
         <source>Save All GIS Data</source>
         <translation>Guardar Todos los Datos GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="392"/>
+        <location filename="../IMainWindow.ui" line="395"/>
         <source>Save all projects in the workspace</source>
         <translation>Guardar todos los proyectos del espacio de trabajo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="395"/>
+        <location filename="../IMainWindow.ui" line="398"/>
         <source>Ctrl+S</source>
         <translation>Ctrl+S</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="404"/>
+        <location filename="../IMainWindow.ui" line="407"/>
         <source>Setup Time Zone</source>
         <translation>Configurar Zona Horaria</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="413"/>
+        <location filename="../IMainWindow.ui" line="416"/>
         <source>Add empty project</source>
         <translation>Añadir proyecto vacío</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="425"/>
+        <location filename="../IMainWindow.ui" line="428"/>
         <source>Search Google</source>
         <translation>Buscar en Google</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="434"/>
+        <location filename="../IMainWindow.ui" line="437"/>
         <source>Close all projects</source>
         <translation>Cerrar todos los proyectos</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="437"/>
+        <location filename="../IMainWindow.ui" line="440"/>
         <source>F8</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="446"/>
+        <location filename="../IMainWindow.ui" line="449"/>
         <source>Setup Units</source>
         <translation>Configurar Unidades</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="455"/>
+        <location filename="../IMainWindow.ui" line="458"/>
         <source>Setup Workspace</source>
         <translation>Configurar Espacio de trabajo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="458"/>
+        <location filename="../IMainWindow.ui" line="461"/>
         <source>Setup save on exit.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="467"/>
+        <location filename="../IMainWindow.ui" line="470"/>
         <source>Import Database from QLandkarte</source>
         <translation>Importar base de datos de Qlandkarte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="470"/>
+        <location filename="../IMainWindow.ui" line="473"/>
         <source>Import QLandkarte GT database</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3169,10 +3199,20 @@ no es una definición de sistema de coordenadas válido:
 <context>
     <name>IPlot</name>
     <message>
-        <location filename="../plot/IPlot.cpp" line="481"/>
+        <location filename="../plot/IPlot.cpp" line="92"/>
+        <source>Save...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../plot/IPlot.cpp" line="482"/>
         <source>No or bad data.</source>
         <translation>Datos incorrectos o inexistentes.</translation>
     </message>
+    <message>
+        <location filename="../plot/IPlot.cpp" line="875"/>
+        <source>Select output file</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IPositionDialog</name>
@@ -3983,18 +4023,18 @@ o
 <context>
     <name>QObject</name>
     <message>
-        <location filename="../GeoMath.cpp" line="160"/>
-        <location filename="../GeoMath.cpp" line="166"/>
+        <location filename="../GeoMath.cpp" line="159"/>
+        <location filename="../GeoMath.cpp" line="165"/>
         <source>Error</source>
         <translation>Error</translation>
     </message>
     <message>
-        <location filename="../GeoMath.cpp" line="160"/>
+        <location filename="../GeoMath.cpp" line="159"/>
         <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
         <translation>Formato de coordenadas incorrecto. Debe ser: "[N|S] ggg mm.sss [W|E] ggg mm.sss" o "[N|S] ggg.ggg [W|E] ggg.ggg"</translation>
     </message>
     <message>
-        <location filename="../GeoMath.cpp" line="166"/>
+        <location filename="../GeoMath.cpp" line="165"/>
         <source>Position values out of bounds. </source>
         <translation type="unfinished">Valores de posición fuera del límite.</translation>
     </message>
@@ -4053,33 +4093,33 @@ Areas: %1</source>
 Áreas: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="208"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="218"/>
         <source><br/>
 Filename: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="225"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="235"/>
         <source>Waypoints: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="229"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="239"/>
         <source>Tracks: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="233"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="243"/>
         <source>Routes: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="237"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="247"/>
         <source>Areas: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="293"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="308"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
         <translation>¿Desea realmente eleiminar '%1' del proyecto '%2'?</translation>
     </message>
@@ -4090,7 +4130,7 @@ Filename: %1</source>
     </message>
     <message>
         <location filename="../gis/CGisListDB.cpp" line="408"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="294"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="309"/>
         <source>Delete...</source>
         <translation>Borrar...</translation>
     </message>
@@ -4458,46 +4498,46 @@ Filename: %1</source>
         <translation>Versión inicial</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="407"/>
+        <location filename="../gis/IGisItem.cpp" line="412"/>
         <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="408"/>
+        <location filename="../gis/IGisItem.cpp" line="413"/>
         <source>Read Only Mode...</source>
         <translation>Modo Sólo Lectura...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="613"/>
+        <location filename="../gis/IGisItem.cpp" line="619"/>
         <source><h4>Comment:</h4></source>
         <translation><h4>Comentario:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="616"/>
+        <location filename="../gis/IGisItem.cpp" line="622"/>
         <source><p>--- no comment ---</p></source>
         <translation><p>---sin comentario---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="627"/>
-        <location filename="../gis/IGisItem.cpp" line="672"/>
+        <location filename="../gis/IGisItem.cpp" line="633"/>
+        <location filename="../gis/IGisItem.cpp" line="678"/>
         <source><h4>Description:</h4></source>
         <translation><h4>Descripción:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="630"/>
-        <location filename="../gis/IGisItem.cpp" line="675"/>
+        <location filename="../gis/IGisItem.cpp" line="636"/>
+        <location filename="../gis/IGisItem.cpp" line="681"/>
         <source><p>--- no description ---</p></source>
         <translation><p>---sin descripción---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="641"/>
-        <location filename="../gis/IGisItem.cpp" line="686"/>
+        <location filename="../gis/IGisItem.cpp" line="647"/>
+        <location filename="../gis/IGisItem.cpp" line="692"/>
         <source><h4>Links:</h4></source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="644"/>
-        <location filename="../gis/IGisItem.cpp" line="689"/>
+        <location filename="../gis/IGisItem.cpp" line="650"/>
+        <location filename="../gis/IGisItem.cpp" line="695"/>
         <source><p>--- no links ---</p></source>
         <translation><p>--- sin links ---</p></translation>
     </message>
@@ -4563,62 +4603,62 @@ Filename: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="95"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="96"/>
         <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
         <translation>Ocultar puntos con algoritmo Douglas Peuker (%1%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="111"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="112"/>
         <source>Reset all hidden track points to visible</source>
         <translation>Restaurados todos los puntos a visible</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="136"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="137"/>
         <source>Permanently removed all hidden track points</source>
         <translation>Elminados definitivamente todos los puntos ocultos del track</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="186"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="187"/>
         <source>Smoothed profile with a Median filter of size %1</source>
         <translation>Pefil suavizado con Mediana de %1 puntos</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="222"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="223"/>
         <source>Replaced elevation data with data from DEM files.</source>
         <translation>Datos de elevación sustituidos por valores de fichero DEM.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="245"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="246"/>
         <source>Offset elevation data by %1%2.</source>
         <translation>Elevación desplazada %1%2.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="264"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="265"/>
         <source>Changed start of track to %1.</source>
         <translation>Cambiado el inicio de track a %1.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="283"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="284"/>
         <source>Remove timestamps.</source>
         <translation>Eliminadas las marcas de tiempo.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="306"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="307"/>
         <source>Set artificial timestamps with delta of %1 sec.</source>
         <translation>Marcas de tiempo ficticias con incremento de %1 sec.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="339"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="340"/>
         <source>Changed speed to %1%2.</source>
         <translation>Velocidad modificada a %1%2.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="897"/>
+        <location filename="../gis/CGisListWks.cpp" line="896"/>
         <source>Delete project...</source>
         <translation>Eliminar Proyecto...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="897"/>
+        <location filename="../gis/CGisListWks.cpp" line="896"/>
         <source>Do you really want to delete %1?</source>
         <translation>¿Desea realmente eliminar %1?</translation>
     </message>
@@ -4665,7 +4705,7 @@ Filename: %1</source>
         <translation>Fallo al leer los datos.</translation>
     </message>
     <message>
-        <location filename="../device/CDeviceGarmin.cpp" line="191"/>
+        <location filename="../device/CDeviceGarmin.cpp" line="202"/>
         <source>Picture%1</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/src/locale/qmapshack_fr.ts b/src/locale/qmapshack_fr.ts
index a3a937b..ca51405 100644
--- a/src/locale/qmapshack_fr.ts
+++ b/src/locale/qmapshack_fr.ts
@@ -98,12 +98,12 @@
 <context>
     <name>CDetailsOvlArea</name>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
+        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="136"/>
         <source>Edit name...</source>
         <translation>Éditer le nom...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
+        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="136"/>
         <source>Enter new area name.</source>
         <translation type="unfinished">Saisir le nouveau nom de la surface.</translation>
     </message>
@@ -190,42 +190,42 @@
 <context>
     <name>CDetailsTrk</name>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="57"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="62"/>
         <source>Reduce visible track points</source>
         <translation>Réduire les points visibles de la trace</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="70"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="75"/>
         <source>Change elevation of track points</source>
         <translation>Modifier l'altitude des points de la trace</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="83"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="88"/>
         <source>Change timestamp of track points</source>
         <translation>Modifier l'horodatage des points de la trace</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="96"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="101"/>
         <source>Cut track into pieces</source>
         <translation>Découper la trace</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="210"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="219"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="222"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="228"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="247"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="249"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="215"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="224"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="227"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="233"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="252"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="254"/>
         <source>%1 %2</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="363"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="368"/>
         <source>Edit name...</source>
         <translation type="unfinished">Éditer le nom...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="363"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="368"/>
         <source>Enter new track name.</source>
         <translation type="unfinished">Saisir le nouveau nom de la trace.</translation>
     </message>
@@ -233,17 +233,17 @@
 <context>
     <name>CDetailsWpt</name>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="151"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="157"/>
         <source>Edit name...</source>
         <translation>Éditer le nom...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="151"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="157"/>
         <source>Enter new waypoint name.</source>
         <translation>Saisir le nouveau nom du waypoint.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="170"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="176"/>
         <source>Enter new proximity range.</source>
         <translation>Saisir le rayon de l'alarme de proximité</translation>
     </message>
@@ -415,28 +415,28 @@
         <translation>Éditer les points de la surface</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="673"/>
+        <location filename="../gis/CGisListWks.cpp" line="672"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Sauvegarde de l'espace de travail. Patientez.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="714"/>
+        <location filename="../gis/CGisListWks.cpp" line="713"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Chargement de l'espace de travail. Patientez.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1163"/>
+        <location filename="../gis/CGisListWks.cpp" line="1162"/>
         <source>Close all projects...</source>
         <translation>Fermer tous les projets...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1163"/>
+        <location filename="../gis/CGisListWks.cpp" line="1162"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Ceci enlevera tous les projets de l'espace de travail.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1215"/>
-        <location filename="../gis/CGisListWks.cpp" line="1253"/>
+        <location filename="../gis/CGisListWks.cpp" line="1214"/>
+        <location filename="../gis/CGisListWks.cpp" line="1252"/>
         <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
         <translation><b>Mise à jour des appareils</b><p>Mise à jour de %1<br/>Patientez...</p></translation>
     </message>
@@ -470,7 +470,7 @@
 <context>
     <name>CHistoryListWidget</name>
     <message>
-        <location filename="../helpers/CHistoryListWidget.cpp" line="33"/>
+        <location filename="../helpers/CHistoryListWidget.cpp" line="34"/>
         <source>Cut history</source>
         <translation>Tronquer l'historique</translation>
     </message>
@@ -496,15 +496,25 @@
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="461"/>
+        <location filename="../CMainWindow.cpp" line="466"/>
         <source>Ele: %1%2</source>
         <translation>Altitude: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="587"/>
+        <location filename="../CMainWindow.cpp" line="592"/>
         <source>Load GIS Data...</source>
         <translation>Charger des données SIG...</translation>
     </message>
+    <message>
+        <location filename="../CMainWindow.cpp" line="626"/>
+        <source>Select output file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../CMainWindow.cpp" line="652"/>
+        <source>Select file to load</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CMapIMG</name>
@@ -1426,17 +1436,17 @@ Structure inconnue.</translation>
 <context>
     <name>CPlotDistance</name>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="53"/>
+        <location filename="../plot/CPlotDistance.cpp" line="58"/>
         <source>distance [%1]</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="57"/>
+        <location filename="../plot/CPlotDistance.cpp" line="62"/>
         <source>time</source>
         <translation>durée</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotDistance.cpp" line="59"/>
+        <location filename="../plot/CPlotDistance.cpp" line="64"/>
         <source>distance. [%1]</source>
         <translation></translation>
     </message>
@@ -1462,17 +1472,17 @@ Structure inconnue.</translation>
 <context>
     <name>CPlotSpeed</name>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="52"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="57"/>
         <source>distance [%1]</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="56"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="61"/>
         <source>time [h]</source>
         <translation>durée [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotSpeed.cpp" line="58"/>
+        <location filename="../plot/CPlotSpeed.cpp" line="63"/>
         <source>speed. [%1]</source>
         <translation>vitesse [%1]</translation>
     </message>
@@ -2082,7 +2092,7 @@ n'est pas une définition de système de coordonnées:
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="347"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="350"/>
         <source>Info</source>
         <translation></translation>
     </message>
@@ -2103,7 +2113,7 @@ n'est pas une définition de système de coordonnées:
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="210"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="443"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="446"/>
         <source>Speed</source>
         <translation>Vitesse</translation>
     </message>
@@ -2123,57 +2133,57 @@ n'est pas une définition de système de coordonnées:
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="375"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="378"/>
         <source>Points</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="423"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="426"/>
         <source>Time</source>
         <translation>Durée</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="428"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="431"/>
         <source>Ele.</source>
         <translation>Alt.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="433"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="436"/>
         <source>Delta</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="438"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="441"/>
         <source>Dist.</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="448"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="451"/>
         <source>Slope</source>
         <translation>Pente</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="453"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="456"/>
         <source>Ascend</source>
         <translation>Montée</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="458"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="461"/>
         <source>Descend</source>
         <translation>Descente</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="463"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="466"/>
         <source>Position</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="472"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="475"/>
         <source>Filter</source>
         <translation>Filtre</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="509"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="512"/>
         <source>Hist.</source>
         <translation></translation>
     </message>
@@ -2668,223 +2678,243 @@ n'est pas une définition de système de coordonnées:
         <translation>Fichier</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="70"/>
+        <location filename="../IMainWindow.ui" line="73"/>
         <source>View</source>
         <translation>Vue</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="89"/>
+        <location filename="../IMainWindow.ui" line="92"/>
         <source>Window</source>
         <translation>Fenêtre</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="94"/>
+        <location filename="../IMainWindow.ui" line="97"/>
         <source>?</source>
         <translation>?</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="101"/>
+        <location filename="../IMainWindow.ui" line="104"/>
         <source>Project</source>
         <translation>Projet</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="111"/>
+        <location filename="../IMainWindow.ui" line="114"/>
         <source>Tool</source>
         <translation>Outils</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="129"/>
+        <location filename="../IMainWindow.ui" line="132"/>
         <source>Maps</source>
         <translation>Cartes</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="166"/>
+        <location filename="../IMainWindow.ui" line="169"/>
         <source>Dig. Elev. Model (DEM)</source>
         <translation type="unfinished">Modèle numérique de terrain (DEM)</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="199"/>
+        <location filename="../IMainWindow.ui" line="202"/>
         <source>Data</source>
         <translation>Données</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="212"/>
         <location filename="../IMainWindow.ui" line="215"/>
+        <location filename="../IMainWindow.ui" line="218"/>
         <source>Add Map View</source>
         <translation>Ajouter une vue cartographique</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="218"/>
+        <location filename="../IMainWindow.ui" line="221"/>
         <source>Ctrl+T</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="230"/>
+        <location filename="../IMainWindow.ui" line="233"/>
         <source>Show Scale</source>
         <translation>Afficher l'échelle</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="239"/>
+        <location filename="../IMainWindow.ui" line="242"/>
         <source>Setup Map Font</source>
         <translation>Configurer la police de la carte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="251"/>
+        <location filename="../IMainWindow.ui" line="254"/>
         <source>Show Grid</source>
         <translation>Afficher la grille</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="254"/>
+        <location filename="../IMainWindow.ui" line="257"/>
         <source>Ctrl+G</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="263"/>
+        <location filename="../IMainWindow.ui" line="266"/>
         <source>Setup Grid</source>
         <translation>Configurer la grille</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="266"/>
+        <location filename="../IMainWindow.ui" line="269"/>
         <source>Ctrl+Alt+G</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="278"/>
+        <location filename="../IMainWindow.ui" line="281"/>
         <source>Flip Mouse Wheel</source>
         <translation>Inverser le sens de la molette de souris</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="287"/>
         <location filename="../IMainWindow.ui" line="290"/>
+        <location filename="../IMainWindow.ui" line="293"/>
         <source>Setup Map Paths</source>
         <translation>Configurer les répertoires des cartes</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="302"/>
+        <location filename="../IMainWindow.ui" line="305"/>
         <source>POI Text</source>
         <translation>Libellés des points d'interêt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="314"/>
+        <location filename="../IMainWindow.ui" line="317"/>
         <source>Night / Day</source>
         <translation>Jour / Nuit</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="326"/>
+        <location filename="../IMainWindow.ui" line="329"/>
         <source>Map Tool Tip</source>
         <translation>Infobulles sur la carte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="335"/>
+        <location filename="../IMainWindow.ui" line="338"/>
         <source>Setup DEM Paths</source>
         <translation>Configurer les répertoires DEM</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="344"/>
+        <location filename="../IMainWindow.ui" line="347"/>
         <source>About</source>
         <translation>À propos</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="353"/>
+        <location filename="../IMainWindow.ui" line="356"/>
         <source>Help</source>
         <translation>Aide</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="362"/>
         <location filename="../IMainWindow.ui" line="365"/>
+        <location filename="../IMainWindow.ui" line="368"/>
         <source>Setup Map View</source>
         <translation>Configurer la vue cartographique</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="374"/>
+        <location filename="../IMainWindow.ui" line="377"/>
         <source>Load GIS Data</source>
         <translation>Charger des données SIG...</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="377"/>
+        <location filename="../IMainWindow.ui" line="380"/>
         <source>Load projects from file</source>
         <translation>Charger un fichier projet</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="380"/>
+        <location filename="../IMainWindow.ui" line="383"/>
         <source>Ctrl+L</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="389"/>
+        <location filename="../IMainWindow.ui" line="392"/>
         <source>Save All GIS Data</source>
         <translation>Enregistrer toutes les données SIG</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="392"/>
+        <location filename="../IMainWindow.ui" line="395"/>
         <source>Save all projects in the workspace</source>
         <translation>Enregistrer tous les projets de l'espace de travail</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="395"/>
+        <location filename="../IMainWindow.ui" line="398"/>
         <source>Ctrl+S</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="404"/>
+        <location filename="../IMainWindow.ui" line="407"/>
         <source>Setup Time Zone</source>
         <translation>Configurer le fuseau horaire</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="413"/>
+        <location filename="../IMainWindow.ui" line="416"/>
         <source>Add empty project</source>
         <translation>Ajouter un projet vide</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="425"/>
+        <location filename="../IMainWindow.ui" line="428"/>
         <source>Search Google</source>
         <translation>Recherche Google</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="434"/>
+        <location filename="../IMainWindow.ui" line="437"/>
         <source>Close all projects</source>
         <translation>Fermer tous les projets</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="437"/>
+        <location filename="../IMainWindow.ui" line="440"/>
         <source>F8</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="446"/>
+        <location filename="../IMainWindow.ui" line="449"/>
         <source>Setup Units</source>
         <translation>Configurer les unités</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="455"/>
+        <location filename="../IMainWindow.ui" line="458"/>
         <source>Setup Workspace</source>
         <translation>Configurer l'espace de travail</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="458"/>
+        <location filename="../IMainWindow.ui" line="461"/>
         <source>Setup save on exit.</source>
         <translation>Sauvegarde de la configuration en quittant</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="467"/>
+        <location filename="../IMainWindow.ui" line="470"/>
         <source>Import Database from QLandkarte</source>
         <translation>Importer une base de données QLandkarte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="470"/>
+        <location filename="../IMainWindow.ui" line="473"/>
         <source>Import QLandkarte GT database</source>
         <translation>Importer une base de données QLandkarte GT</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="479"/>
+        <location filename="../IMainWindow.ui" line="482"/>
         <source>VRT Builder</source>
         <translation>Générateur de VRT</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="482"/>
+        <location filename="../IMainWindow.ui" line="485"/>
         <source>GUI front end to gdalbuildvrt</source>
         <translation>Interface utilisateur pour gdalbuildvrt</translation>
     </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="494"/>
+        <source>Store Map View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="497"/>
+        <source>Write current active map and DEM list including the properties to a file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="506"/>
+        <source>Load Map View</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="509"/>
+        <source>Restore view with active map and DEM list including the properties from a file</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IMapList</name>
@@ -3078,10 +3108,20 @@ n'est pas une définition de système de coordonnées:
 <context>
     <name>IPlot</name>
     <message>
-        <location filename="../plot/IPlot.cpp" line="481"/>
+        <location filename="../plot/IPlot.cpp" line="92"/>
+        <source>Save...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../plot/IPlot.cpp" line="482"/>
         <source>No or bad data.</source>
         <translation>Aucune donnée ou données invalides.</translation>
     </message>
+    <message>
+        <location filename="../plot/IPlot.cpp" line="875"/>
+        <source>Select output file</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IPositionDialog</name>
@@ -3858,23 +3898,23 @@ or
 <context>
     <name>QObject</name>
     <message>
-        <location filename="../device/CDeviceGarmin.cpp" line="191"/>
+        <location filename="../device/CDeviceGarmin.cpp" line="202"/>
         <source>Picture%1</source>
         <translation>Image%1</translation>
     </message>
     <message>
-        <location filename="../GeoMath.cpp" line="160"/>
-        <location filename="../GeoMath.cpp" line="166"/>
+        <location filename="../GeoMath.cpp" line="159"/>
+        <location filename="../GeoMath.cpp" line="165"/>
         <source>Error</source>
         <translation>Erreur</translation>
     </message>
     <message>
-        <location filename="../GeoMath.cpp" line="160"/>
+        <location filename="../GeoMath.cpp" line="159"/>
         <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
         <translation>Mauvais format de position. Formats valides: "[N|S] ddd mm.sss [W|E] ddd mm.sss" ou "[N|S] ddd.ddd [W|E] ddd.ddd" </translation>
     </message>
     <message>
-        <location filename="../GeoMath.cpp" line="166"/>
+        <location filename="../GeoMath.cpp" line="165"/>
         <source>Position values out of bounds. </source>
         <translation>Valeurs de la position hors de la plage autorisée.</translation>
     </message>
@@ -3885,17 +3925,17 @@ or
     </message>
     <message>
         <location filename="../gis/CGisListDB.cpp" line="408"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="294"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="309"/>
         <source>Delete...</source>
         <translation>Supprimer...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="897"/>
+        <location filename="../gis/CGisListWks.cpp" line="896"/>
         <source>Delete project...</source>
         <translation>Supprimer le projet</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="897"/>
+        <location filename="../gis/CGisListWks.cpp" line="896"/>
         <source>Do you really want to delete %1?</source>
         <translation>Êtes-vous sûr de vouloir supprimer %1?</translation>
     </message>
@@ -4014,46 +4054,46 @@ ligne %2, colonne %3:
         <translation>Version initiale</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="407"/>
+        <location filename="../gis/IGisItem.cpp" line="412"/>
         <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>Cet élément est probablement en lecture seule parce qu'il n'a pas été créé avec QMapShack. Normelement, vous ne devriez pas modifier des données importées. Mais si vous êtes sûr de ce que vous faites, cliquez sur 'OK'</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="408"/>
+        <location filename="../gis/IGisItem.cpp" line="413"/>
         <source>Read Only Mode...</source>
         <translation>Mode lecture seule</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="613"/>
+        <location filename="../gis/IGisItem.cpp" line="619"/>
         <source><h4>Comment:</h4></source>
         <translation><h4>Commentaire:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="616"/>
+        <location filename="../gis/IGisItem.cpp" line="622"/>
         <source><p>--- no comment ---</p></source>
         <translation><p>--- pas de commentaire ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="627"/>
-        <location filename="../gis/IGisItem.cpp" line="672"/>
+        <location filename="../gis/IGisItem.cpp" line="633"/>
+        <location filename="../gis/IGisItem.cpp" line="678"/>
         <source><h4>Description:</h4></source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="630"/>
-        <location filename="../gis/IGisItem.cpp" line="675"/>
+        <location filename="../gis/IGisItem.cpp" line="636"/>
+        <location filename="../gis/IGisItem.cpp" line="681"/>
         <source><p>--- no description ---</p></source>
         <translation><p>--- pas de description ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="641"/>
-        <location filename="../gis/IGisItem.cpp" line="686"/>
+        <location filename="../gis/IGisItem.cpp" line="647"/>
+        <location filename="../gis/IGisItem.cpp" line="692"/>
         <source><h4>Links:</h4></source>
         <translation><h4>Liens:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="644"/>
-        <location filename="../gis/IGisItem.cpp" line="689"/>
+        <location filename="../gis/IGisItem.cpp" line="650"/>
+        <location filename="../gis/IGisItem.cpp" line="695"/>
         <source><p>--- no links ---</p></source>
         <translation><p>--- pas de liens ---</p></translation>
     </message>
@@ -4140,34 +4180,34 @@ ligne %2, colonne %3:
         <translation>Couleur modifiée...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="208"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="218"/>
         <source><br/>
 Filename: %1</source>
         <translation><br/>
 Nom de fichier: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="225"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="235"/>
         <source>Waypoints: %1</source>
         <translation>Waypoints: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="229"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="239"/>
         <source>Tracks: %1</source>
         <translation>Traces: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="233"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="243"/>
         <source>Routes: %1</source>
         <translation>Routes: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="237"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="247"/>
         <source>Areas: %1</source>
         <translation>Surfaces: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="293"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="308"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
         <translation>Êtes-vous sûr de vouloir supprimer %1 du projet '%2'?</translation>
     </message>
@@ -4367,52 +4407,52 @@ Nom de fichier: %1</translation>
         <translation>Nom modifié</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="95"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="96"/>
         <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
         <translation>Cacher des points avec l'algorithme Douglas Peuker (%1%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="111"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="112"/>
         <source>Reset all hidden track points to visible</source>
         <translation>Restaurer les points cachés</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="136"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="137"/>
         <source>Permanently removed all hidden track points</source>
         <translation>Supprimer définitivement tous les points cachés</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="186"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="187"/>
         <source>Smoothed profile with a Median filter of size %1</source>
         <translation>Profile lissé avec un filtre médian de dimension %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="222"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="223"/>
         <source>Replaced elevation data with data from DEM files.</source>
         <translation>Les altitudes ont été remplacées  par les données DEM</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="245"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="246"/>
         <source>Offset elevation data by %1%2.</source>
         <translation>Décaler les altitudes de %1%2.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="264"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="265"/>
         <source>Changed start of track to %1.</source>
         <translation>Début de la trace modifié à %1.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="283"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="284"/>
         <source>Remove timestamps.</source>
         <translation>Horodatage Supprimé.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="306"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="307"/>
         <source>Set artificial timestamps with delta of %1 sec.</source>
         <translation>Horodatage artificiel ajouté avec un décalage de %1 sec.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="339"/>
+        <location filename="../gis/trk/filter/filter.cpp" line="340"/>
         <source>Changed speed to %1%2.</source>
         <translation>Vitesse modifiée à %1%2.</translation>
     </message>
diff --git a/src/map/CMapDraw.cpp b/src/map/CMapDraw.cpp
index 02642de..e583bb9 100644
--- a/src/map/CMapDraw.cpp
+++ b/src/map/CMapDraw.cpp
@@ -203,7 +203,14 @@ void CMapDraw::loadConfig(QSettings& cfg)
     cfgGroup = cfg.group();
     // -------------------
     cfg.beginGroup("map");
-    restoreActiveMapsList(cfg.value("active", "").toStringList());
+    if(cfgGroup.isEmpty())
+    {
+        restoreActiveMapsList(cfg.value("active", "").toStringList(), cfg);
+    }
+    else
+    {
+        restoreActiveMapsList(cfg.value("active", "").toStringList());
+    }
     int idx = cfg.value("zoomIndex",zoomIndex).toInt();
     cfg.endGroup();
 
@@ -272,6 +279,11 @@ void CMapDraw::saveActiveMapsList(QStringList& keys, QSettings& cfg)
 
 void CMapDraw::loadConfigForMapItem(CMapItem * item)
 {
+    if(cfgGroup.isEmpty())
+    {
+        return;
+    }
+
     SETTINGS;
     cfg.beginGroup(cfgGroup);
     cfg.beginGroup("map");
@@ -305,6 +317,31 @@ void CMapDraw::restoreActiveMapsList(const QStringList& keys)
     mapList->updateHelpText();
 }
 
+void CMapDraw::restoreActiveMapsList(const QStringList& keys, QSettings& cfg)
+{
+    QMutexLocker lock(&CMapItem::mutexActiveMaps);
+
+    foreach(const QString &key, keys)
+    {
+        for(int i = 0; i < mapList->count(); i++)
+        {
+            CMapItem * item = mapList->item(i);
+
+            if(item && item->key == key)
+            {
+                if(item->activate())
+                {
+                    item->loadConfig(cfg);
+                }
+                break;
+            }
+        }
+    }
+
+    mapList->updateHelpText();
+}
+
+
 void CMapDraw::reportStatusToCanvas(const QString& key, const QString& msg)
 {
     canvas->reportStatus(key, msg);
diff --git a/src/map/CMapDraw.h b/src/map/CMapDraw.h
index 0f65dcf..3e9c7ee 100644
--- a/src/map/CMapDraw.h
+++ b/src/map/CMapDraw.h
@@ -144,6 +144,8 @@ private:
      */
     void restoreActiveMapsList(const QStringList &keys);
 
+    void restoreActiveMapsList(const QStringList& keys, QSettings& cfg);
+
 
 
     /// the treewidget holding all active and inactive map items
diff --git a/src/map/CMapIMG.cpp b/src/map/CMapIMG.cpp
index f7b56eb..218f8c0 100644
--- a/src/map/CMapIMG.cpp
+++ b/src/map/CMapIMG.cpp
@@ -1813,7 +1813,7 @@ void CMapIMG::drawPolylines(QPainter& p, polytype_t& lines, const QPointF& scale
                         u2 = poly[i].x();
                         v2 = poly[i].y();
 
-                        segLength    = sqrt((u2 - u1) * (u2 - u1) + (v2 - v1) * (v2 - v1));
+                        segLength    = qSqrt((u2 - u1) * (u2 - u1) + (v2 - v1) * (v2 - v1));
                         totalLength += segLength;
                         lengths << segLength;
 
@@ -1839,7 +1839,7 @@ void CMapIMG::drawPolylines(QPainter& p, polytype_t& lines, const QPointF& scale
 
                         QPointF p1      = p2;
                         p2              = path.pointAtPercent((curLength + segLength) / totalLength);
-                        qreal angle    = atan((p2.y() - p1.y()) / (p2.x() - p1.x())) * 180 / M_PI;
+                        qreal angle    = qAtan((p2.y() - p1.y()) / (p2.x() - p1.x())) * 180 / M_PI;
 
                         if(p2.x() - p1.x() < 0)
                         {
@@ -2004,7 +2004,7 @@ void CMapIMG::collectText(const CGarminPolygon& item, const QPolygonF& line, con
         const QPointF &p2 = line[i];
         qreal dx    = p2.x() - p1.x();
         qreal dy    = p2.y() - p1.y();
-        tp.lengths << sqrt(dx * dx + dy * dy);
+        tp.lengths << qSqrt(dx * dx + dy * dy);
     }
 
     textpaths << tp;
@@ -2309,7 +2309,7 @@ void CMapIMG::drawText(QPainter& p)
 
         QPointF point2  = path.pointAtPercent(percent2);
 
-        qreal angle     = atan((point2.y() - point1.y()) / (point2.x() - point1.x())) * 180 / M_PI;
+        qreal angle     = qAtan((point2.y() - point1.y()) / (point2.x() - point1.x())) * 180 / M_PI;
 
         // flip path if string start is E->W direction
         // this helps, sometimes, in 50 % of the cases :)
@@ -2331,7 +2331,7 @@ void CMapIMG::drawText(QPainter& p)
             point1  = point2;
             point2  = path.pointAtPercent(percent2);
 
-            angle   = atan((point2.y() - point1.y()) / (point2.x() - point1.x())) * 180 / M_PI;
+            angle   = qAtan((point2.y() - point1.y()) / (point2.x() - point1.x())) * 180 / M_PI;
 
             if(point2.x() - point1.x() < 0)
             {
@@ -2594,7 +2594,7 @@ void CMapIMG::getInfoPolylines(const QPoint &pt, QMultiMap<QString, QString>& di
             dx = p2.u - p1.u;
             dy = p2.v - p1.v;
 
-            d_p1_p2 = sqrt(dx * dx + dy * dy);
+            d_p1_p2 = qSqrt(dx * dx + dy * dy);
 
             u = ((pt.x() - p1.u) * dx + (pt.y() - p1.v) * dy) / (d_p1_p2 * d_p1_p2);
 
@@ -2606,7 +2606,7 @@ void CMapIMG::getInfoPolylines(const QPoint &pt, QMultiMap<QString, QString>& di
             x = p1.u + u * dx;
             y = p1.v + u * dy;
 
-            distance = sqrt((x - pt.x())*(x - pt.x()) + (y - pt.y())*(y - pt.y()));
+            distance = qSqrt((x - pt.x())*(x - pt.x()) + (y - pt.y())*(y - pt.y()));
 
             if(distance < shortest)
             {
@@ -2766,7 +2766,7 @@ static qreal getDistance(const QPolygonF& line, const QPointF& pt, qreal thresho
         dx = p2.x() - p1.x();
         dy = p2.y() - p1.y();
 
-        d_p1_p2 = sqrt(dx * dx + dy * dy);
+        d_p1_p2 = qSqrt(dx * dx + dy * dy);
 
         u = ((pt.x() - p1.x()) * dx + (pt.y() - p1.y()) * dy) / (d_p1_p2 * d_p1_p2);
 
@@ -2778,7 +2778,7 @@ static qreal getDistance(const QPolygonF& line, const QPointF& pt, qreal thresho
         x = p1.x() + u * dx;
         y = p1.y() + u * dy;
 
-        distance = sqrt((x - pt.x())*(x - pt.x()) + (y - pt.y())*(y - pt.y()));
+        distance = qSqrt((x - pt.x())*(x - pt.x()) + (y - pt.y())*(y - pt.y()));
 
         if(distance < threshold)
         {
diff --git a/src/map/CMapJNX.cpp b/src/map/CMapJNX.cpp
index 6416cea..e9b5fea 100644
--- a/src/map/CMapJNX.cpp
+++ b/src/map/CMapJNX.cpp
@@ -73,7 +73,7 @@ static quint32 scale2jnx(qreal scale)
        table is built. It is (76437 / 4777) ^ (1/4).
      */
 
-    return (uint32_t)floor(0.5 + 76437 * exp(log(2.000032708011) * floor(0.5 + log(scale * 10 * 130.2084 / 76437) / log(2.000032708011) ) ) );
+    return (uint32_t)qFloor(0.5 + 76437 * exp(log(2.000032708011) * qFloor(0.5 + log(scale * 10 * 130.2084 / 76437) / log(2.000032708011) ) ) );
 }
 
 
diff --git a/src/map/CMapRMAP.cpp b/src/map/CMapRMAP.cpp
index 9428120..1e0f972 100644
--- a/src/map/CMapRMAP.cpp
+++ b/src/map/CMapRMAP.cpp
@@ -449,10 +449,10 @@ void CMapRMAP::draw(IDrawContext::buffer_t& buf)
     convertRad2M(p2);
 
     // find indices into tile buffer
-    int idxx1 = floor((p1.x() - xref1) / (level.xscale * tileSizeX));
-    int idxy1 = floor((p1.y() - yref1) / (level.yscale * tileSizeY));
-    int idxx2 =  ceil((p2.x() - xref1) / (level.xscale * tileSizeX));
-    int idxy2 =  ceil((p2.y() - yref1) / (level.yscale * tileSizeY));
+    int idxx1 = qFloor((p1.x() - xref1) / (level.xscale * tileSizeX));
+    int idxy1 = qFloor((p1.y() - yref1) / (level.yscale * tileSizeY));
+    int idxx2 =  qCeil((p2.x() - xref1) / (level.xscale * tileSizeX));
+    int idxy2 =  qCeil((p2.y() - yref1) / (level.yscale * tileSizeY));
 
     if(idxx1 < 0)
     {
diff --git a/src/map/CMapTMS.cpp b/src/map/CMapTMS.cpp
index ca47b84..c8fa1f2 100644
--- a/src/map/CMapTMS.cpp
+++ b/src/map/CMapTMS.cpp
@@ -31,23 +31,23 @@
 
 inline int lon2tile(double lon, int z)
 {
-    return (int)(qRound(256*(lon + 180.0) / 360.0 * pow(2.0, z)));
+    return (int)(qRound(256*(lon + 180.0) / 360.0 * qPow(2.0, z)));
 }
 
 inline int lat2tile(double lat, int z)
 {
-    return (int)(qRound(256*(1.0 - log( tan(lat * M_PI/180.0) + 1.0 / cos(lat * M_PI/180.0)) / M_PI) / 2.0 * pow(2.0, z)));
+    return (int)(qRound(256*(1.0 - log( qTan(lat * M_PI/180.0) + 1.0 / qCos(lat * M_PI/180.0)) / M_PI) / 2.0 * qPow(2.0, z)));
 }
 
 inline double tile2lon(int x, int z)
 {
-    return x / pow(2.0, z) * 360.0 - 180;
+    return x / qPow(2.0, z) * 360.0 - 180;
 }
 
 inline double tile2lat(int y, int z)
 {
-    double n = M_PI - 2.0 * M_PI * y / pow(2.0, z);
-    return 180.0 / M_PI * atan(0.5 * (exp(n) - exp(-n)));
+    double n = M_PI - 2.0 * M_PI * y / qPow(2.0, z);
+    return 180.0 / M_PI * qAtan(0.5 * (exp(n) - exp(-n)));
 }
 
 CMapTMS::CMapTMS(const QString &filename, CMapDraw *parent)
diff --git a/src/map/CMapVRT.cpp b/src/map/CMapVRT.cpp
index 2e96d15..5e5bab4 100644
--- a/src/map/CMapVRT.cpp
+++ b/src/map/CMapVRT.cpp
@@ -142,7 +142,7 @@ CMapVRT::CMapVRT(const QString &filename, CMapDraw *parent)
 
     if(adfGeoTransform[4] != 0.0)
     {
-        trFwd.rotate(atan(adfGeoTransform[2]/adfGeoTransform[4]));
+        trFwd.rotate(qAtan(adfGeoTransform[2]/adfGeoTransform[4]));
     }
 
     if(pj_is_latlong(pjsrc))
diff --git a/src/map/IMap.cpp b/src/map/IMap.cpp
index 268cea2..13c8600 100644
--- a/src/map/IMap.cpp
+++ b/src/map/IMap.cpp
@@ -114,11 +114,11 @@ void IMap::drawTile(QImage& img, QPolygonF& l, QPainter& p)
     qreal dy1   = l[0].y() - l[1].y();
     qreal dx2   = l[0].x() - l[3].x();
     qreal dy2   = l[0].y() - l[3].y();
-    qreal w    = ceil( sqrt(dx1*dx1 + dy1*dy1));
-    qreal h    = ceil( sqrt(dx2*dx2 + dy2*dy2));
+    qreal w    = qCeil( qSqrt(dx1*dx1 + dy1*dy1));
+    qreal h    = qCeil( qSqrt(dx2*dx2 + dy2*dy2));
 
     // calculate rotation. This is not really a reprojection but might be good enough for close zoom levels
-    qreal a = atan(dy1/dx1) * RAD_TO_DEG;
+    qreal a = qAtan(dy1/dx1) * RAD_TO_DEG;
 
     // finally translate, scale, rotate and draw tile
     p.save();
diff --git a/src/mouse/CMouseMoveWpt.cpp b/src/mouse/CMouseMoveWpt.cpp
index 6ed543c..8ffcffe 100644
--- a/src/mouse/CMouseMoveWpt.cpp
+++ b/src/mouse/CMouseMoveWpt.cpp
@@ -56,8 +56,8 @@ void CMouseMoveWpt::draw(QPainter& p,  bool needsRedraw, const QRect &rect)
     gis->convertRad2Px(p2);
 
 
-    QPointF p11 = p1 + QPoint(17 * cos((a1 - 90) * DEG_TO_RAD), 17 * sin((a1 - 90) * DEG_TO_RAD));
-    QPointF p22 = p2 + QPoint(21 * cos((a2 + 90) * DEG_TO_RAD), 21 * sin((a2 + 90) * DEG_TO_RAD));
+    QPointF p11 = p1 + QPoint(17 * qCos((a1 - 90) * DEG_TO_RAD), 17 * qSin((a1 - 90) * DEG_TO_RAD));
+    QPointF p22 = p2 + QPoint(21 * qCos((a2 + 90) * DEG_TO_RAD), 21 * qSin((a2 + 90) * DEG_TO_RAD));
 
 
     QPen pen(Qt::darkBlue, 3);
diff --git a/src/mouse/IMouseEditLine.cpp b/src/mouse/IMouseEditLine.cpp
index 7b15c3f..b5d396d 100644
--- a/src/mouse/IMouseEditLine.cpp
+++ b/src/mouse/IMouseEditLine.cpp
@@ -186,7 +186,7 @@ void IMouseEditLine::drawArrows(const QPolygonF &l, QPainter& p)
             {
                 if(0 != pt.x() - pt1.x() && (pt.y() - pt1.y()))
                 {
-                    heading = ( atan2((qreal)(pt.y() - pt1.y()), (qreal)(pt.x() - pt1.x())) * 180.) / M_PI;
+                    heading = ( qAtan2((qreal)(pt.y() - pt1.y()), (qreal)(pt.x() - pt1.x())) * 180.) / M_PI;
 
                     p.save();
                     // draw arrow between bullets
diff --git a/src/plot/CPlotAxis.cpp b/src/plot/CPlotAxis.cpp
index e358199..3eca5b2 100644
--- a/src/plot/CPlotAxis.cpp
+++ b/src/plot/CPlotAxis.cpp
@@ -29,6 +29,7 @@ CPlotAxis::CPlotAxis( QObject * parent )
     : QObject( parent )
     , initialized( false )
     , autoscale( false )
+    , valid(false)
     , scale( 1.0 )
     , usedMin( 0.0 )
     , usedMax( 0.0 )
@@ -146,6 +147,8 @@ void CPlotAxis::calc()
     {
         ticStart += interval;
     }
+
+    valid = true;
 }
 
 
@@ -268,6 +271,11 @@ const QString CPlotAxis::fmtdbl( qreal val )
 
 int CPlotAxis::getScaleWidth( const QFontMetrics& m )
 {
+    if(!valid)
+    {
+        return 0;
+    }
+
     if ( scaleWidth > 0 )
     {
         return scaleWidth * m.width( " " );
diff --git a/src/plot/CPlotAxis.h b/src/plot/CPlotAxis.h
index 7533faf..3f3a9a5 100644
--- a/src/plot/CPlotAxis.h
+++ b/src/plot/CPlotAxis.h
@@ -107,15 +107,20 @@ public:
         return old;
     }
 
-    qreal min()
+    qreal min() const
     {
         return usedMin;
     }
-    qreal max()
+    qreal max() const
     {
         return usedMax;
     }
 
+    bool isValid() const
+    {
+        return valid;
+    }
+
 protected:
     virtual void calc();
 
@@ -124,6 +129,8 @@ protected:
     ///true if autoscaling
     bool autoscale;
 
+    bool valid;
+
     ///scalefactor
     qreal scale;
 
diff --git a/src/plot/CPlotAxisTime.cpp b/src/plot/CPlotAxisTime.cpp
index 01d5284..d966fc1 100644
--- a/src/plot/CPlotAxisTime.cpp
+++ b/src/plot/CPlotAxisTime.cpp
@@ -37,7 +37,13 @@ void CPlotAxisTime::calc()
     ticStart    = usedMin;
     strFormat   = "hh:mm:ss";
 
-    if(dSec < 20)
+    if(dSec < 0)
+    {
+        qDebug() << "ouch";
+        valid = false;
+        return;
+    }
+    else if(dSec < 20)
     {
         interval = 1;
         ticStart = usedMin;
@@ -90,6 +96,8 @@ void CPlotAxisTime::calc()
     else
     {
         qDebug() << "ouch";
+        valid = false;
+        return;
     }
 
     if ( autoscale )
@@ -109,6 +117,8 @@ void CPlotAxisTime::calc()
     {
         ticStart += interval;
     }
+
+    valid = true;
 }
 
 
diff --git a/src/plot/CPlotDistance.cpp b/src/plot/CPlotDistance.cpp
index f1ad12b..cceaf38 100644
--- a/src/plot/CPlotDistance.cpp
+++ b/src/plot/CPlotDistance.cpp
@@ -39,6 +39,11 @@ void CPlotDistance::setTrack(CGisItemTrk * track)
 
 void CPlotDistance::updateData()
 {
+    if(isHidden())
+    {
+        return;
+    }
+
     CPlotData::axistype_e type = data->axisType;
 
     if(mode == eModeIcon)
@@ -62,6 +67,8 @@ void CPlotDistance::updateData()
     clear();
     if(trk->getTotalElapsedSeconds() == 0)
     {
+        resetZoom();
+        update();
         return;
     }
 
diff --git a/src/plot/CPlotSpeed.cpp b/src/plot/CPlotSpeed.cpp
index 2dc5696..9347aec 100644
--- a/src/plot/CPlotSpeed.cpp
+++ b/src/plot/CPlotSpeed.cpp
@@ -38,6 +38,11 @@ void CPlotSpeed::setTrack(CGisItemTrk * track)
 
 void CPlotSpeed::updateData()
 {
+    if(isHidden())
+    {
+        return;
+    }
+
     CPlotData::axistype_e type = data->axisType;
 
     if(mode == eModeIcon)
@@ -61,6 +66,8 @@ void CPlotSpeed::updateData()
     clear();
     if(trk->getTotalElapsedSeconds() == 0)
     {
+        resetZoom();
+        update();
         return;
     }
 
diff --git a/src/plot/IPlot.cpp b/src/plot/IPlot.cpp
index 7c23735..fff1b03 100644
--- a/src/plot/IPlot.cpp
+++ b/src/plot/IPlot.cpp
@@ -21,6 +21,7 @@
 
 #include "CMainWindow.h"
 #include "canvas/CCanvas.h"
+#include "helpers/CSettings.h"
 
 #include <QtWidgets>
 
@@ -71,6 +72,7 @@ IPlot::IPlot(CGisItemTrk *trk, CPlotData::axistype_e type, mode_e mode, QWidget
     , scaleWidthY1(0)
 
 {
+    setContextMenuPolicy(Qt::CustomContextMenu);
     setMouseTracking(true);
 
     if(trk)
@@ -85,6 +87,11 @@ IPlot::IPlot(CGisItemTrk *trk, CPlotData::axistype_e type, mode_e mode, QWidget
         showScale = false;
         thinLine = true;
     }
+
+    menu = new QMenu(this);
+    actionPrint = menu->addAction(QIcon("://icons/32x32/Save.png"), tr("Save..."), this, SLOT(slotSave()));
+
+    connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
 }
 
 IPlot::~IPlot()
@@ -179,9 +186,6 @@ void IPlot::resetZoom()
     data->y().resetZoom();
     setSizes();
 
-//    initialYMin = data->y().min();
-//    initialYMax = data->y().max();
-
     needsRedraw = true;
     update();
 }
@@ -197,9 +201,6 @@ void IPlot::resizeEvent(QResizeEvent * e)
 {
     setSizes();
 
-//    initialYMin = data->y().min();
-//    initialYMax = data->y().max();
-
     buffer = QImage(e->size(), QImage::Format_ARGB32);
 
     needsRedraw = true;
@@ -476,7 +477,7 @@ void IPlot::draw()
         PAINT_ROUNDED_RECT(p,r);
     }
 
-    if(data->lines.isEmpty() || data->badData)
+    if(data->lines.isEmpty() || data->badData || !data->x().isValid() || !data->y().isValid())
     {
         p.drawText(rect(), Qt::AlignCenter, tr("No or bad data."));
         return;
@@ -554,11 +555,7 @@ void IPlot::drawData(QPainter& p)
         background << QPointF(right,pty);
         background << QPointF(right,bottom);
 
-//        QLinearGradient gradient(0, bottom - yaxis.val2pt(initialYMin), 0, bottom - yaxis.val2pt(initialYMax));
-//        gradient.setColorAt(0, colors[penIdx]);
-//        gradient.setColorAt(1, QColor(0,0,0,0));
         p.setPen(Qt::NoPen);
-//        p.setBrush(gradient);
         p.setBrush(colors[penIdx]);
         p.drawPolygon(background);
 
@@ -632,7 +629,6 @@ void IPlot::drawXScale( QPainter &p )
     }
 
     qreal scale = (right - left) / (limMax - limMin);
-    //     qreal val   = data->x().pt2val(0);
 
     int x = left + (useMin - limMin) * scale;
     int y = bottom + 5;
@@ -707,7 +703,6 @@ void IPlot::drawYScale( QPainter &p )
     }
 
     qreal scale = (top - bottom) / (limMax - limMin);
-    //     qreal val   = data->y().pt2val(0);
 
     int x = left - 5;
     int y = bottom + (useMin - limMin) * scale;
@@ -865,3 +860,40 @@ void IPlot::save(QImage& image)
     draw();
     image = buffer;
 }
+
+void IPlot::slotContextMenu(const QPoint & point)
+{
+    QPoint p = mapToGlobal(point);
+
+    menu->exec(p);
+}
+
+void IPlot::slotSave()
+{
+    SETTINGS;
+    QString path = cfg.value("Paths/lastGraphPath", QDir::homePath()).toString();
+    QString filename = QFileDialog::getSaveFileName( this, tr("Select output file"), path,"Bitmap (*.png)");
+
+    if(filename.isEmpty())
+    {
+        return;
+    }
+
+    QFileInfo fi(filename);
+    if(fi.suffix().toLower() != "png")
+    {
+        filename += ".png";
+    }
+
+    QImage img(size(), QImage::Format_ARGB32);
+    QPainter p;
+    p.begin(&img);
+    p.fillRect(rect(), QBrush(Qt::white));
+    draw(p);
+    p.end();
+
+    img.save(filename);
+
+    path = fi.absolutePath();
+    cfg.setValue("Paths/lastGraphPath", path);
+}
diff --git a/src/plot/IPlot.h b/src/plot/IPlot.h
index db9675a..69629f8 100644
--- a/src/plot/IPlot.h
+++ b/src/plot/IPlot.h
@@ -23,6 +23,8 @@
 #include "plot/CPlotData.h"
 #include <QWidget>
 
+class QMenu;
+
 class IPlot : public QWidget
 {
     Q_OBJECT
@@ -41,6 +43,10 @@ public:
         solid = yes;
     }
 
+private slots:
+    void slotContextMenu(const QPoint & point);
+    void slotSave();
+
 protected:
     void setYLabel(const QString& str);
     void setXLabel(const QString& str);
@@ -127,6 +133,9 @@ protected:
     static QPen pens[];
     static QPen pensThin[];
     static QColor colors[];
+
+    QMenu * menu;
+    QAction * actionPrint;
 };
 
 #endif //IPLOT_H
diff --git a/src/resources.qrc b/src/resources.qrc
index 46d5a12..86faf16 100644
--- a/src/resources.qrc
+++ b/src/resources.qrc
@@ -137,6 +137,7 @@
         <file>icons/32x32/VrtBuilder.png</file>
         <file>icons/32x32/SaveView.png</file>
         <file>icons/32x32/LoadView.png</file>
+        <file>icons/32x32/Save.png</file>
 
         <file>icons/48x48/2DFix.png</file>
         <file>icons/48x48/3DFix.png</file>
@@ -256,6 +257,7 @@
         <file>icons/48x48/VrtBuilder.png</file>
         <file>icons/48x48/SaveView.png</file>
         <file>icons/48x48/LoadView.png</file>
+        <file>icons/48x48/Save.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