[qmapshack] 01/07: Imported Upstream version 0.9.0

Bas Couwenberg sebastic at xs4all.nl
Thu Dec 25 16:37:16 UTC 2014


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

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

commit 3db99617b213b7f6966550880e6c245884817efb
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Thu Dec 25 16:46:03 2014 +0100

    Imported Upstream version 0.9.0
---
 .hg_archival.txt                                   |    4 -
 .hgtags                                            |   19 -
 CMakeLists.txt                                     |    7 +-
 CMakeLists.txt.user                                |  241 +++
 CMakeLists.txt.user.3.2-pre1                       |  288 +++
 changelog.txt                                      |    6 +
 src/CMainWindow.cpp                                |   21 +-
 src/CMainWindow.h                                  |    3 +-
 src/CMakeLists.txt                                 |   37 +-
 src/IMainWindow.ui                                 |   31 +-
 src/canvas/CCanvas.cpp                             |    6 +
 src/canvas/CCanvas.h                               |    1 +
 src/dem/IDemPathSetup.ui                           |  121 +-
 src/gis/CGisListDB.cpp                             |  370 ++--
 src/gis/CGisListDB.h                               |   36 +-
 src/gis/CGisListWks.cpp                            |  362 +++-
 src/gis/CGisListWks.h                              |   14 +-
 src/gis/CGisWidget.cpp                             |   41 +-
 src/gis/CGisWidget.h                               |   89 +-
 src/gis/IGisItem.cpp                               |   28 +-
 src/gis/IGisItem.h                                 |   19 +-
 src/gis/IGisWidget.ui                              |   55 +-
 src/gis/db/CDBFolderDatabase.cpp                   |   28 +-
 src/gis/db/CDBFolderDatabase.h                     |   15 +-
 src/gis/db/CDBFolderGroup.cpp                      |    8 +-
 src/gis/db/CDBFolderGroup.h                        |    2 +-
 src/gis/db/CDBFolderLostFound.cpp                  |   53 +-
 src/gis/db/CDBFolderLostFound.h                    |    6 +-
 src/gis/db/CDBFolderOther.cpp                      |    8 +-
 src/gis/db/CDBFolderOther.h                        |    2 +-
 src/gis/db/CDBFolderProject.cpp                    |   10 +-
 src/gis/db/CDBFolderProject.h                      |    2 +-
 src/gis/db/CDBItem.cpp                             |   51 +-
 src/gis/db/CDBItem.h                               |   15 +-
 src/gis/db/CDBProject.cpp                          |  296 ++-
 src/gis/db/CDBProject.h                            |   51 +
 src/gis/db/CSetupDatabase.cpp                      |  128 ++
 src/gis/db/{CSetupDB.h => CSetupDatabase.h}        |   25 +-
 src/gis/db/{CSetupDB.cpp => CSetupWorkspace.cpp}   |   21 +-
 src/gis/db/{CSetupDB.h => CSetupWorkspace.h}       |   17 +-
 src/gis/db/IDB.cpp                                 |  178 ++
 src/gis/db/{CDBFolderGroup.h => IDB.h}             |   21 +-
 src/gis/db/IDBFolder.cpp                           |  318 ++-
 src/gis/db/IDBFolder.h                             |   33 +-
 src/gis/db/{ISetupDB.ui => ISetupDatabase.ui}      |  103 +-
 src/gis/db/{ISetupDB.ui => ISetupWorkspace.ui}     |   65 +-
 src/gis/gpx/serialization.cpp                      |   12 -
 src/gis/ovl/CGisItemOvlArea.cpp                    |   14 +-
 src/gis/ovl/CGisItemOvlArea.h                      |    3 +
 src/gis/ovl/CScrOptOvlArea.cpp                     |    2 +
 src/gis/ovl/IDetailsOvlArea.ui                     |    7 +
 src/gis/prj/CDetailsPrj.cpp                        |    2 +-
 src/gis/prj/IDetailsPrj.ui                         |    7 +
 src/gis/prj/IGisProject.cpp                        |   53 +-
 src/gis/prj/IGisProject.h                          |    3 +-
 src/gis/qms/CQmsProject.cpp                        |    2 +-
 src/gis/qms/serialization.cpp                      |  136 +-
 src/gis/rte/CGisItemRte.cpp                        |   32 +-
 src/gis/rte/CGisItemRte.h                          |   15 +-
 src/gis/rte/CScrOptRte.h                           |    2 +-
 src/gis/trk/CGisItemTrk.cpp                        |   25 +-
 src/gis/trk/CGisItemTrk.h                          |    4 +
 src/gis/trk/IScrOptTrk.ui                          |    6 +-
 src/gis/wpt/CGisItemWpt.cpp                        |   12 +-
 src/gis/wpt/CGisItemWpt.h                          |   14 +-
 src/gis/wpt/CScrOptWpt.cpp                         |    2 +-
 src/gis/wpt/IDetailsWpt.ui                         |    7 +
 src/gis/wpt/IProjWpt.ui                            |    7 +
 src/gis/wpt/IScrOptWpt.ui                          |    3 -
 src/helpers/CAppOpts.h                             |    2 +
 src/helpers/CSettings.h                            |    2 +-
 src/icons/32x32/DatabaseConvert.png                |  Bin 0 -> 1905 bytes
 src/icons/32x32/Empty.png                          |  Bin 0 -> 581 bytes
 src/icons/32x32/MimeDemVRT.png                     |  Bin 1219 -> 1237 bytes
 src/icons/32x32/MimeIMG.png                        |  Bin 1492 -> 1783 bytes
 src/icons/32x32/MimeJNX.png                        |  Bin 1500 -> 1781 bytes
 src/icons/32x32/MimeMAP.png                        |  Bin 1800 -> 1845 bytes
 src/icons/32x32/MimeRMAP.png                       |  Bin 1718 -> 1961 bytes
 src/icons/32x32/MimeTMS.png                        |  Bin 1259 -> 1353 bytes
 src/icons/32x32/MimeVRT.png                        |  Bin 1629 -> 1775 bytes
 src/icons/32x32/MimeWMTS.png                       |  Bin 1716 -> 1790 bytes
 src/icons/32x32/SearchGoogle.png                   |  Bin 1915 -> 1923 bytes
 src/icons/48x48/DatabaseConvert.png                |  Bin 0 -> 2840 bytes
 src/icons/48x48/Empty.png                          |  Bin 0 -> 861 bytes
 src/icons/48x48/MimeDemVRT.png                     |  Bin 1809 -> 1846 bytes
 src/icons/48x48/MimeIMG.png                        |  Bin 2388 -> 2824 bytes
 src/icons/48x48/MimeJNX.png                        |  Bin 2409 -> 2874 bytes
 src/icons/48x48/MimeMAP.png                        |  Bin 2882 -> 2903 bytes
 src/icons/48x48/MimeRMAP.png                       |  Bin 2704 -> 3105 bytes
 src/icons/48x48/MimeTMS.png                        |  Bin 2073 -> 2203 bytes
 src/icons/48x48/MimeVRT.png                        |  Bin 2565 -> 2839 bytes
 src/icons/48x48/MimeWMTS.png                       |  Bin 2952 -> 3014 bytes
 src/icons/48x48/SearchGoogle.png                   |  Bin 3068 -> 3119 bytes
 src/icons/DatabaseConvert.svg                      |  260 +++
 src/icons/Empty.svg                                |   73 +
 src/icons/MimeDemVRT.svg                           |   16 +-
 src/icons/MimeIMG.svg                              |   42 +-
 src/icons/MimeJNX.svg                              |   38 +-
 src/icons/MimeMAP.svg                              |   42 +-
 src/icons/MimeRMAP.svg                             |   42 +-
 src/icons/MimeTMS.svg                              |   26 +-
 src/icons/MimeVRT.svg                              |   12 +-
 src/icons/MimeWMTS.svg                             |   64 +-
 src/locale/qmapshack_cs.ts                         | 1170 ++++++++---
 src/locale/qmapshack_de.ts                         | 1092 +++++++---
 src/locale/qmapshack_es.ts                         | 2132 +++++++++++++-------
 src/main.cpp                                       |   10 +-
 src/map/IMapPathSetup.ui                           |  159 +-
 src/mouse/CMouseNormal.cpp                         |    9 +
 src/mouse/CMouseNormal.h                           |    1 +
 src/mouse/CScrOptUnclutter.cpp                     |   17 +-
 src/mouse/CScrOptUnclutter.h                       |    1 +
 src/mouse/IMouse.h                                 |    1 +
 src/qlgt/CImportDatabase.cpp                       |  117 ++
 .../rte/CScrOptRte.h => qlgt/CImportDatabase.h}    |   33 +-
 src/qlgt/CQlb.cpp                                  |  174 ++
 src/qlgt/CQlb.h                                    |   99 +
 src/qlgt/CQlgtDb.cpp                               |  757 +++++++
 src/qlgt/CQlgtDb.h                                 |   80 +
 src/qlgt/CQlgtDiary.cpp                            |  258 +++
 src/{gis/db/CSetupDB.h => qlgt/CQlgtDiary.h}       |   28 +-
 src/qlgt/CQlgtFolder.cpp                           |   74 +
 src/{gis/db/CSetupDB.h => qlgt/CQlgtFolder.h}      |   30 +-
 src/qlgt/CQlgtRoute.cpp                            |  270 +++
 src/{gis/db/IDBFolder.h => qlgt/CQlgtRoute.h}      |   58 +-
 src/qlgt/CQlgtTrack.cpp                            |  344 ++++
 src/qlgt/CQlgtTrack.h                              |  261 +++
 src/qlgt/CQlgtWpt.cpp                              |  374 ++++
 src/qlgt/CQlgtWpt.h                                |  114 ++
 src/qlgt/CQmsDb.cpp                                |  263 +++
 src/qlgt/CQmsDb.h                                  |   64 +
 src/qlgt/IImportDatabase.ui                        |  115 ++
 src/{gis/db/CDBItem.cpp => qlgt/IItem.cpp}         |    7 +-
 src/{gis/db/CSetupDB.h => qlgt/IItem.h}            |   35 +-
 src/qlgt/IQlgtOverlay.cpp                          |  195 ++
 src/{gis/rte/CScrOptRte.h => qlgt/IQlgtOverlay.h}  |   47 +-
 src/qlgt/converter.cpp                             |  267 +++
 src/resources.qrc                                  |    4 +
 138 files changed, 10673 insertions(+), 2231 deletions(-)

diff --git a/.hg_archival.txt b/.hg_archival.txt
deleted file mode 100644
index 9b979dc..0000000
--- a/.hg_archival.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-repo: 9d6ee306235c77d65d21797124dfc82760eb94e8
-node: ab336ed933234bea7ae829acce0f915af0bf03a7
-branch: default
-tag: V 0.8.2
diff --git a/.hgtags b/.hgtags
deleted file mode 100644
index 9219266..0000000
--- a/.hgtags
+++ /dev/null
@@ -1,19 +0,0 @@
-fa1c3f1052c60c9dbb9257dafe64ddc260703401 V 0.1.0
-fa1c3f1052c60c9dbb9257dafe64ddc260703401 V 0.1.0
-0000000000000000000000000000000000000000 V 0.1.0
-0000000000000000000000000000000000000000 V 0.1.0
-b64cf4a6f83e022ff9f3561b1b2032328f778b24 V 0.1.0
-b64cf4a6f83e022ff9f3561b1b2032328f778b24 V 0.1.0
-0000000000000000000000000000000000000000 V 0.1.0
-0000000000000000000000000000000000000000 V 0.1.0
-ebf85b3b5f8522e87165d418b44a2e7c89df1442 V 0.1.0
-6e2abcfd92467de2b4db3bea7c1f18948c909486 V 0.2.0
-927dda1c9e5fc1d3c5468a06953e5fe4842b66d7 V 0.3.0
-49b3237aaa24ac3100f525643b93b184d34a22ae V 0.3.0.bureaucratic
-cbe5b6e6cab489636c3cce79c16a340fb249156f V 0.3.1
-96911e8840740c208cffde0c02eb8d1e81267ab2 V 0.4.0
-c0720884e8fdba0b812a76e8620f972f302e4162 V 0.5.0
-d7d2ddcbb62525558535f27ebffb1f9a54133441 V 0.6.0
-60688b74ffb725c9c4503e61557365f83300f678 V 0.7.0
-c77136ce6df5377999c5c4fa3b8030a34e67e9a0 V 0.8.0
-ef016d14cfedfd7ef049e654b8ba51ddd0596550 V 0.8.1
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 808ec86..f9247d5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,7 +5,7 @@ project(QMapShack)
 # has to be removed later on
 
 if(UNIX)
-set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} /opt/Qt/5.3/gcc_64)
+#set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} /opt/Qt/5.3/gcc_64)
 endif(UNIX)
 
 
@@ -20,8 +20,8 @@ endif(WIN32)
 set(APPLICATION_NAME qmapshack)
 
 set(APPLICATION_VERSION_MAJOR "0")
-set(APPLICATION_VERSION_MINOR "8")
-set(APPLICATION_VERSION_PATCH "2")
+set(APPLICATION_VERSION_MINOR "9")
+set(APPLICATION_VERSION_PATCH "0")
 
 add_definitions(-DVER_MAJOR=${APPLICATION_VERSION_MAJOR} -DVER_MINOR=${APPLICATION_VERSION_MINOR} -DVER_STEP=${APPLICATION_VERSION_PATCH} -DAPPLICATION_NAME=${PROJECT_NAME})
 
@@ -65,6 +65,7 @@ configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
 
 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
 add_subdirectory(3rdparty/CGetOpt)
+#add_subdirectory(3rdparty/DBConverter)
 add_subdirectory(src)
 
 
diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user
new file mode 100644
index 0000000..cb54a83
--- /dev/null
+++ b/CMakeLists.txt.user
@@ -0,0 +1,241 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QtCreatorProject>
+<!-- Written by QtCreator 3.3.0, 2014-12-21T17:44:49. -->
+<qtcreator>
+ <data>
+  <variable>EnvironmentId</variable>
+  <value type="QByteArray">{044d553a-749a-4a4b-b707-1344605bd255}</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.ActiveTarget</variable>
+  <value type="int">0</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.EditorSettings</variable>
+  <valuemap type="QVariantMap">
+   <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
+   <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
+   <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
+   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
+    <value type="QString" key="language">Cpp</value>
+    <valuemap type="QVariantMap" key="value">
+     <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
+    </valuemap>
+   </valuemap>
+   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
+    <value type="QString" key="language">QmlJS</value>
+    <valuemap type="QVariantMap" key="value">
+     <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
+    </valuemap>
+   </valuemap>
+   <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
+   <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
+   <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
+   <value type="int" key="EditorConfiguration.IndentSize">4</value>
+   <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
+   <value type="int" key="EditorConfiguration.MarginColumn">80</value>
+   <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
+   <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
+   <value type="int" key="EditorConfiguration.PaddingMode">1</value>
+   <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
+   <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
+   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
+   <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
+   <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
+   <value type="int" key="EditorConfiguration.TabSize">8</value>
+   <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
+   <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
+   <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
+   <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
+   <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
+   <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.PluginSettings</variable>
+  <valuemap type="QVariantMap"/>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.Target.0</variable>
+  <valuemap type="QVariantMap">
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">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>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+    <value type="bool" key="CMakeProjectManager.CMakeBuildConfiguration.UseNinja">false</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/oeichler/Code/cpp/build_QMapShack</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments">-j8</value>
+      <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="CMakeProjectManager.MakeStep.Clean">false</value>
+      <value type="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>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments">clean</value>
+      <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="CMakeProjectManager.MakeStep.Clean">true</value>
+      <value type="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>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">all</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Lokales Deployment</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+     <value type="int">0</value>
+     <value type="int">1</value>
+     <value type="int">2</value>
+     <value type="int">3</value>
+     <value type="int">4</value>
+     <value type="int">5</value>
+     <value type="int">6</value>
+     <value type="int">7</value>
+     <value type="int">8</value>
+     <value type="int">9</value>
+     <value type="int">10</value>
+     <value type="int">11</value>
+     <value type="int">12</value>
+     <value type="int">13</value>
+     <value type="int">14</value>
+    </valuelist>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguation.Title">qlgt2qms</value>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments"></value>
+    <value type="bool" key="CMakeProjectManager.CMakeRunConfiguration.UseTerminal">false</value>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory"></value>
+    <value type="int" key="PE.EnvironmentAspect.Base">2</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"></value>
+    <value type="bool" key="CMakeProjectManager.CMakeRunConfiguration.UseTerminal">false</value>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory"></value>
+    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmapshack</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.qmapshack</value>
+    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">2</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.TargetCount</variable>
+  <value type="int">1</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
+  <value type="int">18</value>
+ </data>
+ <data>
+  <variable>Version</variable>
+  <value type="int">18</value>
+ </data>
+</qtcreator>
diff --git a/CMakeLists.txt.user.3.2-pre1 b/CMakeLists.txt.user.3.2-pre1
new file mode 100644
index 0000000..2c16a13
--- /dev/null
+++ b/CMakeLists.txt.user.3.2-pre1
@@ -0,0 +1,288 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QtCreatorProject>
+<!-- Written by QtCreator 3.1.1, 2014-12-11T17:37:24. -->
+<qtcreator>
+ <data>
+  <variable>ProjectExplorer.Project.ActiveTarget</variable>
+  <value type="int">0</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.EditorSettings</variable>
+  <valuemap type="QVariantMap">
+   <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
+   <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
+   <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
+   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
+    <value type="QString" key="language">Cpp</value>
+    <valuemap type="QVariantMap" key="value">
+     <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
+    </valuemap>
+   </valuemap>
+   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
+    <value type="QString" key="language">QmlJS</value>
+    <valuemap type="QVariantMap" key="value">
+     <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
+    </valuemap>
+   </valuemap>
+   <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
+   <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
+   <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
+   <value type="int" key="EditorConfiguration.IndentSize">4</value>
+   <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
+   <value type="int" key="EditorConfiguration.MarginColumn">80</value>
+   <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
+   <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
+   <value type="int" key="EditorConfiguration.PaddingMode">1</value>
+   <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
+   <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
+   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
+   <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
+   <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
+   <value type="int" key="EditorConfiguration.TabSize">8</value>
+   <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
+   <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
+   <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
+   <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
+   <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
+   <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.PluginSettings</variable>
+  <valuemap type="QVariantMap"/>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.Target.0</variable>
+  <valuemap type="QVariantMap">
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.3.0 GCC 64bit</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.3.0 GCC 64bit</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.53.gcc_64_kit</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">1</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+    <value type="bool" key="CMakeProjectManager.CMakeBuildConfiguration.UseNinja">false</value>
+    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/oeichler/Code/cpp/build_QMapShack</value>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments">-j8</value>
+      <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="CMakeProjectManager.MakeStep.Clean">false</value>
+      <value type="bool" key="CMakeProjectManager.MakeStep.UseNinja">false</value>
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+    </valuemap>
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+      <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments">clean</value>
+      <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
+      <value type="bool" key="CMakeProjectManager.MakeStep.Clean">true</value>
+      <value type="bool" key="CMakeProjectManager.MakeStep.UseNinja">false</value>
+      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
+     </valuemap>
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">all</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment</value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+    </valuemap>
+    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Lokales Deployment</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+     <value type="int">0</value>
+     <value type="int">1</value>
+     <value type="int">2</value>
+     <value type="int">3</value>
+     <value type="int">4</value>
+     <value type="int">5</value>
+     <value type="int">6</value>
+     <value type="int">7</value>
+     <value type="int">8</value>
+     <value type="int">9</value>
+     <value type="int">10</value>
+     <value type="int">11</value>
+     <value type="int">12</value>
+     <value type="int">13</value>
+     <value type="int">14</value>
+    </valuelist>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguation.Title">maproom</value>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments"></value>
+    <value type="bool" key="CMakeProjectManager.CMakeRunConfiguration.UseTerminal">false</value>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory"></value>
+    <value type="int" key="PE.EnvironmentAspect.Base">-1</value>
+    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">maproom (deaktiviert)</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.maproom</value>
+    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+   </valuemap>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+     <value type="int">0</value>
+     <value type="int">1</value>
+     <value type="int">2</value>
+     <value type="int">3</value>
+     <value type="int">4</value>
+     <value type="int">5</value>
+     <value type="int">6</value>
+     <value type="int">7</value>
+     <value type="int">8</value>
+     <value type="int">9</value>
+     <value type="int">10</value>
+     <value type="int">11</value>
+     <value type="int">12</value>
+     <value type="int">13</value>
+     <value type="int">14</value>
+    </valuelist>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguation.Title">qmapshack</value>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments">-d</value>
+    <value type="bool" key="CMakeProjectManager.CMakeRunConfiguration.UseTerminal">false</value>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory"></value>
+    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmapshack</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.qmapshack</value>
+    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+   </valuemap>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.2">
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+     <value type="int">0</value>
+     <value type="int">1</value>
+     <value type="int">2</value>
+     <value type="int">3</value>
+     <value type="int">4</value>
+     <value type="int">5</value>
+     <value type="int">6</value>
+     <value type="int">7</value>
+     <value type="int">8</value>
+     <value type="int">9</value>
+     <value type="int">10</value>
+     <value type="int">11</value>
+     <value type="int">12</value>
+     <value type="int">13</value>
+     <value type="int">14</value>
+    </valuelist>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguation.Title">qlgt2qms</value>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments"></value>
+    <value type="bool" key="CMakeProjectManager.CMakeRunConfiguration.UseTerminal">false</value>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory"></value>
+    <value type="int" key="PE.EnvironmentAspect.Base">-1</value>
+    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qlgt2qms</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.qlgt2qms</value>
+    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">3</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.TargetCount</variable>
+  <value type="int">1</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
+  <value type="QByteArray">{044d553a-749a-4a4b-b707-1344605bd255}</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
+  <value type="int">15</value>
+ </data>
+</qtcreator>
diff --git a/changelog.txt b/changelog.txt
index 498cc05..cb04987 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,9 @@
+V 0.9.0
+* Fix sign of area calculation
+* Mark item with user focus in item unclutter screen
+* Add support for multiple databases 
+* Add converter for QLandkarte GT to QMapShack database
+
 V 0.8.2
 * Calculate area covered by area overlays
 * Change coordinate format for long/lat grid from dd mm.mm to dd.dddddd
diff --git a/src/CMainWindow.cpp b/src/CMainWindow.cpp
index abc6928..3285de8 100644
--- a/src/CMainWindow.cpp
+++ b/src/CMainWindow.cpp
@@ -32,7 +32,8 @@
 #include "CAbout.h"
 #include "gis/CGisWidget.h"
 #include "gis/WptIcons.h"
-#include "gis/db/CSetupDB.h"
+#include "gis/db/CSetupWorkspace.h"
+#include "qlgt/CImportDatabase.h"
 
 #include <QtGui>
 #include <QtWidgets>
@@ -52,11 +53,6 @@ CMainWindow::CMainWindow()
 
     IUnit::self().setUnitType((IUnit::type_e)cfg.value("MainWindow/units",IUnit::eTypeMetric).toInt(), this);
 
-    QString path = cfg.value("Database/path", QDir::home().filePath(CONFIGDIR).append("/qms.db")).toString();
-    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
-    db.setDatabaseName(path);
-    db.open();
-
     gisWidget = new CGisWidget(menuProject, this);
     dockGis->setWidget(gisWidget);
 
@@ -92,7 +88,8 @@ CMainWindow::CMainWindow()
     connect(actionSetupMapWks, SIGNAL(triggered()), this, SLOT(slotSetupMapWks()));
     connect(actionSetupTimeZone, SIGNAL(triggered()), this, SLOT(slotSetupTimeZone()));
     connect(actionSetupUnits, SIGNAL(triggered()), this, SLOT(slotSetupUnits()));
-    connect(actionSetupDatabase, SIGNAL(triggered()), this, SLOT(slotSetupDatabase()));
+    connect(actionSetupWorkspace, SIGNAL(triggered()), this, SLOT(slotSetupWorkspace()));
+    connect(actionImportDatabase, SIGNAL(triggered()), this, SLOT(slotImportDatabase()));
     connect(actionSaveGISData, SIGNAL(triggered()), gisWidget, SLOT(slotSaveAll()));
     connect(actionLoadGISData, SIGNAL(triggered()), this, SLOT(slotLoadGISData()));
     connect(tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(slotTabCloseRequest(int)));
@@ -543,12 +540,18 @@ void CMainWindow::slotSetupUnits()
     dlg.exec();
 }
 
-void CMainWindow::slotSetupDatabase()
+void CMainWindow::slotSetupWorkspace()
 {
-    CSetupDB dlg(this);
+    CSetupWorkspace dlg(this);
     dlg.exec();
 }
 
+void CMainWindow::slotImportDatabase()
+{
+    CImportDatabase * widget = new CImportDatabase(this);
+    addWidgetToTab(widget);
+}
+
 void CMainWindow::slotLoadGISData()
 {
     SETTINGS;
diff --git a/src/CMainWindow.h b/src/CMainWindow.h
index 94b39b2..ee4d878 100644
--- a/src/CMainWindow.h
+++ b/src/CMainWindow.h
@@ -79,7 +79,8 @@ class CMainWindow : public QMainWindow, private Ui::IMainWindow
         void slotSetupMapWks();
         void slotSetupTimeZone();
         void slotSetupUnits();
-        void slotSetupDatabase();
+        void slotSetupWorkspace();
+        void slotImportDatabase();
         void slotLoadGISData();
 
     private:
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 36350b7..da94615 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -101,7 +101,9 @@ set( SRCS
     gis/gpx/serialization.cpp
     gis/qms/CQmsProject.cpp
     gis/qms/serialization.cpp
-    gis/db/CSetupDB.cpp
+    gis/db/IDB.cpp
+    gis/db/CSetupDatabase.cpp
+    gis/db/CSetupWorkspace.cpp
     gis/db/CSetupFolder.cpp
     gis/db/IDBFolder.cpp
     gis/db/CDBFolderLostFound.cpp
@@ -134,6 +136,18 @@ set( SRCS
     plot/CPlotSpeed.cpp
     plot/CPlotDistance.cpp
     plot/CPlotTrack.cpp
+    qlgt/converter.cpp
+    qlgt/CQlb.cpp
+    qlgt/IItem.cpp
+    qlgt/CQlgtFolder.cpp
+    qlgt/CQlgtWpt.cpp
+    qlgt/CQlgtTrack.cpp
+    qlgt/CQlgtRoute.cpp
+    qlgt/CQlgtDiary.cpp
+    qlgt/IQlgtOverlay.cpp
+    qlgt/CImportDatabase.cpp
+    qlgt/CQlgtDb.cpp
+    qlgt/CQmsDb.cpp
 )
 
 set( HDRS
@@ -224,8 +238,10 @@ set( HDRS
     gis/CGisListDB.h
     gis/CGisListWks.h
     gis/qms/CQmsProject.cpp
+    gis/db/IDB.cpp
     gis/db/macros.h
-    gis/db/CSetupDB.h
+    gis/db/CSetupDatabase.h
+    gis/db/CSetupWorkspace.h
     gis/db/CSetupFolder.h
     gis/db/IDBFolder.h
     gis/db/CDBFolderLostFound.h
@@ -259,6 +275,17 @@ set( HDRS
     plot/CPlotSpeed.h
     plot/CPlotDistance.h
     plot/CPlotTrack.h
+    qlgt/CQlb.h
+    qlgt/IItem.h
+    qlgt/CQlgtFolder.h
+    qlgt/CQlgtWpt.h
+    qlgt/CQlgtTrack.h
+    qlgt/CQlgtRoute.h
+    qlgt/CQlgtDiary.h
+    qlgt/IQlgtOverlay.h
+    qlgt/CImportDatabase.h
+    qlgt/CQlgtDb.h
+    qlgt/CQmsDb.h
 )
 
 set( UIS
@@ -286,7 +313,8 @@ set( UIS
     mouse/IScrOptRangeTrk.ui
     gis/IGisWidget.ui
     gis/prj/IDetailsPrj.ui
-    gis/db/ISetupDB.ui
+    gis/db/ISetupDatabase.ui
+    gis/db/ISetupWorkspace.ui
     gis/db/ISetupFolder.ui
     gis/wpt/IScrOptWpt.ui
     gis/wpt/IDetailsWpt.ui
@@ -300,6 +328,7 @@ set( UIS
     gis/ovl/IDetailsOvlArea.ui
     units/ITimeZoneSetup.ui
     units/IUnitsSetup.ui
+    qlgt/IImportDatabase.ui
 )
 
 set( RCS
@@ -311,7 +340,7 @@ qt5_wrap_ui(UI_HDRS ${UIS})
 qt5_add_resources(RC_SRCS ${RCS})
 
 if(UNIX)
-    add_definitions(-Wall)
+    add_definitions(-Wall -Wno-switch)
 endif(UNIX)
 
 
diff --git a/src/IMainWindow.ui b/src/IMainWindow.ui
index 26e9b66..d40e571 100644
--- a/src/IMainWindow.ui
+++ b/src/IMainWindow.ui
@@ -103,12 +103,19 @@
     <addaction name="actionAddEmptyProject"/>
     <addaction name="actionSearchGoogle"/>
     <addaction name="separator"/>
-    <addaction name="actionSetupDatabase"/>
+    <addaction name="actionSetupWorkspace"/>
     <addaction name="actionCloseAllProjects"/>
    </widget>
+   <widget class="QMenu" name="menuExtra">
+    <property name="title">
+     <string>Tool</string>
+    </property>
+    <addaction name="actionImportDatabase"/>
+   </widget>
    <addaction name="menuFile"/>
    <addaction name="menuProject"/>
    <addaction name="menuView"/>
+   <addaction name="menuExtra"/>
    <addaction name="menuWindow"/>
    <addaction name="menu"/>
   </widget>
@@ -419,6 +426,9 @@
    <property name="text">
     <string>Close all projects</string>
    </property>
+   <property name="shortcut">
+    <string>F8</string>
+   </property>
   </action>
   <action name="actionSetupUnits">
    <property name="icon">
@@ -429,13 +439,28 @@
     <string>Setup Units</string>
    </property>
   </action>
-  <action name="actionSetupDatabase">
+  <action name="actionSetupWorkspace">
    <property name="icon">
     <iconset resource="resources.qrc">
      <normaloff>:/icons/32x32/DatabaseSetup.png</normaloff>:/icons/32x32/DatabaseSetup.png</iconset>
    </property>
    <property name="text">
-    <string>Setup Database</string>
+    <string>Setup Workspace</string>
+   </property>
+   <property name="toolTip">
+    <string>Setup save on exit.</string>
+   </property>
+  </action>
+  <action name="actionImportDatabase">
+   <property name="icon">
+    <iconset resource="resources.qrc">
+     <normaloff>:/icons/32x32/DatabaseConvert.png</normaloff>:/icons/32x32/DatabaseConvert.png</iconset>
+   </property>
+   <property name="text">
+    <string>Import Database from QLandkarte</string>
+   </property>
+   <property name="toolTip">
+    <string>Import QLandkarte GT database</string>
    </property>
   </action>
  </widget>
diff --git a/src/canvas/CCanvas.cpp b/src/canvas/CCanvas.cpp
index 6e93255..35a0a01 100644
--- a/src/canvas/CCanvas.cpp
+++ b/src/canvas/CCanvas.cpp
@@ -350,6 +350,12 @@ void CCanvas::mouseReleaseEvent(QMouseEvent *e)
     QWidget::mouseReleaseEvent(e);
 }
 
+void CCanvas::mouseDoubleClickEvent(QMouseEvent * e)
+{
+    mouse->mouseDoubleClickEvent(e);
+    QWidget::mouseDoubleClickEvent(e);
+}
+
 void CCanvas::wheelEvent(QWheelEvent * e)
 {
     mouse->wheelEvent(e);
diff --git a/src/canvas/CCanvas.h b/src/canvas/CCanvas.h
index 5fe344f..66c5741 100644
--- a/src/canvas/CCanvas.h
+++ b/src/canvas/CCanvas.h
@@ -147,6 +147,7 @@ class CCanvas : public QWidget
         void mousePressEvent(QMouseEvent * e);
         void mouseMoveEvent(QMouseEvent * e);
         void mouseReleaseEvent(QMouseEvent *e);
+        void mouseDoubleClickEvent(QMouseEvent * e);
         void wheelEvent(QWheelEvent * e);
         void enterEvent(QEvent * e);
         void leaveEvent(QEvent * e);
diff --git a/src/dem/IDemPathSetup.ui b/src/dem/IDemPathSetup.ui
index 8381ef2..8eb030a 100644
--- a/src/dem/IDemPathSetup.ui
+++ b/src/dem/IDemPathSetup.ui
@@ -15,64 +15,69 @@
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
-    <widget class="QFrame" name="frame">
-     <property name="frameShape">
-      <enum>QFrame::StyledPanel</enum>
-     </property>
-     <property name="frameShadow">
-      <enum>QFrame::Raised</enum>
-     </property>
-     <layout class="QHBoxLayout" name="horizontalLayout_2">
-      <item>
-       <widget class="QListWidget" name="listWidget">
-        <property name="selectionMode">
-         <enum>QAbstractItemView::ExtendedSelection</enum>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <layout class="QVBoxLayout" name="verticalLayout_2">
-        <item>
-         <widget class="QToolButton" name="toolAdd">
-          <property name="text">
-           <string>...</string>
-          </property>
-          <property name="icon">
-           <iconset resource="../resources.qrc">
-            <normaloff>:/icons/32x32/Add.png</normaloff>:/icons/32x32/Add.png</iconset>
-          </property>
-          <property name="iconSize">
-           <size>
-            <width>32</width>
-            <height>32</height>
-           </size>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QToolButton" name="toolDelete">
-          <property name="enabled">
-           <bool>false</bool>
-          </property>
-          <property name="text">
-           <string>...</string>
-          </property>
-          <property name="icon">
-           <iconset resource="../resources.qrc">
-            <normaloff>:/icons/32x32/DeleteMultiple.png</normaloff>:/icons/32x32/DeleteMultiple.png</iconset>
-          </property>
-          <property name="iconSize">
-           <size>
-            <width>32</width>
-            <height>32</height>
-           </size>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-     </layout>
-    </widget>
+    <layout class="QHBoxLayout" name="horizontalLayout_3">
+     <item>
+      <widget class="QListWidget" name="listWidget">
+       <property name="selectionMode">
+        <enum>QAbstractItemView::ExtendedSelection</enum>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QVBoxLayout" name="verticalLayout_2">
+       <item>
+        <widget class="QToolButton" name="toolAdd">
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset resource="../resources.qrc">
+           <normaloff>:/icons/32x32/Add.png</normaloff>:/icons/32x32/Add.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="toolDelete">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset resource="../resources.qrc">
+           <normaloff>:/icons/32x32/DeleteMultiple.png</normaloff>:/icons/32x32/DeleteMultiple.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </item>
+    </layout>
    </item>
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout">
diff --git a/src/gis/CGisListDB.cpp b/src/gis/CGisListDB.cpp
index 281ab5c..b28c900 100644
--- a/src/gis/CGisListDB.cpp
+++ b/src/gis/CGisListDB.cpp
@@ -17,200 +17,234 @@
 **********************************************************************************************/
 
 #include "gis/CGisListDB.h"
+#include "gis/CGisWidget.h"
 #include "gis/db/macros.h"
-#include "gis/db/CSetupFolder.h"
 #include "gis/db/CDBFolderDatabase.h"
 #include "gis/db/CDBFolderLostFound.h"
+#include "gis/db/CDBItem.h"
+#include "gis/db/CSetupFolder.h"
+#include "gis/db/CSetupDatabase.h"
+#include "helpers/CSettings.h"
+#include "config.h"
 
 #include <QtSql>
 #include <QtWidgets>
 
-CGisListDB::CGisListDB(QWidget *parent)
-    : QTreeWidget(parent)
+class CGisListDBEditLock
 {
-    db = QSqlDatabase::database();
-
-    QSqlQuery query(db);
+    public:
+        CGisListDBEditLock(bool waitCursor, CGisListDB * widget) : widget(widget), waitCursor(waitCursor)
+        {
+            if(waitCursor)
+            {
+                QApplication::setOverrideCursor(Qt::WaitCursor);
+            }
+            widget->isInternalEdit += 1;
+        }
+        ~CGisListDBEditLock()
+        {
+            if(waitCursor)
+            {
+                QApplication::restoreOverrideCursor();
+            }
+            widget->isInternalEdit -= 1;
+        }
+    private:
+        CGisListDB * widget;
+        bool waitCursor;
+};
 
-    if(!query.exec("PRAGMA locking_mode=EXCLUSIVE"))
-    {
-        return;
-    }
 
-    if(!query.exec("PRAGMA synchronous=OFF"))
-    {
-        return;
-    }
+CGisListDB::CGisListDB(QWidget *parent)
+    : QTreeWidget(parent)
+    , isInternalEdit(0)
+{   
 
-    if(!query.exec("PRAGMA temp_store=MEMORY"))
-    {
-        return;
-    }
+    SETTINGS;
+    QStringList names = cfg.value("Database/names").toStringList();
+    QStringList files = cfg.value("Database/files").toStringList();
 
-    if(!query.exec("PRAGMA default_cache_size=50"))
+    const int N = names.count();
+    for(int i = 0; i < N; i++)
     {
-        return;
+        addDatabase(names[i], files[i]);
     }
 
-    if(!query.exec("PRAGMA page_size=8192"))
-    {
-        return;
-    }
+    menuNone            = new QMenu(this);
+    actionAddDatabase   = menuNone->addAction(QIcon("://icons/32x32/Add.png"), tr("Add Database"), this, SLOT(slotAddDatabase()));
 
-    if(!query.exec("SELECT version FROM versioninfo"))
-    {
-        initDB();
-    }
-    else if(query.next())
-    {
-        int version = query.value(0).toInt();
-        if(version != DB_VERSION)
-        {
-            migrateDB(version);
-        }
-    }
-    else
-    {
-        initDB();
-    }
-
-//    itemLostFound       = new CDBFolderLostFound(this);
-//    itemDatabase        = new CDBFolderDatabase(this);
+    menuFolder          = new QMenu(this);
+    actionAddFolder     = menuFolder->addAction(QIcon("://icons/32x32/Add.png"), tr("Add Folder"), this, SLOT(slotAddFolder()));
+    actionDelFolder     = menuFolder->addAction(QIcon("://icons/32x32/DeleteOne.png"), tr("Delete Folder"), this, SLOT(slotDelFolder()));
 
     menuDatabase        = new QMenu(this);
-    actionAddFolder     = menuDatabase->addAction(QIcon("://icons/32x32/Add.png"), tr("Add Folder"), this, SLOT(slotAddFolder()));
+    menuDatabase->addAction(actionAddFolder);
+    actionDelDatabase   = menuDatabase->addAction(QIcon("://icons/32x32/DeleteOne.png"), tr("Remove Database"), this, SLOT(slotDelDatabase()));
 
-    menuProject         = new QMenu(this);
-    menuItem            = new QMenu(this);
+    menuLostFound       = new QMenu(this);
+    actionDelLostFound  = menuLostFound->addAction(QIcon("://icons/32x32/Empty.png"), tr("Empty"), this, SLOT(slotDelLostFound()));
 
     connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
     connect(this, SIGNAL(itemExpanded(QTreeWidgetItem*)), this, SLOT(slotItemExpanded(QTreeWidgetItem*)));
-
-//    itemDatabase->setExpanded(true);
+    connect(this, SIGNAL(itemChanged(QTreeWidgetItem*,int)), this, SLOT(slotItemChanged(QTreeWidgetItem*,int)));
 }
 
 CGisListDB::~CGisListDB()
 {
+    SETTINGS;
+    QStringList names;
+    QStringList files;
+
+    const int N = topLevelItemCount();
+    for(int n = 0; n < N; n++)
+    {
+        CDBFolderDatabase * database = dynamic_cast<CDBFolderDatabase*>(topLevelItem(n));
+        if(database)
+        {
+            names << database->text(IDBFolder::eColumnName);
+            files << database->getFilename();
+        }
+    }
+
+    cfg.setValue("Database/names", names);
+    cfg.setValue("Database/files", files);
+
 }
 
-void CGisListDB::initDB()
-{
-    QSqlQuery query(db);
 
-    if(query.exec( "CREATE TABLE versioninfo ( version TEXT )"))
+CDBFolderDatabase * CGisListDB::getDataBase(const QString& name)
+{
+    CGisListDBEditLock lock(true, this);
+    const int N = topLevelItemCount();
+    for(int n = 0; n < N; n++)
     {
-        query.prepare( "INSERT INTO versioninfo (version) VALUES(:version)");
-        query.bindValue(":version", DB_VERSION);
-        QUERY_EXEC(; );
+        CDBFolderDatabase * database = dynamic_cast<CDBFolderDatabase*>(topLevelItem(n));
+        if(database && (database->getDBName() == name))
+        {
+            return database;
+        }
     }
+    return 0;
+}
 
-    if(!query.exec( "CREATE TABLE folders ("
-                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
-                    "type           INTEGER NOT NULL,"
-                    "date           DATETIME DEFAULT CURRENT_TIMESTAMP,"
-                    "name           TEXT NOT NULL,"
-                    "comment        TEXT,"
-                    "locked         BOOLEAN DEFAULT FALSE"
-                    ")"))
+bool CGisListDB::hasDatabase(const QString& name)
+{
+    CGisListDBEditLock lock(true, this);
+    const int N = topLevelItemCount();
+    for(int i = 0; i < N; i++)
     {
-        qDebug() << query.lastQuery();
-        qDebug() << query.lastError();
+        CDBFolderDatabase * folder = dynamic_cast<CDBFolderDatabase*>(topLevelItem(i));
+        if(folder && (folder->text(IDBFolder::eColumnName) == name))
+        {
+            return true;
+        }
     }
+    return false;
+}
+
+
+bool CGisListDB::event(QEvent * e)
+{
+    CGisListDBEditLock lock(true, this);
 
-    if(!query.exec( "CREATE TABLE items ("
-                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
-                    "type           INTEGER,"
-                    "key            TEXT NOT NULL,"
-                    "date           DATETIME DEFAULT CURRENT_TIMESTAMP,"
-                    "icon           TEXT NOT NULL,"
-                    "name           TEXT NOT NULL,"
-                    "comment        TEXT,"
-                    "data           BLOB NOT NULL"
-                    ")"))
+    switch(e->type())
+    {
+    case eEvtW2DAckInfo:
     {
-        qDebug() << query.lastQuery();
-        qDebug() << query.lastError();
+        CEvtW2DAckInfo * evt = (CEvtW2DAckInfo*)e;
+        IDBFolder * folder = getDataBase(evt->db);
+        if(folder)
+        {
+            folder->update(evt);
+
+        }
+        e->accept();
+        return true;
+    }
     }
 
-    if(!query.exec( "CREATE TABLE workspace ("
-                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
-                    "type           INTEGER NOT NULL,"
-                    "name           TEXT NOT NULL,"
-                    "key            TEXT NOT NULL,"
-                    "changed        BOOLEAN DEFAULT FALSE,"
-                    "data           BLOB NOT NULL"
+    return QTreeWidget::event(e);
+}
+
+void CGisListDB::slotContextMenu(const QPoint& point)
+{
+    QPoint p = mapToGlobal(point);
 
-                    ")"))
+    if(selectedItems().isEmpty())
     {
-        qDebug() << query.lastQuery();
-        qDebug() << query.lastError();
+        menuNone->exec(p);
+        return;
     }
 
-    if(!query.exec("INSERT INTO folders (type, name, comment) VALUES (2, 'Database', '')"))
+    CDBFolderDatabase * database = dynamic_cast<CDBFolderDatabase*>(currentItem());
+    if(database)
     {
-        qDebug() << query.lastQuery();
-        qDebug() << query.lastError();
+        menuDatabase->exec(p);
+        return;
     }
 
-    if(!query.exec( "CREATE TABLE folder2folder ("
-                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
-                    "parent         INTEGER NOT NULL,"
-                    "child          INTEGER NOT NULL,"
-                    "FOREIGN KEY(parent) REFERENCES folders(id),"
-                    "FOREIGN KEY(child) REFERENCES folders(id)"
-                    ")"))
+    CDBFolderLostFound * lostFound = dynamic_cast<CDBFolderLostFound*>(currentItem());
+    if(lostFound)
     {
-        qDebug() << query.lastQuery();
-        qDebug() << query.lastError();
+        menuLostFound->exec(p);
+        return;
     }
 
-    if(!query.exec( "CREATE TABLE folder2item ("
-                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
-                    "parent         INTEGER NOT NULL,"
-                    "child          INTEGER NOT NULL,"
-                    "FOREIGN KEY(parent) REFERENCES folders(id),"
-                    "FOREIGN KEY(child) REFERENCES items(id)"
-                    ")"))
+    IDBFolder * folder = dynamic_cast<IDBFolder*>(currentItem());
+    if(folder)
     {
-        qDebug() << query.lastQuery();
-        qDebug() << query.lastError();
+        menuFolder->exec(p);
+        return;
     }
 }
 
-void CGisListDB::migrateDB(int version)
+void CGisListDB::slotAddDatabase()
 {
-    QSqlQuery query(db);
-
-    for(version++; version <= DB_VERSION; version++)
+    QString name, filename("-");
+    CSetupDatabase dlg(name, filename, *this);
+    if(dlg.exec() != QDialog::Accepted)
     {
-        switch(version)
-        {
-        }
+        return ;
     }
-    query.prepare( "UPDATE versioninfo set version=:version");
-    query.bindValue(":version", version - 1);
-    QUERY_EXEC(; );
+
+    addDatabase(name, filename);
+    emit sigChanged();
 }
 
-void CGisListDB::slotContextMenu(const QPoint& point)
+void CGisListDB::addDatabase(const QString& name, const QString& filename)
 {
-    QPoint p = mapToGlobal(point);
-    IDBFolder * folder = dynamic_cast<IDBFolder*>(currentItem());
-    if((folder != 0))
+    new CDBFolderDatabase(filename, name, this);
+
+}
+
+void CGisListDB::slotDelDatabase()
+{
+    CDBFolderDatabase * folder = dynamic_cast<CDBFolderDatabase*>(currentItem());
+    if(folder == 0)
+    {
+        return;
+    }
+
+    int res = QMessageBox::question(this, tr("Remove database..."), tr("Do you realy want to remove '%1' from the list?").arg(folder->text(IDBFolder::eColumnName)), QMessageBox::Ok|QMessageBox::Abort, QMessageBox::Ok);
+    if(res != QMessageBox::Ok)
     {
-        menuDatabase->exec(p);
         return;
     }
+
+    delete folder;
+
+    emit sigChanged();
 }
 
 void CGisListDB::slotAddFolder()
 {
-    IDBFolder * parentFolder = dynamic_cast<IDBFolder*>(currentItem());
-    if(parentFolder == 0)
+    CGisListDBEditLock lock(false, this);
+
+    IDBFolder * folder = dynamic_cast<IDBFolder*>(currentItem());
+    if(folder == 0)
     {
         return;
     }
-    quint64 idParent = parentFolder->getId();
 
     IDBFolder::type_e type = IDBFolder::eTypeProject;
     QString name;
@@ -220,32 +254,57 @@ void CGisListDB::slotAddFolder()
         return;
     }
 
-    QSqlQuery query(db);
-    query.prepare("INSERT INTO folders (name, type) VALUES (:name, :type)");
-    query.bindValue(":name", name);
-    query.bindValue(":type", type);
-    QUERY_EXEC(return);
-
-    query.prepare("SELECT last_insert_rowid() from folders");
-    QUERY_EXEC(return);
-    query.next();
-    quint64 idChild = query.value(0).toULongLong();
-    if(idChild == 0)
+    folder->addFolder(type, name);
+}
+
+void CGisListDB::slotDelFolder()
+{
+    CGisListDBEditLock lock(false, this);
+    IDBFolder * folder = dynamic_cast<IDBFolder*>(currentItem());
+    if(folder == 0)
+    {
+        return;
+    }
+
+    int res = QMessageBox::question(this, tr("Delete database folder..."), tr("Are you sure you want to delete \"%1\" from the database?").arg(folder->text(1)), QMessageBox::Ok|QMessageBox::No);
+    if(res != QMessageBox::Ok)
     {
-        qDebug() << "CGisListDB::slotAddFolder(): childId equals 0. bad.";
         return;
     }
 
-    query.prepare("INSERT INTO folder2folder (parent, child) VALUES (:parent, :child)");
-    query.bindValue(":parent", idParent);
-    query.bindValue(":child", idChild);
-    QUERY_EXEC(return);
+    CDBFolderDatabase * dbfolder = folder->getDBFolder();
+
+    folder->remove();
+    delete folder;
 
-    IDBFolder::createFolderByType(type, idChild, parentFolder);
+    if(dbfolder)
+    {
+        dbfolder->updateLostFound();
+    }
 }
 
-void CGisListDB::slotItemExpanded(QTreeWidgetItem * item)
+void CGisListDB::slotDelLostFound()
 {
+    CGisListDBEditLock lock(false, this);
+    CDBFolderLostFound * folder = dynamic_cast<CDBFolderLostFound*>(currentItem());
+    if(folder == 0)
+    {
+        return;
+    }
+
+    int res = QMessageBox::question(this, tr("Remove items..."), tr("Are you sure you want to delete all items from Lost&Found? This will remove them permanently."), QMessageBox::Ok|QMessageBox::No);
+    if(res != QMessageBox::Ok)
+    {
+        return;
+    }
+
+    folder->clear();
+}
+
+void CGisListDB::slotItemExpanded(QTreeWidgetItem * item)
+{   
+    CGisListDBEditLock lock(true, this);
+
     IDBFolder * folder = dynamic_cast<IDBFolder*>(item);
     if(folder == 0)
     {
@@ -255,16 +314,29 @@ void CGisListDB::slotItemExpanded(QTreeWidgetItem * item)
     folder->expanding();
 }
 
-void CGisListDB::addFolder(IDBFolder::type_e type, quint64 key, IDBFolder *parent)
+void CGisListDB::slotItemChanged(QTreeWidgetItem * item, int column)
 {
-    QList<QTreeWidgetItem*> items = findItems("*", Qt::MatchWildcard|Qt::MatchRecursive, 0);
+    if(isInternalEdit)
+    {
+        return;
+    }
+    CGisListDBEditLock lock(true, this);
 
-    foreach(QTreeWidgetItem * item, items)
+    if(column == IDBFolder::eColumnCheckbox)
     {
         IDBFolder * folder = dynamic_cast<IDBFolder*>(item);
-        if(folder == 0)
+        if(folder != 0)
         {
-            continue;
+            folder->toggle();
+            return;
+        }
+
+        CDBItem * dbItem = dynamic_cast<CDBItem*>(item);
+        if(dbItem != 0)
+        {
+            dbItem->toggle();
+            return;
         }
     }
 }
+
diff --git a/src/gis/CGisListDB.h b/src/gis/CGisListDB.h
index 9afa907..de255b4 100644
--- a/src/gis/CGisListDB.h
+++ b/src/gis/CGisListDB.h
@@ -24,9 +24,9 @@
 
 #include <gis/db/IDBFolder.h>
 
+struct action_t;
 class QMenu;
 class CDBFolderDatabase;
-class CDBFolderLostFound;
 
 class CGisListDB : public QTreeWidget
 {
@@ -35,30 +35,44 @@ class CGisListDB : public QTreeWidget
         CGisListDB(QWidget * parent);
         virtual ~CGisListDB();
 
+        bool hasDatabase(const QString& name);
+        bool event(QEvent * e);
+
+    signals:
+        void sigChanged();
 
     private slots:
         void slotContextMenu(const QPoint& point);
         void slotAddFolder();
-
+        void slotDelFolder();
+        void slotDelLostFound();
         void slotItemExpanded(QTreeWidgetItem * item);
+        void slotItemChanged(QTreeWidgetItem * item, int column);
+        void slotAddDatabase();
+        void slotDelDatabase();
 
     private:
-        void initDB();
-        void migrateDB(int version);
+        friend class CGisListDBEditLock;
 
-        void addFolder(IDBFolder::type_e type, quint64 key, IDBFolder *parent);
+        CDBFolderDatabase *getDataBase(const QString& name);
+        void addDatabase(const QString& name, const QString& filename);
 
+        int isInternalEdit;
 
-        QSqlDatabase db;
+        QMenu * menuNone;
+        QAction * actionAddDatabase;
 
-        QMenu * menuDatabase;
+        QMenu * menuFolder;
         QAction * actionAddFolder;
+        QAction * actionDelFolder;
+
+        QMenu * menuDatabase;
+        QAction * actionDelDatabase;
 
-        QMenu * menuProject;
-        QMenu * menuItem;
+        QMenu * menuLostFound;
+        QAction * actionDelLostFound;
 
-        CDBFolderLostFound * itemLostFound;
-        CDBFolderDatabase * itemDatabase;
+//        CDBFolderDatabase *  folderDatabase;
 };
 
 #endif //CGISLISTDB_H
diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
index e1fb5bd..c0f1137 100644
--- a/src/gis/CGisListWks.cpp
+++ b/src/gis/CGisListWks.cpp
@@ -17,13 +17,15 @@
 **********************************************************************************************/
 
 #include "CMainWindow.h"
+#include "config.h"
 #include "gis/CGisListWks.h"
 #include "gis/CGisWidget.h"
 #include "gis/IGisItem.h"
-#include "gis/prj/IGisProject.h"
+#include "gis/db/CDBProject.h"
 #include "gis/db/macros.h"
 #include "gis/gpx/CGpxProject.h"
 #include "gis/ovl/CGisItemOvlArea.h"
+#include "gis/prj/IGisProject.h"
 #include "gis/qms/CQmsProject.h"
 #include "gis/rte/CGisItemRte.h"
 #include "gis/search/CSearchGoogle.h"
@@ -35,13 +37,44 @@
 #include <QtSql>
 #include <QtWidgets>
 
+#define DB_VERSION 1
+
+class CGisListWksEditLock
+{
+    public:
+        CGisListWksEditLock(bool waitCursor, QMutex& mutex) : mutex(mutex), waitCursor(waitCursor)
+        {
+            if(waitCursor)
+            {
+                QApplication::setOverrideCursor(Qt::WaitCursor);
+            }
+            mutex.lock();
+        }
+        ~CGisListWksEditLock()
+        {
+            if(waitCursor)
+            {
+                QApplication::restoreOverrideCursor();
+            }
+            mutex.unlock();
+        }
+    private:
+        QMutex& mutex;
+        bool waitCursor;
+
+};
+
+
 CGisListWks::CGisListWks(QWidget *parent)
     : QTreeWidget(parent)
     , menuNone(0)
     , saveOnExit(true)
     , saveEvery(5)
 {
-    db = QSqlDatabase::database();
+    db = QSqlDatabase::addDatabase("QSQLITE","Workspace1");
+    db.setDatabaseName(QDir::home().filePath(CONFIGDIR).append("/workspace.db"));
+    db.open();
+    configDB();
 
     menuProject     = new QMenu(this);
     actionSaveAs    = menuProject->addAction(QIcon("://icons/32x32/SaveGISAs.png"),tr("Save As..."), this, SLOT(slotSaveAsProject()));
@@ -77,13 +110,100 @@ CGisListWks::CGisListWks(QWidget *parent)
         QTimer::singleShot(saveEvery * 60000, this, SLOT(slotSaveWorkspace()));
     }
 
-    slotLoadWorkspace();
+    QTimer::singleShot(500, this, SLOT(slotLoadWorkspace()));
 }
 
 CGisListWks::~CGisListWks()
 {
 }
 
+void CGisListWks::configDB()
+{
+    QSqlQuery query(db);
+    if(!query.exec("PRAGMA locking_mode=EXCLUSIVE"))
+    {
+        return;
+    }
+
+    if(!query.exec("PRAGMA synchronous=OFF"))
+    {
+        return;
+    }
+
+    if(!query.exec("PRAGMA temp_store=MEMORY"))
+    {
+        return;
+    }
+
+    if(!query.exec("PRAGMA default_cache_size=50"))
+    {
+        return;
+    }
+
+    if(!query.exec("PRAGMA page_size=8192"))
+    {
+        return;
+    }
+
+    if(!query.exec("SELECT version FROM versioninfo"))
+    {
+        initDB();
+    }
+    else if(query.next())
+    {
+        int version = query.value(0).toInt();
+        if(version != DB_VERSION)
+        {
+            migrateDB(version);
+        }
+    }
+    else
+    {
+        initDB();
+    }
+}
+
+void CGisListWks::initDB()
+{
+    QSqlQuery query(db);
+
+    if(query.exec( "CREATE TABLE versioninfo ( version TEXT )"))
+    {
+        query.prepare( "INSERT INTO versioninfo (version) VALUES(:version)");
+        query.bindValue(":version", DB_VERSION);
+        QUERY_EXEC(; );
+    }
+
+    if(!query.exec( "CREATE TABLE workspace ("
+                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+                    "type           INTEGER NOT NULL,"
+                    "name           TEXT NOT NULL,"
+                    "key            TEXT NOT NULL,"
+                    "changed        BOOLEAN DEFAULT FALSE,"
+                    "data           BLOB NOT NULL"
+
+                    ")"))
+    {
+        qDebug() << query.lastQuery();
+        qDebug() << query.lastError();
+    }
+}
+
+void CGisListWks::migrateDB(int version)
+{
+    QSqlQuery query(db);
+
+    for(version++; version <= DB_VERSION; version++)
+    {
+        switch(version)
+        {
+        }
+    }
+    query.prepare( "UPDATE versioninfo set version=:version");
+    query.bindValue(":version", version - 1);
+    QUERY_EXEC(; );
+}
+
 void CGisListWks::setExternalMenu(QMenu * project)
 {
     menuNone = project;
@@ -94,7 +214,6 @@ void CGisListWks::setExternalMenu(QMenu * project)
 
 void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
 {
-
     QTreeWidgetItem * item1 = currentItem();
     QTreeWidgetItem * item2 = itemAt(e->pos());
 
@@ -269,8 +388,13 @@ void CGisListWks::dropEvent ( QDropEvent  * e )
         return;
     }
 
+    if(items.isEmpty())
+    {
+        return;
+    }
 
-    // go on with item insertion        
+
+    // go on with item insertion
     /*
         What's happening here?
 
@@ -429,7 +553,7 @@ void CGisListWks::dropEvent ( QDropEvent  * e )
 
 bool CGisListWks::hasProject(IGisProject * project)
 {
-    QMutexLocker lock(&IGisItem::mutexItems);
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
 
     QString key = project->getKey();
 
@@ -447,6 +571,37 @@ bool CGisListWks::hasProject(IGisProject * project)
     return(false);
 }
 
+IGisProject * CGisListWks::getProjectByKey(const QString& key)
+{
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
+
+    for(int i = 0; i < topLevelItemCount(); i++)
+    {
+        IGisProject * item = dynamic_cast<IGisProject*>(topLevelItem(i));
+        if(item && item->getKey() == key)
+        {
+            return item;
+        }
+    }
+    return 0;
+}
+
+CDBProject * CGisListWks::getProjectById(quint64 id, const QString& db)
+{
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
+
+    for(int i = 0; i < topLevelItemCount(); i++)
+    {
+        CDBProject * item = dynamic_cast<CDBProject*>(topLevelItem(i));
+        if(item && item->getId() == id && item->getDBName() == db)
+        {
+            return item;
+        }
+    }
+    return 0;
+
+}
+
 void CGisListWks::slotSaveWorkspace()
 {
     if(!saveOnExit)
@@ -480,12 +635,12 @@ void CGisListWks::slotSaveWorkspace()
         stream.setVersion(QDataStream::Qt_5_2);
         stream.setByteOrder(QDataStream::LittleEndian);
 
-        *project >> stream;
+        project->IGisProject::operator>>(stream);
 
         query.prepare("INSERT INTO workspace (type, key, name, changed, data) VALUES (:type, :key, :name, :changed, :data)");
         query.bindValue(":type", project->getType());
         query.bindValue(":key", project->getKey());
-        query.bindValue(":name", project->text(0));
+        query.bindValue(":name", project->getName());
         query.bindValue(":changed", project->text(1) == "*");
         query.bindValue(":data", data);
         QUERY_EXEC(continue);
@@ -511,9 +666,7 @@ void CGisListWks::slotLoadWorkspace()
     {
         PROGRESS(progCnt++, return );
 
-
-        int type       = query.value(0).toInt();
-//        QString key     = query.value(1).toString();
+        int type        = query.value(0).toInt();
         QString name    = query.value(2).toString();
         bool changed    = query.value(3).toBool();
         QByteArray data = query.value(4).toByteArray();
@@ -527,17 +680,35 @@ void CGisListWks::slotLoadWorkspace()
         {
         case IGisProject::eTypeQms:
         {
-            project = new CQmsProject(name,this);
+            project = new CQmsProject(name, this);
             *project << stream;
             break;
         }
 
         case IGisProject::eTypeGpx:
         {
-            project = new CGpxProject(name,this);
+            project = new CGpxProject(name, this);
             *project << stream;
             break;
         }
+
+        case IGisProject::eTypeDb:
+        {
+            CDBProject * dbProject;
+            project = dbProject = new CDBProject(this);
+            project->IGisProject::operator<<(stream);
+            dbProject->restoreDBLink();
+            if(!project->isValid())
+            {
+                delete project;
+                project = 0;
+            }
+            else
+            {
+                dbProject->postStatus();
+            }
+            break;
+        }
         }
 
         if(project == 0)
@@ -548,6 +719,8 @@ void CGisListWks::slotLoadWorkspace()
         project->setToolTip(0,project->getInfo());
         project->setText(1, changed ? "*" : "");
     }
+
+    emit sigChanged();
 }
 
 void CGisListWks::slotContextMenu(const QPoint& point)
@@ -663,7 +836,7 @@ void CGisListWks::slotContextMenu(const QPoint& point)
 
 void CGisListWks::slotCloseProject()
 {
-    QMutexLocker lock(&IGisItem::mutexItems);
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
     QList<QTreeWidgetItem*> items = selectedItems();
     foreach(QTreeWidgetItem * item, items)
     {
@@ -678,8 +851,7 @@ void CGisListWks::slotCloseProject()
 
 void CGisListWks::slotSaveProject()
 {
-    QApplication::setOverrideCursor(Qt::WaitCursor);
-    IGisItem::mutexItems.lock();
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
 
     QList<QTreeWidgetItem*> items = selectedItems();
     foreach(QTreeWidgetItem * item, items)
@@ -690,13 +862,11 @@ void CGisListWks::slotSaveProject()
             project->save();
         }
     }
-    IGisItem::mutexItems.unlock();
-    QApplication::restoreOverrideCursor();
 }
 
 void CGisListWks::slotSaveAsProject()
 {
-    IGisItem::mutexItems.lock();
+    CGisListWksEditLock lock(false, IGisItem::mutexItems);
 
     QList<QTreeWidgetItem*> items = selectedItems();
     foreach(QTreeWidgetItem * item, items)
@@ -707,12 +877,11 @@ void CGisListWks::slotSaveAsProject()
             project->saveAs();
         }
     }
-    IGisItem::mutexItems.unlock();
 }
 
 void CGisListWks::slotEditPrj()
 {
-    IGisItem::mutexItems.lock();
+    CGisListWksEditLock lock(false, IGisItem::mutexItems);
 
     IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
     if(project != 0)
@@ -720,148 +889,163 @@ void CGisListWks::slotEditPrj()
         project->edit();
     }
 
-    IGisItem::mutexItems.unlock();
 }
 
 void CGisListWks::slotItemDoubleClicked(QTreeWidgetItem * item, int )
 {
-    IGisItem::mutexItems.lock();
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
     IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
     if(gisItem != 0)
     {
         CMainWindow::self().zoomCanvasTo(gisItem->getBoundingRect());
         CGisWidget::self().focusTrkByKey(true, gisItem->getKey());
     }
-    IGisItem::mutexItems.unlock();
 }
 
 void CGisListWks::slotEditItem()
 {
-    IGisItem::mutexItems.lock();
+    CGisListWksEditLock lock(false, IGisItem::mutexItems);
     IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
     if(gisItem != 0)
     {
         CGisWidget::self().editItemByKey(gisItem->getKey());
     }
-    IGisItem::mutexItems.unlock();
 }
 
 void CGisListWks::slotDeleteItem()
-{
-    IGisItem::mutexItems.lock();
+{        
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
+
     QList<QTreeWidgetItem*> items       = selectedItems();
     QMessageBox::StandardButtons last   = QMessageBox::NoButton;
 
+    QSet<CDBProject*> projects;
+
     foreach(QTreeWidgetItem * item, items)
     {
         IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
         if(gisItem != 0)
         {
+            bool yes = false;
             IGisProject * project = dynamic_cast<IGisProject*>(gisItem->parent());
             if(project)
             {
-                project->delItemByKey(gisItem->getKey(), last);
+                yes = project->delItemByKey(gisItem->getKey(), last);
             }
+
+            /*
+                collect database projects to update their counterpart in
+                the database view, after all operations are done.
+            */
+            if(yes && project->getType() == IGisProject::eTypeDb)
+            {
+                projects << dynamic_cast<CDBProject*>(project);
+            }
+
             if(last == QMessageBox::Cancel)
             {
                 break;
             }
         }
     }
-    IGisItem::mutexItems.unlock();
+
+    // make all database projects that are changed to post their new status
+    // this will update the database view.
+    foreach(CDBProject * project, projects)
+    {
+        if(project)
+        {
+            project->postStatus();
+        }
+    }
+
 }
 
 void CGisListWks::slotProjWpt()
 {
-    IGisItem::mutexItems.lock();
+    CGisListWksEditLock lock(false, IGisItem::mutexItems);
     CGisItemWpt * gisItem = dynamic_cast<CGisItemWpt*>(currentItem());
     if(gisItem != 0)
     {
         CGisWidget::self().projWptByKey(gisItem->getKey());
     }
-    IGisItem::mutexItems.unlock();
 }
 
 void CGisListWks::slotMoveWpt()
 {
-    IGisItem::mutexItems.lock();
+    CGisListWksEditLock lock(false, IGisItem::mutexItems);
     CGisItemWpt * gisItem = dynamic_cast<CGisItemWpt*>(currentItem());
     if(gisItem != 0)
-    {        
+    {
         CGisWidget::self().moveWptByKey(gisItem->getKey());
     }
-    IGisItem::mutexItems.unlock();
 }
 
 void CGisListWks::slotFocusTrk(bool on)
 {
-    IGisItem::mutexItems.lock();
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
     CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(currentItem());
     if(gisItem != 0)
     {
         CGisWidget::self().focusTrkByKey(on, gisItem->getKey());
     }
-    IGisItem::mutexItems.unlock();
 }
 
 void CGisListWks::slotEditTrk()
 {
-    IGisItem::mutexItems.lock();
+    CGisListWksEditLock lock(false, IGisItem::mutexItems);
     CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(currentItem());
     if(gisItem != 0)
     {
         CGisWidget::self().editTrkByKey(gisItem->getKey());
     }
-    IGisItem::mutexItems.unlock();
 }
 
 void CGisListWks::slotReverseTrk()
 {
-    IGisItem::mutexItems.lock();
+    CGisListWksEditLock lock(false, IGisItem::mutexItems);
     CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(currentItem());
     if(gisItem != 0)
     {
         CGisWidget::self().reverseTrkByKey(gisItem->getKey());
     }
-    IGisItem::mutexItems.unlock();
 }
 
 void CGisListWks::slotCombineTrk()
 {
-    IGisItem::mutexItems.lock();
+    CGisListWksEditLock lock(false, IGisItem::mutexItems);
     CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(currentItem());
     if(gisItem != 0)
     {
         CGisWidget::self().combineTrkByKey(gisItem->getKey());
     }
-    IGisItem::mutexItems.unlock();
 }
 
 void CGisListWks::slotRangeTrk()
 {
-    IGisItem::mutexItems.lock();
+    CGisListWksEditLock lock(false, IGisItem::mutexItems);
     CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(currentItem());
     if(gisItem != 0)
     {
         CGisWidget::self().rangeTrkByKey(gisItem->getKey());
     }
-    IGisItem::mutexItems.unlock();
 }
 
 void CGisListWks::slotEditArea()
 {
-    IGisItem::mutexItems.lock();
+    CGisListWksEditLock lock(false, IGisItem::mutexItems);
     CGisItemOvlArea * gisItem = dynamic_cast<CGisItemOvlArea*>(currentItem());
     if(gisItem != 0)
     {
         CGisWidget::self().editAreaByKey(gisItem->getKey());
     }
-    IGisItem::mutexItems.unlock();
 }
 
 
 void CGisListWks::slotAddEmptyProject()
 {
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
+
     QString key, name;
     CSelectProjectDialog::type_e type;
     CSelectProjectDialog dlg(key, name, type, 0);
@@ -883,7 +1067,14 @@ void CGisListWks::slotAddEmptyProject()
 
 void CGisListWks::slotCloseAllProjects()
 {
-    QMutexLocker lock(&IGisItem::mutexItems);
+    int res = QMessageBox::question(this, tr("Close all projects..."), tr("This will remove all projects from the workspace."), QMessageBox::Ok|QMessageBox::Abort, QMessageBox::Ok);
+    if(res != QMessageBox::Ok)
+    {
+        return;
+    }
+
+
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
     QList<QTreeWidgetItem*> items = findItems("*", Qt::MatchWildcard);
     foreach(QTreeWidgetItem * item, items)
     {
@@ -898,6 +1089,8 @@ void CGisListWks::slotCloseAllProjects()
 
 void CGisListWks::slotSearchGoogle(bool on)
 {
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
+
     delete searchGoogle;
     if(on)
     {
@@ -905,3 +1098,76 @@ void CGisListWks::slotSearchGoogle(bool on)
     }
 }
 
+bool CGisListWks::event(QEvent * e)
+{
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
+
+    switch(e->type())
+    {
+    case eEvtD2WReqInfo:
+    {
+        CEvtD2WReqInfo * evt = (CEvtD2WReqInfo*)e;
+        CDBProject * project =  getProjectById(evt->id, evt->db);
+        if(project)
+        {
+            project->postStatus();
+        }
+        e->accept();
+        emit sigChanged();
+        return true;
+    }
+    case eEvtD2WShowFolder:
+    {
+        CEvtD2WShowFolder * evt = (CEvtD2WShowFolder*)e;
+        CDBProject * project =  getProjectById(evt->id, evt->db);
+        if(project == 0)
+        {
+            project = new CDBProject(evt->db, evt->id, this);
+            if(!project->isValid())
+            {
+                delete project;
+            }
+        }
+        e->accept();
+        emit sigChanged();
+        return true;
+    }
+    case eEvtD2WHideFolder:
+    {
+        CEvtD2WHideFolder * evt = (CEvtD2WHideFolder*)e;
+        CDBProject * project =  getProjectById(evt->id, evt->db);
+        delete project;
+
+        e->accept();
+        emit sigChanged();
+        return true;
+    }
+    case eEvtD2WShowItems:
+    {
+        CEvtD2WShowItems * evt = (CEvtD2WShowItems*)e;
+        CDBProject * project =  getProjectById(evt->id, evt->db);
+        if(project)
+        {
+            project->showItems(evt);
+        }
+        e->accept();
+        emit sigChanged();
+        return true;
+    }
+    case eEvtD2WHideItems:
+    {
+        CEvtD2WHideItems * evt = (CEvtD2WHideItems*)e;
+        CDBProject * project =  getProjectById(evt->id, evt->db);
+        if(project)
+        {
+            project->hideItems(evt);
+        }
+        e->accept();
+        emit sigChanged();
+        return true;
+    }
+    }
+
+    return QTreeWidget::event(e);
+}
+
diff --git a/src/gis/CGisListWks.h b/src/gis/CGisListWks.h
index 0e2c1ea..46851c0 100644
--- a/src/gis/CGisListWks.h
+++ b/src/gis/CGisListWks.h
@@ -23,9 +23,11 @@
 #include <QPointer>
 #include <QSqlDatabase>
 
+struct action_t;
 class QAction;
 class CSearchGoogle;
 class IGisProject;
+class CDBProject;
 
 class CGisListWks : public QTreeWidget
 {
@@ -36,6 +38,12 @@ class CGisListWks : public QTreeWidget
 
         void setExternalMenu(QMenu * project);
         bool hasProject(IGisProject *project);
+
+        IGisProject * getProjectByKey(const QString& key);
+        CDBProject * getProjectById(quint64 id, const QString& db);
+
+        bool event(QEvent * e);
+
     signals:
         void sigChanged();
 
@@ -67,7 +75,11 @@ class CGisListWks : public QTreeWidget
         void slotSearchGoogle(bool on);
 
 
-    private:                
+    private:
+        void configDB();
+        void initDB();
+        void migrateDB(int version);
+
         QSqlDatabase db;
 
         QMenu * menuProject;
diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
index 956a662..b98ee3e 100644
--- a/src/gis/CGisWidget.cpp
+++ b/src/gis/CGisWidget.cpp
@@ -27,6 +27,7 @@
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
 #include "gis/wpt/CProjWpt.h"
+#include "gis/db/CDBProject.h"
 #include "helpers/CSelectProjectDialog.h"
 #include "helpers/CSettings.h"
 
@@ -48,6 +49,9 @@ CGisWidget::CGisWidget(QMenu *menuProject, QWidget *parent)
     treeDB->header()->restoreState(cfg.value("Workspace/treeDB/state", treeDB->header()->saveState()).toByteArray());
 
     connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+    connect(treeDB, SIGNAL(sigChanged()), SLOT(slotHelpText()));
+
+    slotHelpText();
 }
 
 CGisWidget::~CGisWidget()
@@ -57,9 +61,19 @@ CGisWidget::~CGisWidget()
     cfg.setValue("Workspace/treeDB/state", treeDB->header()->saveState());
 }
 
-void CGisWidget::loadGisProject(const QString& filename)
+void CGisWidget::postEventForWks(QEvent * event)
+{
+    QCoreApplication::postEvent(treeWks, event);
+}
+
+void CGisWidget::postEventForDb(QEvent * event)
 {
+    QCoreApplication::postEvent(treeDB, event);
+}
 
+
+void CGisWidget::loadGisProject(const QString& filename)
+{
     // add project to workspace
     QApplication::setOverrideCursor(Qt::WaitCursor);
     IGisItem::mutexItems.lock();
@@ -77,12 +91,14 @@ void CGisWidget::loadGisProject(const QString& filename)
     if(item && !item->isValid())
     {
         delete item;
+        item = 0;
     }
 
     // skip if project is already loaded
     if(item && treeWks->hasProject(item))
     {
         delete item;
+        item = 0;
     }
 
     IGisItem::mutexItems.unlock();
@@ -91,6 +107,17 @@ void CGisWidget::loadGisProject(const QString& filename)
     emit sigChanged();
 }
 
+void CGisWidget::slotHelpText()
+{
+    if(treeDB->topLevelItemCount() == 0)
+    {
+        frameHelp->show();
+    }
+    else
+    {
+        frameHelp->hide();
+    }
+}
 
 void CGisWidget::slotSaveAll()
 {
@@ -206,7 +233,17 @@ void CGisWidget::delItemByKey(const IGisItem::key_t& key)
         {
             continue;
         }
-        project->delItemByKey(key, last);
+
+        if(project->delItemByKey(key, last))
+        {
+            // update database tree if that is a database project
+            CDBProject * dbp = dynamic_cast<CDBProject*>(project);
+            if(dbp)
+            {
+                dbp->postStatus();
+            }
+        }
+
         if(last == QMessageBox::Cancel)
         {
             break;
diff --git a/src/gis/CGisWidget.h b/src/gis/CGisWidget.h
index 030887f..b1360d4 100644
--- a/src/gis/CGisWidget.h
+++ b/src/gis/CGisWidget.h
@@ -20,6 +20,8 @@
 #define CGISWIDGET_H
 
 #include <QWidget>
+#include <QSqlDatabase>
+#include <QEvent>
 #include "ui_IGisWidget.h"
 
 #include "gis/IGisItem.h"
@@ -27,6 +29,84 @@
 class CGisDraw;
 class IGisProject;
 
+enum event_types_e
+{
+     eEvtD2WReqInfo     = QEvent::User + 1
+    ,eEvtD2WShowFolder  = QEvent::User + 2
+    ,eEvtD2WHideFolder  = QEvent::User + 3
+    ,eEvtD2WShowItems   = QEvent::User + 4
+    ,eEvtD2WHideItems   = QEvent::User + 5
+
+    ,eEvtW2DAckInfo     = QEvent::User + 100
+};
+
+struct evt_item_t
+{
+    evt_item_t(quint64 id, quint32 type) : id(id), type(type){}
+    quint64 id;
+    quint32 type;
+};
+
+class CEvtD2WReqInfo : public QEvent
+{
+    public:
+        CEvtD2WReqInfo(quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtD2WReqInfo)), id(id), db(db){}
+
+        quint64 id;
+        QString db;
+};
+
+class CEvtD2WShowFolder : public QEvent
+{
+    public:
+        CEvtD2WShowFolder(quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtD2WShowFolder)), id(id), db(db){}
+
+        quint64 id;
+        QString db;
+};
+
+class CEvtD2WHideFolder : public QEvent
+{
+    public:
+        CEvtD2WHideFolder(quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtD2WHideFolder)), id(id), db(db){}
+
+        quint64 id;
+        QString db;
+};
+
+class CEvtD2WShowItems : public QEvent
+{
+    public:
+        CEvtD2WShowItems(quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtD2WShowItems)), id(id), db(db){}
+
+        quint64 id;
+        QString db;
+        QList<evt_item_t> items;
+};
+
+class CEvtD2WHideItems : public QEvent
+{
+    public:
+        CEvtD2WHideItems(quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtD2WHideItems)), id(id), db(db){}
+
+        quint64 id;
+        QString db;
+        QSet<QString> keys;
+};
+
+class CEvtW2DAckInfo : public QEvent
+{
+    public:
+        CEvtW2DAckInfo(bool loaded, quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtW2DAckInfo)), isLoaded(loaded), id(id), db(db){}
+
+        bool isLoaded;
+        quint64 id;
+        QString db;
+        QSet<QString> keysChildren;
+
+};
+
+
 class CGisWidget : public QWidget, private Ui::IGisWidget
 {
     Q_OBJECT
@@ -125,8 +205,6 @@ class CGisWidget : public QWidget, private Ui::IGisWidget
 
         void editAreaByKey(const IGisItem::key_t &key);
 
-
-
         /**
            @brief Select a project via dialog
 
@@ -137,12 +215,19 @@ class CGisWidget : public QWidget, private Ui::IGisWidget
          */
         IGisProject * selectProject();
 
+        void postEventForWks(QEvent * event);
+        void postEventForDb(QEvent * event);
+
+
     signals:
         void sigChanged();
 
     public slots:
         void slotSaveAll();
 
+    private slots:
+        void slotHelpText();
+
 
     private:
         friend class CMainWindow;
diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
index 3daee5b..e747143 100644
--- a/src/gis/IGisItem.cpp
+++ b/src/gis/IGisItem.cpp
@@ -21,12 +21,14 @@
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
 #include "gis/rte/CGisItemRte.h"
+#include "gis/db/macros.h"
 #include "units/IUnit.h"
 #include "canvas/CCanvas.h"
 #include "GeoMath.h"
 
 #include <QtXml>
 #include <QtWidgets>
+#include <QtSql>
 
 QMutex IGisItem::mutexItems(QMutex::Recursive);
 
@@ -62,15 +64,19 @@ IGisItem::IGisItem(IGisProject *parent, type_e typ, int idx)
     int n;
     setFlags(QTreeWidgetItem::flags() & ~Qt::ItemIsDropEnabled);
 
-    key.project = parent->getKey();
+    if(parent == 0)
+    {
+        return;
+    }
 
+    key.project = parent->getKey();
     if(idx >= 0)
     {
         parent->removeChild(this);
         parent->insertChild(idx, this);
     }
     else
-    {        
+    {
         if(type() == eTypeTrk)
         {
             for(n = parent->childCount() - 2; n >= 0; n--)
@@ -166,6 +172,23 @@ void IGisItem::genKey()
     }
 }
 
+void IGisItem::loadFromDb(quint64 id, QSqlDatabase& db)
+{
+    QSqlQuery query(db);
+    query.prepare("SELECT data FROM items WHERE id=:id");
+    query.bindValue(":id", id);
+    QUERY_EXEC(return);
+    if(query.next())
+    {
+        QByteArray data(query.value(0).toByteArray());
+        QDataStream in(&data, QIODevice::ReadOnly);
+        in.setByteOrder(QDataStream::LittleEndian);
+        in.setVersion(QDataStream::Qt_5_2);
+        in >> history;
+        loadHistory(history.histIdxCurrent);
+    }
+}
+
 QString IGisItem::getNameEx()
 {
     QString str = getName();
@@ -177,6 +200,7 @@ QString IGisItem::getNameEx()
     return str;
 }
 
+
 void IGisItem::updateDecoration(mark_e enable, mark_e disable)
 {
     // update text and icon
diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
index d2a8871..549ca50 100644
--- a/src/gis/IGisItem.h
+++ b/src/gis/IGisItem.h
@@ -36,8 +36,10 @@
 class CGisDraw;
 class IScrOpt;
 class IMouse;
+class QSqlDatabase;
 class IGisProject;
 
+
 class IGisItem : public QTreeWidgetItem
 {
 
@@ -106,6 +108,7 @@ class IGisItem : public QTreeWidgetItem
             QMap<QString, QVariant> extensions;
         };
 
+        /// never ever change these numbers. it will break binary data files
         enum type_e
         {
               eTypeWpt = 1
@@ -155,11 +158,12 @@ class IGisItem : public QTreeWidgetItem
          */
         const key_t& getKey();
 
+
         /**
            @brief Get the icon attached to object
            @return
          */
-        virtual const QPixmap& getIcon(){return icon;}
+        virtual const QPixmap& getIcon() const {return icon;}
         /**
            @brief Get name of this item.
            @return A reference to the internal string object
@@ -247,6 +251,14 @@ class IGisItem : public QTreeWidgetItem
         virtual void gainUserFocus(bool yes) = 0;
 
         /**
+           @brief Check for user focus
+
+           @return True if the item has user focus. The default implementation is always false.
+         */
+        virtual bool hasUserFocus(){return false;}
+
+
+        /**
            @brief Serialize object out of a QDataStream
 
            See CGisSerialization.cpp for implementation
@@ -311,6 +323,8 @@ class IGisItem : public QTreeWidgetItem
         /// call when ever you make a change to the item's data
         virtual void changed(const QString& what, const QString& icon);
 
+        virtual void loadFromDb(quint64 id, QSqlDatabase& db);
+
         quint32 flags;
         key_t   key;
         QString hash;
@@ -354,5 +368,8 @@ class IGisItem : public QTreeWidgetItem
 
 };
 
+QDataStream& operator>>(QDataStream& stream, IGisItem::history_t& h);
+QDataStream& operator<<(QDataStream& stream, const IGisItem::history_t& h);
+
 #endif //IGISITEM_H
 
diff --git a/src/gis/IGisWidget.ui b/src/gis/IGisWidget.ui
index fcb1742..3caa9e8 100644
--- a/src/gis/IGisWidget.ui
+++ b/src/gis/IGisWidget.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>400</width>
-    <height>436</height>
+    <width>402</width>
+    <height>500</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -69,6 +69,12 @@
      <property name="contextMenuPolicy">
       <enum>Qt::CustomContextMenu</enum>
      </property>
+     <property name="selectionMode">
+      <enum>QAbstractItemView::ExtendedSelection</enum>
+     </property>
+     <property name="selectionBehavior">
+      <enum>QAbstractItemView::SelectRows</enum>
+     </property>
      <property name="iconSize">
       <size>
        <width>20</width>
@@ -90,6 +96,47 @@
      </column>
     </widget>
    </item>
+   <item>
+    <widget class="QFrame" name="frameHelp">
+     <property name="frameShape">
+      <enum>QFrame::StyledPanel</enum>
+     </property>
+     <property name="frameShadow">
+      <enum>QFrame::Raised</enum>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout_2">
+      <item>
+       <widget class="QLabel" name="label_2">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="text">
+         <string/>
+        </property>
+        <property name="pixmap">
+         <pixmap resource="../resources.qrc">:/icons/48x48/Help.png</pixmap>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLabel" name="label">
+        <property name="text">
+         <string>To add a database do a right click on the database list above.</string>
+        </property>
+        <property name="alignment">
+         <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+        </property>
+        <property name="wordWrap">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
   </layout>
  </widget>
  <customwidgets>
@@ -104,6 +151,8 @@
    <header>gis/CGisListDB.h</header>
   </customwidget>
  </customwidgets>
- <resources/>
+ <resources>
+  <include location="../resources.qrc"/>
+ </resources>
  <connections/>
 </ui>
diff --git a/src/gis/db/CDBFolderDatabase.cpp b/src/gis/db/CDBFolderDatabase.cpp
index d3d5cf4..23b9939 100644
--- a/src/gis/db/CDBFolderDatabase.cpp
+++ b/src/gis/db/CDBFolderDatabase.cpp
@@ -17,13 +17,19 @@
 **********************************************************************************************/
 
 #include "gis/db/CDBFolderDatabase.h"
+#include "gis/db/CDBFolderLostFound.h"
 
-CDBFolderDatabase::CDBFolderDatabase(QTreeWidget *parent)
-    : IDBFolder(eTypeDatabase, 1, parent)
+CDBFolderDatabase::CDBFolderDatabase(const QString& filename, const QString& name, QTreeWidget *parent)
+    : IDBFolder(false, IDB::db, eTypeDatabase, 1, parent)
+    , filename(filename)
 {
-    setToolTip(1, QObject::tr("All your data grouped by folders."));
-    setIcon(0, QIcon("://icons/32x32/Database.png"));
-    setText(1, QObject::tr("Database"));
+    setToolTip(eColumnName, QObject::tr("All your data grouped by folders."));
+    setIcon(eColumnCheckbox, QIcon("://icons/32x32/Database.png"));
+    setText(eColumnName, name);
+
+    setupDB(filename, name);
+
+    setupFromDB();
 }
 
 CDBFolderDatabase::~CDBFolderDatabase()
@@ -31,3 +37,15 @@ CDBFolderDatabase::~CDBFolderDatabase()
 
 }
 
+void CDBFolderDatabase::expanding()
+{
+    IDBFolder::expanding();
+
+    folderLostFound  = new CDBFolderLostFound(IDB::db, 0);
+    insertChild(0, folderLostFound);
+}
+
+void CDBFolderDatabase::updateLostFound()
+{
+    folderLostFound->update();
+}
diff --git a/src/gis/db/CDBFolderDatabase.h b/src/gis/db/CDBFolderDatabase.h
index f49ac23..ce2b878 100644
--- a/src/gis/db/CDBFolderDatabase.h
+++ b/src/gis/db/CDBFolderDatabase.h
@@ -20,12 +20,23 @@
 #define CDBFOLDERDATABASE_H
 
 #include "gis/db/IDBFolder.h"
+#include <gis/db/IDB.h>
 
-class CDBFolderDatabase : public IDBFolder
+class CDBFolderLostFound;
+
+class CDBFolderDatabase : public IDBFolder, private IDB
 {
     public:
-        CDBFolderDatabase(QTreeWidget *parent);
+        CDBFolderDatabase(const QString &filename, const QString &name, QTreeWidget *parent);
         virtual ~CDBFolderDatabase();
+
+        void expanding();
+        void updateLostFound();
+        const QString& getFilename(){return filename;}
+    private:
+        QString filename;
+        CDBFolderLostFound * folderLostFound;
+
 };
 
 #endif //CDBFOLDERDATABASE_H
diff --git a/src/gis/db/CDBFolderGroup.cpp b/src/gis/db/CDBFolderGroup.cpp
index 0b60168..de3e099 100644
--- a/src/gis/db/CDBFolderGroup.cpp
+++ b/src/gis/db/CDBFolderGroup.cpp
@@ -18,10 +18,12 @@
 
 #include "gis/db/CDBFolderGroup.h"
 
-CDBFolderGroup::CDBFolderGroup(quint64 key, QTreeWidgetItem * parent)
-    : IDBFolder(eTypeGroup, key, parent)
+CDBFolderGroup::CDBFolderGroup(QSqlDatabase& db, quint64 key, QTreeWidgetItem * parent)
+    : IDBFolder(false, db, eTypeGroup, key, parent)
 {
-    setIcon(0,QIcon("://icons/32x32/PathBlue.png"));
+    setIcon(eColumnCheckbox,QIcon("://icons/32x32/PathBlue.png"));
+
+    setupFromDB();
 }
 
 CDBFolderGroup::~CDBFolderGroup()
diff --git a/src/gis/db/CDBFolderGroup.h b/src/gis/db/CDBFolderGroup.h
index 91fb15e..f6836fe 100644
--- a/src/gis/db/CDBFolderGroup.h
+++ b/src/gis/db/CDBFolderGroup.h
@@ -24,7 +24,7 @@
 class CDBFolderGroup : public IDBFolder
 {
     public:
-        CDBFolderGroup(quint64 key, QTreeWidgetItem * parent);
+        CDBFolderGroup(QSqlDatabase &db, quint64 key, QTreeWidgetItem * parent);
         virtual ~CDBFolderGroup();
 };
 
diff --git a/src/gis/db/CDBFolderLostFound.cpp b/src/gis/db/CDBFolderLostFound.cpp
index 93533f6..f167b01 100644
--- a/src/gis/db/CDBFolderLostFound.cpp
+++ b/src/gis/db/CDBFolderLostFound.cpp
@@ -17,13 +17,18 @@
 **********************************************************************************************/
 
 #include "gis/db/CDBFolderLostFound.h"
+#include "gis/db/CDBItem.h"
+#include "gis/db/macros.h"
 
-CDBFolderLostFound::CDBFolderLostFound(QTreeWidget *parent)
-    : IDBFolder(eTypeLostFound, 0, parent)
+#include <QtSql>
+
+CDBFolderLostFound::CDBFolderLostFound(QSqlDatabase& db, QTreeWidgetItem *parent)
+    : IDBFolder(false, db, eTypeLostFound, 0, parent)
 {
-    setToolTip(1, QObject::tr("All your data grouped by folders."));
-    setIcon(0, QIcon("://icons/32x32/DeleteMultiple.png"));
-    setText(1, QObject::tr("Lost & Found"));
+    setToolTip(eColumnName, QObject::tr("All your data grouped by folders."));    
+    setText(eColumnName, QObject::tr("Lost & Found"));
+
+    update();
 }
 
 CDBFolderLostFound::~CDBFolderLostFound()
@@ -31,3 +36,41 @@ CDBFolderLostFound::~CDBFolderLostFound()
 
 }
 
+void CDBFolderLostFound::update()
+{
+    int cnt = 0;
+    QSqlQuery query(db);
+
+    qDeleteAll(takeChildren());
+
+    query.prepare("SELECT id FROM items AS t1 WHERE NOT EXISTS(SELECT * FROM folder2item WHERE child=t1.id) ORDER BY t1.type, t1.name");
+    QUERY_EXEC(return);
+
+    while(query.next())
+    {
+        quint64 id = query.value(0).toULongLong();
+        new CDBItem(db, id, this);
+        cnt++;
+    }
+
+    if(cnt)
+    {
+        setText(eColumnName, QObject::tr("Lost & Found (%1)").arg(cnt));
+        setIcon(eColumnCheckbox, QIcon("://icons/32x32/DeleteMultiple.png"));
+    }
+    else
+    {
+        setText(eColumnName, QObject::tr("Lost & Found"));
+        setIcon(eColumnCheckbox, QIcon("://icons/32x32/Empty.png"));
+    }
+}
+
+void CDBFolderLostFound::clear()
+{
+    QSqlQuery query(db);
+
+    query.prepare("DELETE FROM items WHERE id NOT IN (SELECT child from folder2item)");
+    QUERY_EXEC(return);
+
+    update();
+}
diff --git a/src/gis/db/CDBFolderLostFound.h b/src/gis/db/CDBFolderLostFound.h
index 2eff9ae..c97d02d 100644
--- a/src/gis/db/CDBFolderLostFound.h
+++ b/src/gis/db/CDBFolderLostFound.h
@@ -24,8 +24,12 @@
 class CDBFolderLostFound : public IDBFolder
 {
     public:
-        CDBFolderLostFound(QTreeWidget *parent);
+        CDBFolderLostFound(QSqlDatabase &db, QTreeWidgetItem *parent);
         virtual ~CDBFolderLostFound();
+
+        void update();
+        void expanding(){}
+        void clear();
 };
 
 #endif //CDBFOLDERLOSTFOUND_H
diff --git a/src/gis/db/CDBFolderOther.cpp b/src/gis/db/CDBFolderOther.cpp
index 210f3f9..9f13fc8 100644
--- a/src/gis/db/CDBFolderOther.cpp
+++ b/src/gis/db/CDBFolderOther.cpp
@@ -18,11 +18,13 @@
 
 #include "gis/db/CDBFolderOther.h"
 
-CDBFolderOther::CDBFolderOther(quint64 key, QTreeWidgetItem * parent)
-    : IDBFolder(eTypeOther, key, parent)
+CDBFolderOther::CDBFolderOther(QSqlDatabase& db, quint64 key, QTreeWidgetItem * parent)
+    : IDBFolder(true, db, eTypeOther, key, parent)
 {
-    setIcon(0,QIcon("://icons/32x32/PathOrange.png"));
+    setIcon(eColumnCheckbox,QIcon("://icons/32x32/PathOrange.png"));
     setCheckState(0, Qt::Unchecked);
+
+    setupFromDB();
 }
 
 CDBFolderOther::~CDBFolderOther()
diff --git a/src/gis/db/CDBFolderOther.h b/src/gis/db/CDBFolderOther.h
index dc562a6..0c6b3a8 100644
--- a/src/gis/db/CDBFolderOther.h
+++ b/src/gis/db/CDBFolderOther.h
@@ -24,7 +24,7 @@
 class CDBFolderOther : public IDBFolder
 {
     public:
-        CDBFolderOther(quint64 key, QTreeWidgetItem *parent);
+        CDBFolderOther(QSqlDatabase &db, quint64 key, QTreeWidgetItem *parent);
         virtual ~CDBFolderOther();
 };
 
diff --git a/src/gis/db/CDBFolderProject.cpp b/src/gis/db/CDBFolderProject.cpp
index b223cad..e574c1f 100644
--- a/src/gis/db/CDBFolderProject.cpp
+++ b/src/gis/db/CDBFolderProject.cpp
@@ -18,11 +18,13 @@
 
 #include "gis/db/CDBFolderProject.h"
 
-CDBFolderProject::CDBFolderProject(quint64 key, QTreeWidgetItem * parent)
-    : IDBFolder(eTypeProject, key, parent)
+CDBFolderProject::CDBFolderProject(QSqlDatabase& db, quint64 key, QTreeWidgetItem * parent)
+    : IDBFolder(true, db, eTypeProject, key, parent)
 {
-    setIcon(0,QIcon("://icons/32x32/PathGreen.png"));
-    setCheckState(0, Qt::Unchecked);
+    setIcon(eColumnCheckbox,QIcon("://icons/32x32/PathGreen.png"));
+    isLoadable = true;
+
+    setupFromDB();
 }
 
 CDBFolderProject::~CDBFolderProject()
diff --git a/src/gis/db/CDBFolderProject.h b/src/gis/db/CDBFolderProject.h
index 0732da0..902b45c 100644
--- a/src/gis/db/CDBFolderProject.h
+++ b/src/gis/db/CDBFolderProject.h
@@ -24,7 +24,7 @@
 class CDBFolderProject : public IDBFolder
 {
     public:
-        CDBFolderProject(quint64 key, QTreeWidgetItem *parent);
+        CDBFolderProject(QSqlDatabase &db, quint64 key, QTreeWidgetItem *parent);
         virtual ~CDBFolderProject();
 };
 
diff --git a/src/gis/db/CDBItem.cpp b/src/gis/db/CDBItem.cpp
index f62cd91..9852c3b 100644
--- a/src/gis/db/CDBItem.cpp
+++ b/src/gis/db/CDBItem.cpp
@@ -17,14 +17,61 @@
 **********************************************************************************************/
 
 #include "gis/db/CDBItem.h"
+#include "gis/db/IDBFolder.h"
+#include "gis/db/macros.h"
+#include "gis/CGisWidget.h"
 
-CDBItem::CDBItem()
+#include <QtSql>
+
+CDBItem::CDBItem(QSqlDatabase &db, quint64 id, IDBFolder *parent)
+    : QTreeWidgetItem(parent)
+    , db(db)
+    , id(id)
 {
+//    qDebug() << "CDBItem::CDBItem()";
+    QSqlQuery query(db);
+    query.prepare("SELECT type, key, icon, name, comment FROM items WHERE id=:id");
+    query.bindValue(":id", id);
+    QUERY_EXEC(return);
+    if(query.next())
+    {
+        QPixmap pixmap;
+        type = query.value(0).toInt();
+        key = query.value(1).toString();
+        pixmap.loadFromData(query.value(2).toByteArray(), "PNG");
+        setIcon(0, pixmap);
+        setText(1, query.value(3).toString());
+        setToolTip(1, query.value(4).toString());
 
+    }
 }
 
 CDBItem::~CDBItem()
 {
-
+//    qDebug() << "CDBItem::~CDBItem()";
 }
 
+void CDBItem::toggle()
+{
+    IDBFolder * folder = dynamic_cast<IDBFolder*>(parent());
+    if(folder == 0)
+    {
+        return;
+    }
+
+    if(checkState(IDBFolder::eColumnCheckbox) == Qt::Checked)
+    {
+        CEvtD2WShowFolder * evt1 = new CEvtD2WShowFolder(folder->getId(), folder->getDBName());
+        CGisWidget::self().postEventForWks(evt1);
+
+        CEvtD2WShowItems * evt2 = new CEvtD2WShowItems(folder->getId(), folder->getDBName());
+        evt2->items << evt_item_t(id, type);
+        CGisWidget::self().postEventForWks(evt2);
+    }
+    else
+    {
+        CEvtD2WHideItems * evt2 = new CEvtD2WHideItems(folder->getId(), folder->getDBName());
+        evt2->keys << key;
+        CGisWidget::self().postEventForWks(evt2);
+    }
+}
diff --git a/src/gis/db/CDBItem.h b/src/gis/db/CDBItem.h
index c92f4d8..81151f0 100644
--- a/src/gis/db/CDBItem.h
+++ b/src/gis/db/CDBItem.h
@@ -21,11 +21,24 @@
 
 #include <QTreeWidgetItem>
 
+class IDBFolder;
+class QSqlDatabase;
+
 class CDBItem : public QTreeWidgetItem
 {
     public:
-        CDBItem();
+        CDBItem(QSqlDatabase& db, quint64 id, IDBFolder * parent);
         virtual ~CDBItem();
+
+        const QString& getKey(){return key;}
+        void toggle();
+
+    private:
+        QSqlDatabase& db;
+        quint64 id;
+
+        int type;
+        QString key;
 };
 
 #endif //CDBITEM_H
diff --git a/src/gis/db/CDBProject.cpp b/src/gis/db/CDBProject.cpp
index 2039adb..05a5103 100644
--- a/src/gis/db/CDBProject.cpp
+++ b/src/gis/db/CDBProject.cpp
@@ -17,15 +17,309 @@
 **********************************************************************************************/
 
 #include "gis/db/CDBProject.h"
+#include "gis/CGisWidget.h"
+#include "gis/qms/CQmsProject.h"
+#include "gis/gpx/CGpxProject.h"
+#include "gis/db/macros.h"
+#include "gis/wpt/CGisItemWpt.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/ovl/CGisItemOvlArea.h"
+#include "helpers/CSettings.h"
 
-CDBProject::CDBProject(CGisListWks *parent)
+#include <QtSql>
+#include <QtWidgets>
+CDBProject::CDBProject(CGisListWks * parent)
     : IGisProject(eTypeDb, "", parent)
 {
     setIcon(0,QIcon("://icons/32x32/DBProject.png"));
 }
 
+CDBProject::CDBProject(const QString& dbName, quint64 id, CGisListWks *parent)
+    : IGisProject(eTypeDb, dbName, parent)
+    , id(id)    
+{
+    setIcon(0,QIcon("://icons/32x32/DBProject.png"));
+    db = QSqlDatabase::database(dbName);
+
+    QSqlQuery query(db);
+    query.prepare("SELECT date, name, data FROM folders WHERE id=:id");
+    query.bindValue(":id", id);
+    QUERY_EXEC(return);
+    query.next();
+
+    QString date    = query.value(0).toString();
+    QString name    = query.value(1).toString();
+    QByteArray data = query.value(2).toByteArray();
+
+    if(data.isEmpty())
+    {
+        metadata.name = name;
+        metadata.time = QDateTime::fromString(date,"yyyy-MM-dd hh:mm:ss");
+
+        query.prepare("UPDATE folders SET key=:key WHERE id=:id");
+        query.bindValue(":key", getKey());
+        query.bindValue(":id", id);
+        QUERY_EXEC(return);
+    }
+    else
+    {
+        QDataStream in(&data, QIODevice::ReadOnly);
+        in.setByteOrder(QDataStream::LittleEndian);
+        in.setVersion(QDataStream::Qt_5_2);
+        *this << in;
+        filename = dbName;
+    }
+
+    setText(0, name);
+    setToolTip(0, getInfo());
+    valid = true;
+}
+
 CDBProject::~CDBProject()
 {
+    CEvtW2DAckInfo * info = new CEvtW2DAckInfo(false, getId(), db.connectionName());
+    CGisWidget::self().postEventForDb(info);
+}
+
+void CDBProject::restoreDBLink()
+{
+    db = QSqlDatabase::database(filename);
+
+    QSqlQuery query(db);
+    query.prepare("SELECT id FROM folders WHERE key=:key");
+    query.bindValue(":key", getKey());   
+    QUERY_EXEC(return);
+    if(query.next())
+    {
+        id = query.value(0).toULongLong();
+        setupName("----");
+        valid = true;
+    }
+}
+
+void CDBProject::postStatus()
+{
+    CEvtW2DAckInfo * info = new CEvtW2DAckInfo(true, getId(), db.connectionName());
+
+    const int N = childCount();
+    for(int n = 0; n < N; n++)
+    {
+        IGisItem * item = dynamic_cast<IGisItem*>(child(n));
+        if(item)
+        {
+            info->keysChildren << item->getKey().item;
+        }
+    }
+
+    CGisWidget::self().postEventForDb(info);
+}
+
+void CDBProject::saveAs()
+{
+    SETTINGS;
+    QString path = cfg.value("Paths/lastGisPath", QDir::homePath()).toString();
+
+    QString filter = "*.qms";
+    QString fn = QFileDialog::getSaveFileName(0, QObject::tr("Save GIS data to..."), path, "*.gpx;; *.qms", &filter);
+
+    if(fn.isEmpty())
+    {
+        return;
+    }
+
+    if(filter == "*.gpx")
+    {
+        CGpxProject::saveAs(fn, *this);
+    }
+    else if(filter == "*.qms")
+    {
+        CQmsProject::saveAs(fn, *this);
+    }
+    else
+    {
+        return;
+    }
+
+    path = QFileInfo(fn).absolutePath();
+    cfg.setValue("Paths/lastGisPath", path);
+}
+
+void CDBProject::save()
+{
+    QSqlQuery query(db);
+
+    int N = childCount();
+    QProgressDialog progress(QObject::tr("Save ..."), QObject::tr("Abort save"), 0, 100);
+    progress.setWindowModality(Qt::WindowModal);
+
+    CEvtW2DAckInfo * info = new CEvtW2DAckInfo(true, getId(), db.connectionName());
+
+    try
+    {
+        for(int i = 0; i < N; i++)
+        {
+            progress.setValue(i * 100 / N);
+            if (progress.wasCanceled())
+            {
+                throw 0;
+            }
+
+
+            IGisItem * item = dynamic_cast<IGisItem*>(child(i));
+            if(item == 0)
+            {
+                continue;
+            }
+            quint64 idItem = 0;
+
+            // serialize complete history of item
+            QByteArray data;
+            QDataStream in(&data, QIODevice::WriteOnly);
+            in.setByteOrder(QDataStream::LittleEndian);
+            in.setVersion(QDataStream::Qt_5_2);
+            in << item->getHistory();
+
+            // test if item exists in database
+            query.prepare("SELECT id FROM items WHERE key=:key");
+            query.bindValue(":key", item->getKey().item);
+            QUERY_EXEC(throw -1);
+
+            QBuffer buffer;
+            buffer.open(QIODevice::ReadWrite);
+            QPixmap pixmap = item->getIcon();
+            pixmap.save(&buffer, "PNG");
+            buffer.seek(0);
+
+
+            if(query.next())
+            {
+                // item exits -> update item data in database
+                idItem = query.value(0).toULongLong();
+                query.prepare("UPDATE items SET type=:type, key=:key, icon=:icon, name=:name, comment=:comment, data=:data WHERE id=:id");
+                query.bindValue(":type",    item->type());
+                query.bindValue(":key",     item->getKey().item);
+                query.bindValue(":icon",    buffer.data());
+                query.bindValue(":name",    item->getName());
+                query.bindValue(":comment", item->getInfo());
+                query.bindValue(":data", data);
+                query.bindValue(":id", idItem);
+                QUERY_EXEC(throw -1);
+
+            }
+            else
+            {
+                // item is unknown to database -> create item in database
+                query.prepare("INSERT INTO items (type, key, icon, name, comment, data) VALUES (:type, :key, :icon, :name, :comment, :data)");
+                query.bindValue(":type",    item->type());
+                query.bindValue(":key",     item->getKey().item);
+                query.bindValue(":icon",    buffer.data());
+                query.bindValue(":name",    item->getName());
+                query.bindValue(":comment", item->getInfo());
+                query.bindValue(":data", data);
+                QUERY_EXEC(throw -1);
+
+                query.prepare("SELECT last_insert_rowid() from items");
+                QUERY_EXEC(throw -1);
+                query.next();
+                idItem = query.value(0).toULongLong();
+                if(idItem == 0)
+                {
+                    qDebug() << "childId equals 0. bad.";
+                    throw -1;
+                }
+            }
+
+            // check if relation already exists.
+            query.prepare("SELECT id FROM folder2item WHERE parent=:parent AND child=:child");
+            query.bindValue(":parent", id);
+            query.bindValue(":child", idItem);
+            QUERY_EXEC(;);
+
+            if(!query.next())
+            {
+                // create relation
+                query.prepare("INSERT INTO folder2item (parent, child) VALUES (:parent, :child)");
+                query.bindValue(":parent", id);
+                query.bindValue(":child", idItem);
+                QUERY_EXEC(throw -1);
+            }
+
+            info->keysChildren << item->getKey().item;
+            item->updateDecoration(IGisItem::eMarkNone, IGisItem::eMarkChanged);
+        }
+
+        // serialize metadata of project
+        QByteArray data;
+        QDataStream in(&data, QIODevice::WriteOnly);
+        in.setByteOrder(QDataStream::LittleEndian);
+        in.setVersion(QDataStream::Qt_5_2);
+        *this >> in;
+
+        // update folder entry in database
+        query.prepare("UPDATE folders SET name=:name, comment=:comment, data=:data WHERE id=:id");
+        query.bindValue(":name", getName());
+        query.bindValue(":comment", getInfo());
+        query.bindValue(":data", data);
+        query.bindValue(":id", getId());
+        QUERY_EXEC(throw -1);
+
+        CGisWidget::self().postEventForDb(info);
+        setText(1,"");
+    }
+    catch(int n)
+    {
+        if(n < 0)
+        {
+            delete info;
+        }
+        else
+        {
+            CGisWidget::self().postEventForDb(info);
+        }
+    }
+}
+
+void CDBProject::showItems(CEvtD2WShowItems * evt)
+{
+
+    foreach(const evt_item_t& item, evt->items)
+    {
+        switch(item.type)
+        {
+            case IGisItem::eTypeWpt:
+                new CGisItemWpt(item.id, db, this);
+                break;
+            case IGisItem::eTypeTrk:
+                new CGisItemTrk(item.id, db, this);
+                break;
+            case IGisItem::eTypeRte:
+                new CGisItemRte(item.id, db, this);
+                break;
+            case IGisItem::eTypeOvl:
+                new CGisItemOvlArea(item.id, db, this);
+                break;
+            default:;
+        }
+    }
+
+    setToolTip(0, getInfo());
+    postStatus();
+}
+
+void CDBProject::hideItems(CEvtD2WHideItems * evt)
+{
+    IGisItem::key_t key;
+    key.project = getKey();
+
+    QMessageBox::StandardButtons last = QMessageBox::YesToAll;
 
+    foreach(const QString& k, evt->keys)
+    {
+        key.item = k;
+        delItemByKey(key, last);
+    }
+    setToolTip(0, getInfo());
+    postStatus();
 }
 
diff --git a/src/gis/db/CDBProject.h b/src/gis/db/CDBProject.h
index 1834fea..70eda75 100644
--- a/src/gis/db/CDBProject.h
+++ b/src/gis/db/CDBProject.h
@@ -20,12 +20,63 @@
 #define CDBPROJECT_H
 
 #include "gis/prj/IGisProject.h"
+#include <QSqlDatabase>
+
+class CEvtD2WShowItems;
+class CEvtD2WHideItems;
+class CQlgtFolder;
 
 class CDBProject : public IGisProject
 {
     public:
         CDBProject(CGisListWks * parent);
+        CDBProject(const QString &dbName, quint64 id, CGisListWks * parent);
+        CDBProject(CQlgtFolder& folder);
         virtual ~CDBProject();
+
+        /**
+           @brief Restore database link after the project has been restored from binary storage.
+
+           Typically this is done after the project has been restored in the workspace on application's startup.
+
+        */
+        void restoreDBLink();
+
+        void save();
+        void saveAs();
+
+        quint64 getId(){return id;}
+        QString getDBName(){return db.connectionName();}
+
+        /**
+           @brief Serialize object out of a QDataStream
+
+           See CGisSerialization.cpp for implementation
+
+           @param stream the binary data stream
+           @return The stream object.
+        */
+        QDataStream& operator<<(QDataStream& stream);
+
+        /**
+           @brief Serialize object into a QDataStream
+
+           See CGisSerialization.cpp for implementation
+
+           @param stream the binary data stream
+           @return The stream object.
+        */
+        QDataStream& operator>>(QDataStream& stream);
+
+
+        void postStatus();
+
+        void showItems(CEvtD2WShowItems * evt);
+        void hideItems(CEvtD2WHideItems * evt);
+
+    private:
+        QSqlDatabase db;
+        quint64 id;
 };
 
 #endif //CDBPROJECT_H
diff --git a/src/gis/db/CSetupDatabase.cpp b/src/gis/db/CSetupDatabase.cpp
new file mode 100644
index 0000000..c6c49d7
--- /dev/null
+++ b/src/gis/db/CSetupDatabase.cpp
@@ -0,0 +1,128 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/db/CSetupDatabase.h"
+#include "gis/CGisListDB.h"
+#include "helpers/CSettings.h"
+
+#include <QtWidgets>
+
+CSetupDatabase::CSetupDatabase(QString& name, QString& filename, CGisListDB &parent)
+    : QDialog(&parent)
+    , list(parent)
+    , name(name)
+    , filename(filename)
+{
+    setupUi(this);
+
+    lineName->setText(name);
+    labelFilename->setText(filename);
+
+    connect(toolNewDB, SIGNAL(clicked()), this, SLOT(slotNewDB()));
+    connect(toolAddDB, SIGNAL(clicked()), this, SLOT(slotOpenDB()));
+    connect(lineName, SIGNAL(textChanged(QString)), this, SLOT(slotUpdateButtonBox()));
+
+    slotUpdateButtonBox();
+}
+
+CSetupDatabase::~CSetupDatabase()
+{
+
+}
+
+void CSetupDatabase::slotUpdateButtonBox()
+{
+    bool enable = true;
+
+    if(lineName->text().isEmpty())
+    {
+        enable = false;
+    }
+    if(labelFilename->text() == "-")
+    {
+        enable = false;
+    }
+
+    buttonBox->button(QDialogButtonBox::Ok)->setEnabled(enable);
+}
+
+
+void CSetupDatabase::accept()
+{
+
+    name = lineName->text();
+    if(list.hasDatabase(name))
+    {
+        QMessageBox::warning(0, tr("Error..."), tr("There is already a database with name '%1'").arg(name), QMessageBox::Abort);
+        return;
+    }
+    filename = labelFilename->text();
+
+    QDialog::accept();
+}
+
+
+void CSetupDatabase::slotNewDB()
+{
+    SETTINGS;
+    QString path = cfg.value("Paths/lastDatabasePath", QDir::homePath()).toString();
+
+    QString filename = QFileDialog::getSaveFileName(this, tr("New database..."), path, "Database (*.db)");
+    if(filename.isEmpty())
+    {
+        return;
+    }
+
+    QFileInfo fi(filename);
+    if(fi.suffix().toLower() != "db")
+    {
+        filename += ".db";
+    }
+
+
+    cfg.setValue("Paths/lastDatabasePath", fi.absolutePath());
+
+    labelFilename->setText(filename);
+
+    slotUpdateButtonBox();
+}
+
+void CSetupDatabase::slotOpenDB()
+{
+    SETTINGS;
+    QString path = cfg.value("Paths/lastDatabasePath", QDir::homePath()).toString();
+
+    QString filename = QFileDialog::getOpenFileName(this, tr("Open database..."), path, "Database (*.db)");
+    if(filename.isEmpty())
+    {
+        return;
+    }
+
+    QFileInfo fi(filename);
+    if(fi.suffix().toLower() != "db")
+    {
+        filename += ".db";
+    }
+
+
+    cfg.setValue("Paths/lastDatabasePath", fi.absolutePath());
+
+    labelFilename->setText(filename);
+
+    slotUpdateButtonBox();
+}
diff --git a/src/gis/db/CSetupDB.h b/src/gis/db/CSetupDatabase.h
similarity index 67%
copy from src/gis/db/CSetupDB.h
copy to src/gis/db/CSetupDatabase.h
index 976eacc..a00b0e5 100644
--- a/src/gis/db/CSetupDB.h
+++ b/src/gis/db/CSetupDatabase.h
@@ -16,27 +16,34 @@
 
 **********************************************************************************************/
 
-#ifndef CSETUPDB_H
-#define CSETUPDB_H
+#ifndef CSETUPDATABASE_H
+#define CSETUPDATABASE_H
 
 #include <QDialog>
-#include "ui_ISetupDB.h"
+#include "ui_ISetupDatabase.h"
 
+class CGisListDB;
 
-class CSetupDB : public QDialog, private Ui::ISetupDB
+class CSetupDatabase : public QDialog, private Ui::ISetupDatabase
 {
     Q_OBJECT
     public:
-        CSetupDB(QWidget * parent);
-        virtual ~CSetupDB();
+        CSetupDatabase(QString &name, QString &filename, CGisListDB& parent);
+        virtual ~CSetupDatabase();
 
     public slots:
         void accept();
 
-
     private slots:
-        void slotSetupPath();
+        void slotNewDB();
+        void slotOpenDB();
+        void slotUpdateButtonBox();
+
+    private:
+        CGisListDB& list;
+        QString& name;
+        QString& filename;
 };
 
-#endif //CSETUPDB_H
+#endif //CSETUPDATABASE_H
 
diff --git a/src/gis/db/CSetupDB.cpp b/src/gis/db/CSetupWorkspace.cpp
similarity index 71%
rename from src/gis/db/CSetupDB.cpp
rename to src/gis/db/CSetupWorkspace.cpp
index 30db108..92c03ad 100644
--- a/src/gis/db/CSetupDB.cpp
+++ b/src/gis/db/CSetupWorkspace.cpp
@@ -16,13 +16,13 @@
 
 **********************************************************************************************/
 
-#include "gis/db/CSetupDB.h"
+#include "gis/db/CSetupWorkspace.h"
 #include "helpers/CSettings.h"
 #include "config.h"
 
 #include <QtWidgets>
 
-CSetupDB::CSetupDB(QWidget *parent)
+CSetupWorkspace::CSetupWorkspace(QWidget *parent)
     : QDialog(parent)
 {
     setupUi(this);
@@ -31,25 +31,22 @@ CSetupDB::CSetupDB(QWidget *parent)
     cfg.beginGroup("Database");
     checkSaveOnExit->setChecked(cfg.value("saveOnExit", true).toBool());
     spinSaveEvery->setValue(cfg.value("saveEvery",5).toInt());
-    labelDatabasePath->setText(cfg.value("path",QDir::home().filePath(CONFIGDIR).append("qms.db")).toString());
     cfg.endGroup();
 
-    connect(toolDatabasePath, SIGNAL(clicked()), this, SLOT(slotSetupPath()));
     connect(checkSaveOnExit, SIGNAL(toggled(bool)), spinSaveEvery, SLOT(setEnabled(bool)));
 }
 
-CSetupDB::~CSetupDB()
+CSetupWorkspace::~CSetupWorkspace()
 {
 
 }
 
-void CSetupDB::accept()
+void CSetupWorkspace::accept()
 {
     SETTINGS;
     cfg.beginGroup("Database");
     cfg.setValue("saveOnExit", checkSaveOnExit->isChecked());
     cfg.setValue("saveEvery", spinSaveEvery->value());
-    cfg.setValue("path", labelDatabasePath->text());
     cfg.endGroup();
 
     QMessageBox::information(this, tr("Setup database..."), tr("Changes will become active after an application's restart."), QMessageBox::Ok);
@@ -57,13 +54,3 @@ void CSetupDB::accept()
     QDialog::accept();
 }
 
-void CSetupDB::slotSetupPath()
-{
-    QFileInfo fi(labelDatabasePath->text());
-    QString filename = QFileDialog::getSaveFileName(this, tr("Select database path..."),fi.absoluteFilePath(), "Database (*.db)");
-    if(filename.isEmpty())
-    {
-        return;
-    }
-    labelDatabasePath->setText(filename);
-}
diff --git a/src/gis/db/CSetupDB.h b/src/gis/db/CSetupWorkspace.h
similarity index 79%
copy from src/gis/db/CSetupDB.h
copy to src/gis/db/CSetupWorkspace.h
index 976eacc..464b4a9 100644
--- a/src/gis/db/CSetupDB.h
+++ b/src/gis/db/CSetupWorkspace.h
@@ -16,27 +16,24 @@
 
 **********************************************************************************************/
 
-#ifndef CSETUPDB_H
-#define CSETUPDB_H
+#ifndef CSETUPWORKSPACE_H
+#define CSETUPWORKSPACE_H
 
 #include <QDialog>
-#include "ui_ISetupDB.h"
+#include "ui_ISetupWorkspace.h"
 
 
-class CSetupDB : public QDialog, private Ui::ISetupDB
+class CSetupWorkspace : public QDialog, private Ui::ISetupWorkspace
 {
     Q_OBJECT
     public:
-        CSetupDB(QWidget * parent);
-        virtual ~CSetupDB();
+        CSetupWorkspace(QWidget * parent);
+        virtual ~CSetupWorkspace();
 
     public slots:
         void accept();
 
-
-    private slots:
-        void slotSetupPath();
 };
 
-#endif //CSETUPDB_H
+#endif //CSETUPWORKSPACE_H
 
diff --git a/src/gis/db/IDB.cpp b/src/gis/db/IDB.cpp
new file mode 100644
index 0000000..9ae2806
--- /dev/null
+++ b/src/gis/db/IDB.cpp
@@ -0,0 +1,178 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/db/IDB.h"
+#include "gis/db/macros.h"
+
+#include <QtSql>
+
+IDB::IDB()
+{
+}
+
+IDB::~IDB()
+{
+}
+
+bool IDB::setupDB(const QString& filename, const QString& connectionName)
+{
+    db = QSqlDatabase::addDatabase("QSQLITE", connectionName);
+    db.setDatabaseName(filename);
+    db.open();
+
+    QSqlQuery query(db);
+    if(!query.exec("PRAGMA locking_mode=EXCLUSIVE"))
+    {
+        return false;
+    }
+
+    if(!query.exec("PRAGMA synchronous=OFF"))
+    {
+        return false;
+    }
+
+    if(!query.exec("PRAGMA temp_store=MEMORY"))
+    {
+        return false;
+    }
+
+    if(!query.exec("PRAGMA default_cache_size=50"))
+    {
+        return false;
+    }
+
+    if(!query.exec("PRAGMA page_size=8192"))
+    {
+        return false;
+    }
+
+    if(!query.exec("SELECT version FROM versioninfo"))
+    {
+        return initDB();
+    }
+    else if(query.next())
+    {
+        int version = query.value(0).toInt();
+        if(version != DB_VERSION)
+        {
+            return migrateDB(version);
+        }
+    }
+    else
+    {
+        return initDB();
+    }
+
+    query.prepare( "UPDATE folders SET name=:name WHERE id=1");
+    query.bindValue(":name", connectionName);
+    QUERY_EXEC(;)
+
+    return true;
+}
+
+bool IDB::initDB()
+{
+    QSqlQuery query(db);
+
+    if(query.exec( "CREATE TABLE versioninfo ( version TEXT, type TEXT )"))
+    {
+        query.prepare( "INSERT INTO versioninfo (version, type) VALUES(:version, 'QMapShack')");
+        query.bindValue(":version", DB_VERSION);
+        QUERY_EXEC(return false;);
+    }
+
+    if(!query.exec( "CREATE TABLE folders ("
+                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+                    "type           INTEGER NOT NULL,"
+                    "key            TEXT,"
+                    "date           DATETIME DEFAULT CURRENT_TIMESTAMP,"
+                    "name           TEXT NOT NULL,"
+                    "comment        TEXT,"
+                    "locked         BOOLEAN DEFAULT FALSE,"
+                    "data           BLOB"
+                    ")"))
+    {
+        qDebug() << query.lastQuery();
+        qDebug() << query.lastError();
+        return false;
+    }
+
+    if(!query.exec( "CREATE TABLE items ("
+                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+                    "type           INTEGER,"
+                    "key            TEXT NOT NULL,"
+                    "date           DATETIME DEFAULT CURRENT_TIMESTAMP,"
+                    "icon           BLOB NOT NULL,"
+                    "name           TEXT NOT NULL,"
+                    "comment        TEXT,"
+                    "data           BLOB NOT NULL"
+                    ")"))
+    {
+        qDebug() << query.lastQuery();
+        qDebug() << query.lastError();
+        return false;
+    }
+
+    query.prepare("INSERT INTO folders (type, name, comment) VALUES (2, :name, '')");
+    query.bindValue(":name", db.connectionName());
+    QUERY_EXEC(return false;);
+
+    if(!query.exec( "CREATE TABLE folder2folder ("
+                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+                    "parent         INTEGER NOT NULL,"
+                    "child          INTEGER NOT NULL,"
+                    "FOREIGN KEY(parent) REFERENCES folders(id),"
+                    "FOREIGN KEY(child) REFERENCES folders(id)"
+                    ")"))
+    {
+        qDebug() << query.lastQuery();
+        qDebug() << query.lastError();
+        return false;
+    }
+
+    if(!query.exec( "CREATE TABLE folder2item ("
+                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+                    "parent         INTEGER NOT NULL,"
+                    "child          INTEGER NOT NULL,"
+                    "FOREIGN KEY(parent) REFERENCES folders(id),"
+                    "FOREIGN KEY(child) REFERENCES items(id)"
+                    ")"))
+    {
+        qDebug() << query.lastQuery();
+        qDebug() << query.lastError();
+        return false;
+    }
+    return true;
+}
+
+bool IDB::migrateDB(int version)
+{
+    QSqlQuery query(db);
+
+    for(version++; version <= DB_VERSION; version++)
+    {
+        switch(version)
+        {
+        }
+    }
+    query.prepare( "UPDATE versioninfo set version=:version");
+    query.bindValue(":version", version - 1);
+    QUERY_EXEC(return false;);
+    return true;
+}
+
diff --git a/src/gis/db/CDBFolderGroup.h b/src/gis/db/IDB.h
similarity index 75%
copy from src/gis/db/CDBFolderGroup.h
copy to src/gis/db/IDB.h
index 91fb15e..fc5fd44 100644
--- a/src/gis/db/CDBFolderGroup.h
+++ b/src/gis/db/IDB.h
@@ -16,17 +16,24 @@
 
 **********************************************************************************************/
 
-#ifndef CDBFOLDERGROUP_H
-#define CDBFOLDERGROUP_H
+#ifndef IDB_H
+#define IDB_H
 
-#include "gis/db/IDBFolder.h"
+#include <QSqlDatabase>
 
-class CDBFolderGroup : public IDBFolder
+class IDB
 {
     public:
-        CDBFolderGroup(quint64 key, QTreeWidgetItem * parent);
-        virtual ~CDBFolderGroup();
+        IDB();
+        virtual ~IDB();
+
+    protected:
+        bool setupDB(const QString &filename, const QString &connectionName);
+        bool initDB();
+        bool migrateDB(int version);
+
+        QSqlDatabase db;
 };
 
-#endif //CDBFOLDERGROUP_H
+#endif //IDB_H
 
diff --git a/src/gis/db/IDBFolder.cpp b/src/gis/db/IDBFolder.cpp
index d45a3dc..8765cc4 100644
--- a/src/gis/db/IDBFolder.cpp
+++ b/src/gis/db/IDBFolder.cpp
@@ -21,23 +21,29 @@
 #include "gis/db/CDBFolderGroup.h"
 #include "gis/db/CDBFolderProject.h"
 #include "gis/db/CDBFolderOther.h"
+#include "gis/db/CDBItem.h"
+#include "gis/db/CDBFolderDatabase.h"
+#include "gis/IGisItem.h"
+#include "gis/CGisWidget.h"
 
 #include <QtSql>
 
-IDBFolder::IDBFolder(type_e type, quint64 id, QTreeWidgetItem *parent)
-    : QTreeWidgetItem(parent, type)
+IDBFolder::IDBFolder(bool isLoadable, QSqlDatabase& db, type_e type, quint64 id, QTreeWidgetItem *parent)
+    : QTreeWidgetItem(parent, type)    
+    , db(db)
     , id(id)
+    , isLoadable(isLoadable)
 {
-    db = QSqlDatabase::database();
-    setupFromDB();
+
 }
 
-IDBFolder::IDBFolder(type_e type, quint64 id, QTreeWidget * parent)
-    : QTreeWidgetItem(parent, type)
+IDBFolder::IDBFolder(bool isLoadable, QSqlDatabase& db, type_e type, quint64 id, QTreeWidget * parent)
+    : QTreeWidgetItem(parent, type)    
+    , db(db)
     , id(id)
+    , isLoadable(isLoadable)
 {
-    db = QSqlDatabase::database();
-    setupFromDB();
+
 }
 
 IDBFolder::~IDBFolder()
@@ -45,35 +51,209 @@ IDBFolder::~IDBFolder()
 
 }
 
-IDBFolder * IDBFolder::createFolderByType(int type, quint64 id, QTreeWidgetItem * parent)
+bool IDBFolder::operator<(const QTreeWidgetItem &other) const
+{
+    const IDBFolder * folder = dynamic_cast<const IDBFolder*>(&other);
+    if(folder == 0)
+    {
+        return false;
+    }
+
+
+    return text(eColumnName) < folder->text(eColumnName);
+}
+
+IDBFolder * IDBFolder::createFolderByType(QSqlDatabase& db, int type, quint64 id, QTreeWidgetItem * parent)
 {
     switch(type)
     {
     case eTypeGroup:
-        return new CDBFolderGroup(id, parent);
+        return new CDBFolderGroup(db, id, parent);
     case eTypeProject:
-        return new CDBFolderProject(id, parent);
+        return new CDBFolderProject(db, id, parent);
     case eTypeOther:
-        return new CDBFolderOther(id, parent);
+        return new CDBFolderOther(db, id, parent);
     default:
         return 0;
     }
 }
 
+QString IDBFolder::getDBName()
+{
+    return db.connectionName();
+}
+
+CDBFolderDatabase * IDBFolder::getDBFolder()
+{
+    if(type() == eTypeDatabase)
+    {
+        return dynamic_cast<CDBFolderDatabase*>(this);
+    }
+
+    IDBFolder * folder = dynamic_cast<IDBFolder*>(parent());
+    if(folder != 0)
+    {
+        return folder->getDBFolder();
+    }
+    return 0;
+}
+
+void IDBFolder::addFolder(type_e type, const QString& name)
+{
+    QSqlQuery query(db);
+    query.prepare("INSERT INTO folders (name, type) VALUES (:name, :type)");
+    query.bindValue(":name", name);
+    query.bindValue(":type", type);
+    QUERY_EXEC(return);
+
+    query.prepare("SELECT last_insert_rowid() from folders");
+    QUERY_EXEC(return);
+    query.next();
+    quint64 idChild = query.value(0).toULongLong();
+    if(idChild == 0)
+    {
+        qDebug() << "CGisListDB::slotAddFolder(): childId equals 0. bad.";
+        return;
+    }
+
+    query.prepare("INSERT INTO folder2folder (parent, child) VALUES (:parent, :child)");
+    query.bindValue(":parent", id);
+    query.bindValue(":child", idChild);
+    QUERY_EXEC(return);
+
+    IDBFolder::createFolderByType(db, type, idChild, this);
+}
+
+void IDBFolder::expanding()
+{
+    qDeleteAll(takeChildren());
+    addChildren(QSet<QString>());
+
+    CEvtD2WReqInfo * evt = new CEvtD2WReqInfo(getId(), getDBName());
+    CGisWidget::self().postEventForWks(evt);
+}
+
+void IDBFolder::update(CEvtW2DAckInfo * info)
+{
+
+    if(info->id != id)
+    {
+        // forward call if not for local ID
+        for(int i = 0; i < childCount(); i++)
+        {
+            IDBFolder * folder = dynamic_cast<IDBFolder*>(child(i));
+            if(folder)
+            {
+                folder->update(info);
+            }
+        }
+        return;
+    }
+
+    setCheckState(eColumnCheckbox, info->isLoaded ? Qt::Checked : Qt::Unchecked);
+
+    QSqlQuery query(db);
+    // update text and tooltip
+    query.prepare("SELECT name, comment FROM folders WHERE id=:id");
+    query.bindValue(":id", id);
+    QUERY_EXEC(return);
+    query.next();
+
+    setText(eColumnName, query.value(0).toString());
+    setToolTip(eColumnName, query.value(1).toString());
+
+    // count folders linked to this folder
+    query.prepare("SELECT COUNT() FROM folder2folder WHERE parent=:id");
+    query.bindValue(":id", id);
+    QUERY_EXEC(return);
+    query.next();
+
+    qint32 nFolders = query.value(0).toInt();
+
+    // count items linked to this folder
+    query.prepare("SELECT COUNT() FROM folder2item WHERE parent=:id");
+    query.bindValue(":id", id);
+    QUERY_EXEC(return);
+    query.next();
+
+    qint32 nItems = query.value(0).toInt();
+
+    // set indicator according to items
+    if(nFolders || nItems)
+    {
+        setChildIndicatorPolicy(QTreeWidgetItem::ShowIndicator);
+    }
+    else
+    {
+        setChildIndicatorPolicy(QTreeWidgetItem::DontShowIndicator);
+    }
+
+    if(isExpanded())
+    {
+        qDeleteAll(takeChildren());
+        addChildren(info->keysChildren);        
+    }
+
+
+}
+
+void IDBFolder::toggle()
+{
+    if(checkState(IDBFolder::eColumnCheckbox) == Qt::Checked)
+    {
+        CEvtD2WShowFolder * evt1 = new CEvtD2WShowFolder(getId(), getDBName());
+        CGisWidget::self().postEventForWks(evt1);
+
+        QSqlQuery query(db);
+        query.prepare("SELECT t1.child, t2.type FROM folder2item AS t1, items AS t2 WHERE t1.parent = :id AND t2.id = t1.child ORDER BY t2.id");
+        query.bindValue(":id", getId());
+        QUERY_EXEC(return);
+
+        CEvtD2WShowItems * evt2 = new CEvtD2WShowItems(getId(), getDBName());
+        while(query.next())
+        {
+            evt2->items << evt_item_t(query.value(0).toULongLong(), query.value(1).toUInt());
+        }
+        CGisWidget::self().postEventForWks(evt2);
+    }
+    else
+    {
+        CEvtD2WHideFolder * evt1 = new CEvtD2WHideFolder(getId(), getDBName());
+        CGisWidget::self().postEventForWks(evt1);
+    }
+}
+
+void IDBFolder::remove()
+{
+
+    IDBFolder * folder = dynamic_cast<IDBFolder*>(parent());
+    if(folder == 0)
+    {
+        return;
+    }
+    remove(folder->getId(), getId());
+
+    CEvtD2WHideFolder * evt1 = new CEvtD2WHideFolder(getId(), getDBName());
+    CGisWidget::self().postEventForWks(evt1);
+}
+
 void IDBFolder::setupFromDB()
 {
     if(id == 0)
     {
         return;
     }
+
     QSqlQuery query(db);
 
-    query.prepare("SELECT name FROM folders WHERE id=:id");
+    query.prepare("SELECT key, name, comment FROM folders WHERE id=:id");
     query.bindValue(":id", id);
     QUERY_EXEC(return);
     query.next();
 
-    setText(1, query.value(0).toString());
+    key = query.value(0).toString();
+    setText(eColumnName, query.value(1).toString());
+    setToolTip(eColumnName, query.value(2).toString());
 
     query.prepare("SELECT EXISTS(SELECT 1 FROM folder2folder WHERE parent=:id LIMIT 1)");
     query.bindValue(":id", id);
@@ -84,23 +264,123 @@ void IDBFolder::setupFromDB()
     {
         setChildIndicatorPolicy(QTreeWidgetItem::ShowIndicator);
     }
+    else
+    {
+        query.prepare("SELECT EXISTS(SELECT 1 FROM folder2item WHERE parent=:id LIMIT 1)");
+        query.bindValue(":id", id);
+        QUERY_EXEC(return);
+        query.next();
+        if(query.value(0).toInt() == 1)
+        {
+            setChildIndicatorPolicy(QTreeWidgetItem::ShowIndicator);
+        }
+    }
 
+    if(isLoadable)
+    {
+        setCheckState(eColumnCheckbox, Qt::Unchecked);
+        CEvtD2WReqInfo * evt = new CEvtD2WReqInfo(getId(), getDBName());
+        CGisWidget::self().postEventForWks(evt);
+    }
 }
 
-void IDBFolder::expanding()
+void IDBFolder::addChildren(const QSet<QString>& activeChildren)
 {
-    qDeleteAll(takeChildren());
-
     QSqlQuery query(db);
 
-    query.prepare("SELECT t1.child, t2.type FROM folder2folder AS t1, folders AS t2 WHERE t1.parent = :id AND t2.id = t1.child ORDER BY t2.name");
+    // folders 1st
+    query.prepare("SELECT t1.child, t2.type FROM folder2folder AS t1, folders AS t2 WHERE t1.parent = :id AND t2.id = t1.child ORDER BY t2.id");
     query.bindValue(":id", id);
     QUERY_EXEC(return);
     while(query.next())
     {
         quint64 idChild     = query.value(0).toULongLong();
         quint32 typeChild   = query.value(1).toInt();
-        IDBFolder::createFolderByType(typeChild, idChild, this);
+        IDBFolder::createFolderByType(db, typeChild, idChild, this);
     }
 
+    sortChildren(1, Qt::AscendingOrder);
+
+    // tracks 2nd
+    query.prepare("SELECT t1.child FROM folder2item AS t1, items AS t2 WHERE t1.parent = :id AND t2.id = t1.child AND t2.type=:type ORDER BY t2.id");
+    query.bindValue(":id", id);
+    query.bindValue(":type", IGisItem::eTypeTrk);
+    QUERY_EXEC(return);
+    while(query.next())
+    {
+        quint64 idChild = query.value(0).toULongLong();
+        CDBItem * item = new CDBItem(db, idChild, this);
+        item->setCheckState(eColumnCheckbox, activeChildren.contains(item->getKey()) ? Qt::Checked : Qt::Unchecked);
+    }
+
+    // routes 3rd
+    query.prepare("SELECT t1.child FROM folder2item AS t1, items AS t2 WHERE t1.parent = :id AND t2.id = t1.child AND t2.type=:type ORDER BY t2.id");
+    query.bindValue(":id", id);
+    query.bindValue(":type", IGisItem::eTypeRte);
+    QUERY_EXEC(return);
+    while(query.next())
+    {
+        quint64 idChild = query.value(0).toULongLong();
+        CDBItem * item = new CDBItem(db, idChild, this);
+        item->setCheckState(eColumnCheckbox, activeChildren.contains(item->getKey()) ? Qt::Checked : Qt::Unchecked);
+    }
+
+    //waypoints 4th
+    query.prepare("SELECT t1.child FROM folder2item AS t1, items AS t2 WHERE t1.parent = :id AND t2.id = t1.child AND t2.type=:type ORDER BY t2.id");
+    query.bindValue(":id", id);
+    query.bindValue(":type", IGisItem::eTypeWpt);
+    QUERY_EXEC(return);
+    while(query.next())
+    {
+        quint64 idChild = query.value(0).toULongLong();
+        CDBItem * item = new CDBItem(db, idChild, this);
+        item->setCheckState(eColumnCheckbox, activeChildren.contains(item->getKey()) ? Qt::Checked : Qt::Unchecked);
+    }
+
+    // overlays 5th
+    query.prepare("SELECT t1.child FROM folder2item AS t1, items AS t2 WHERE t1.parent = :id AND t2.id = t1.child AND t2.type=:type ORDER BY t2.id");
+    query.bindValue(":id", id);
+    query.bindValue(":type", IGisItem::eTypeOvl);
+    QUERY_EXEC(return);
+    while(query.next())
+    {
+        quint64 idChild = query.value(0).toULongLong();
+        CDBItem * item = new CDBItem(db, idChild, this);
+        item->setCheckState(eColumnCheckbox, activeChildren.contains(item->getKey()) ? Qt::Checked : Qt::Unchecked);
+    }
+}
+
+void IDBFolder::remove(quint64 idParent, quint64 idFolder)
+{
+    QSqlQuery query(db);
+    // delete this particular relation first
+    query.prepare("DELETE FROM folder2folder WHERE parent=:parent AND child=:child");
+    query.bindValue(":parent", idParent);
+    query.bindValue(":child", idFolder);
+    QUERY_EXEC(;);
+
+    query.prepare("SELECT EXISTS(SELECT 1 FROM folder2folder WHERE child=:id LIMIT 1)");
+    query.bindValue(":id", idFolder);
+    QUERY_EXEC(;);
+    // if there is no other relation delete the children, too.
+    if(!query.next() || (query.value(0).toInt() == 0))
+    {
+        query.prepare("SELECT child FROM folder2folder WHERE parent=:id");
+        query.bindValue(":id", idFolder);
+        QUERY_EXEC(;);
+        while(query.next())
+        {
+            remove(idFolder, query.value(0).toULongLong());
+        }
+
+        // remove the child items relations
+        query.prepare("DELETE FROM folder2item WHERE parent=:id");
+        query.bindValue(":id", idFolder);
+        QUERY_EXEC(;);
+
+        // and remove the folder
+        query.prepare("DELETE FROM folders WHERE id=:id");
+        query.bindValue(":id", idFolder);
+        QUERY_EXEC(;);
+    }
 }
diff --git a/src/gis/db/IDBFolder.h b/src/gis/db/IDBFolder.h
index 9f1c1dc..5a7783c 100644
--- a/src/gis/db/IDBFolder.h
+++ b/src/gis/db/IDBFolder.h
@@ -22,6 +22,10 @@
 #include <QTreeWidgetItem>
 #include <QSqlDatabase>
 
+class QSqlDatabase;
+class CEvtW2DAckInfo;
+class CDBFolderDatabase;
+
 class IDBFolder : public QTreeWidgetItem
 {
     public:
@@ -34,24 +38,41 @@ class IDBFolder : public QTreeWidgetItem
             ,eTypeOther = 5
         };
 
+        enum column_e
+        {
+             eColumnCheckbox = 0
+            ,eColumnName = 1
+        };
 
-        IDBFolder(type_e type, quint64 id, QTreeWidgetItem * parent);
-        IDBFolder(type_e type, quint64 id, QTreeWidget * parent);
+        IDBFolder(bool isLoadable, QSqlDatabase& db, type_e type, quint64 id, QTreeWidgetItem * parent);
+        IDBFolder(bool isLoadable, QSqlDatabase& db, type_e type, quint64 id, QTreeWidget * parent);
         virtual ~IDBFolder();
 
         quint64 getId(){return id;}
+        QString getDBName();
+        CDBFolderDatabase * getDBFolder();
 
+        virtual void addFolder(type_e type, const QString &name);
         virtual void expanding();
+        virtual void update(CEvtW2DAckInfo * info);
+        virtual void toggle();
+        virtual void remove();
 
-        static IDBFolder * createFolderByType(int type, quint64 id, QTreeWidgetItem *parent);
+        static IDBFolder * createFolderByType(QSqlDatabase &db, int type, quint64 id, QTreeWidgetItem *parent);
 
-    protected:
+        bool operator<(const QTreeWidgetItem &other) const;
+
+    protected:        
         void setupFromDB();
+        virtual void addChildren(const QSet<QString> &activeChildren);
+        virtual void remove(quint64 idParent, quint64 idFolder);
 
+        QSqlDatabase& db;
 
-    private:
-        QSqlDatabase db;
         quint64 id;
+        QString key;
+        bool isLoadable;        
+
 
 };
 
diff --git a/src/gis/db/ISetupDB.ui b/src/gis/db/ISetupDatabase.ui
similarity index 53%
copy from src/gis/db/ISetupDB.ui
copy to src/gis/db/ISetupDatabase.ui
index 9bc1bb7..c62af11 100644
--- a/src/gis/db/ISetupDB.ui
+++ b/src/gis/db/ISetupDatabase.ui
@@ -1,95 +1,70 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <ui version="4.0">
- <class>ISetupDB</class>
- <widget class="QDialog" name="ISetupDB">
+ <class>ISetupDatabase</class>
+ <widget class="QDialog" name="ISetupDatabase">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>397</width>
-    <height>116</height>
+    <width>476</width>
+    <height>112</height>
    </rect>
   </property>
   <property name="windowTitle">
-   <string>Setup database...</string>
+   <string>Add database...</string>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
-    <layout class="QHBoxLayout" name="horizontalLayout">
-     <item>
-      <widget class="QCheckBox" name="checkSaveOnExit">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
+    <layout class="QGridLayout" name="gridLayout">
+     <item row="0" column="1">
+      <widget class="QLineEdit" name="lineName"/>
+     </item>
+     <item row="1" column="0">
+      <widget class="QLabel" name="label_3">
        <property name="text">
-        <string/>
+        <string>File</string>
        </property>
       </widget>
      </item>
-     <item>
-      <widget class="QLabel" name="label_4">
+     <item row="1" column="1">
+      <widget class="QLabel" name="labelFilename">
        <property name="text">
-        <string>save workspace on exit, and every</string>
+        <string>-</string>
        </property>
       </widget>
      </item>
-     <item>
-      <widget class="QSpinBox" name="spinSaveEvery"/>
-     </item>
-     <item>
+     <item row="0" column="0">
       <widget class="QLabel" name="label_2">
        <property name="text">
-        <string>minutes</string>
+        <string>Name</string>
        </property>
       </widget>
      </item>
-    </layout>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout_2">
-     <item>
-      <widget class="QLabel" name="label_3">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
+     <item row="1" column="2">
+      <widget class="QToolButton" name="toolNewDB">
+       <property name="toolTip">
+        <string>Add new database.</string>
        </property>
        <property name="text">
-        <string>Database path</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QToolButton" name="toolDatabasePath">
-       <property name="text">
         <string>...</string>
        </property>
        <property name="icon">
         <iconset resource="../../resources.qrc">
-         <normaloff>:/icons/32x32/PathBlue.png</normaloff>:/icons/32x32/PathBlue.png</iconset>
-       </property>
-       <property name="iconSize">
-        <size>
-         <width>22</width>
-         <height>22</height>
-        </size>
+         <normaloff>:/icons/32x32/Add.png</normaloff>:/icons/32x32/Add.png</iconset>
        </property>
       </widget>
      </item>
-     <item>
-      <widget class="QLabel" name="labelDatabasePath">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
+     <item row="1" column="3">
+      <widget class="QToolButton" name="toolAddDB">
+       <property name="toolTip">
+        <string>Open existing database.</string>
        </property>
        <property name="text">
-        <string>-</string>
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset resource="../../resources.qrc">
+         <normaloff>:/icons/32x32/PathBlue.png</normaloff>:/icons/32x32/PathBlue.png</iconset>
        </property>
       </widget>
      </item>
@@ -114,32 +89,32 @@
   <connection>
    <sender>buttonBox</sender>
    <signal>accepted()</signal>
-   <receiver>ISetupDB</receiver>
+   <receiver>ISetupDatabase</receiver>
    <slot>accept()</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>227</x>
-     <y>91</y>
+     <x>248</x>
+     <y>254</y>
     </hint>
     <hint type="destinationlabel">
      <x>157</x>
-     <y>111</y>
+     <y>274</y>
     </hint>
    </hints>
   </connection>
   <connection>
    <sender>buttonBox</sender>
    <signal>rejected()</signal>
-   <receiver>ISetupDB</receiver>
+   <receiver>ISetupDatabase</receiver>
    <slot>reject()</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>295</x>
-     <y>97</y>
+     <x>316</x>
+     <y>260</y>
     </hint>
     <hint type="destinationlabel">
      <x>286</x>
-     <y>111</y>
+     <y>274</y>
     </hint>
    </hints>
   </connection>
diff --git a/src/gis/db/ISetupDB.ui b/src/gis/db/ISetupWorkspace.ui
similarity index 55%
rename from src/gis/db/ISetupDB.ui
rename to src/gis/db/ISetupWorkspace.ui
index 9bc1bb7..636bede 100644
--- a/src/gis/db/ISetupDB.ui
+++ b/src/gis/db/ISetupWorkspace.ui
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <ui version="4.0">
- <class>ISetupDB</class>
- <widget class="QDialog" name="ISetupDB">
+ <class>ISetupWorkspace</class>
+ <widget class="QDialog" name="ISetupWorkspace">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>397</width>
-    <height>116</height>
+    <width>421</width>
+    <height>88</height>
    </rect>
   </property>
   <property name="windowTitle">
    <string>Setup database...</string>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
+  <layout class="QVBoxLayout" name="verticalLayout_2">
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
@@ -49,53 +49,6 @@
     </layout>
    </item>
    <item>
-    <layout class="QHBoxLayout" name="horizontalLayout_2">
-     <item>
-      <widget class="QLabel" name="label_3">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="text">
-        <string>Database path</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QToolButton" name="toolDatabasePath">
-       <property name="text">
-        <string>...</string>
-       </property>
-       <property name="icon">
-        <iconset resource="../../resources.qrc">
-         <normaloff>:/icons/32x32/PathBlue.png</normaloff>:/icons/32x32/PathBlue.png</iconset>
-       </property>
-       <property name="iconSize">
-        <size>
-         <width>22</width>
-         <height>22</height>
-        </size>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QLabel" name="labelDatabasePath">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="text">
-        <string>-</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
-   <item>
     <widget class="QDialogButtonBox" name="buttonBox">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
@@ -107,14 +60,12 @@
    </item>
   </layout>
  </widget>
- <resources>
-  <include location="../../resources.qrc"/>
- </resources>
+ <resources/>
  <connections>
   <connection>
    <sender>buttonBox</sender>
    <signal>accepted()</signal>
-   <receiver>ISetupDB</receiver>
+   <receiver>ISetupWorkspace</receiver>
    <slot>accept()</slot>
    <hints>
     <hint type="sourcelabel">
@@ -130,7 +81,7 @@
   <connection>
    <sender>buttonBox</sender>
    <signal>rejected()</signal>
-   <receiver>ISetupDB</receiver>
+   <receiver>ISetupWorkspace</receiver>
    <slot>reject()</slot>
    <hints>
     <hint type="sourcelabel">
diff --git a/src/gis/gpx/serialization.cpp b/src/gis/gpx/serialization.cpp
index 817f340..307e39c 100644
--- a/src/gis/gpx/serialization.cpp
+++ b/src/gis/gpx/serialization.cpp
@@ -724,10 +724,6 @@ void CGisItemTrk::save(QDomNode& gpx)
 
 void CGisItemRte::readRte(const QDomNode& xml, rte_t& rte)
 {
-    qreal north = -90;
-    qreal east  = -180;
-    qreal south =  90;
-    qreal west  =  180;
 
     readXml(xml, "name", rte.name);
     readXml(xml, "cmt", rte.cmt);
@@ -746,16 +742,8 @@ void CGisItemRte::readRte(const QDomNode& xml, rte_t& rte)
         const QDomNode& xmlRtept = xmlRtepts.item(m);
         readWpt(xmlRtept, rtept);
         rtept.icon = getWptIconByName(rtept.sym, rtept.focus);
-
-        if(rtept.lon < west)  west    = rtept.lon;
-        if(rtept.lon > east)  east    = rtept.lon;
-        if(rtept.lat < south) south   = rtept.lat;
-        if(rtept.lat > north) north   = rtept.lat;
-
     }
 
-    boundingRect = QRectF(QPointF(west * DEG_TO_RAD, north * DEG_TO_RAD), QPointF(east * DEG_TO_RAD,south * DEG_TO_RAD));
-
     // decode some well known extensions
     if(xml.namedItem("extensions").isElement())
     {
diff --git a/src/gis/ovl/CGisItemOvlArea.cpp b/src/gis/ovl/CGisItemOvlArea.cpp
index dbf3e7e..a2ef687 100644
--- a/src/gis/ovl/CGisItemOvlArea.cpp
+++ b/src/gis/ovl/CGisItemOvlArea.cpp
@@ -136,7 +136,7 @@ CGisItemOvlArea::CGisItemOvlArea(const CGisItemOvlArea& parentArea, IGisProject
     , penBackground(Qt::white, 5, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
 {
     *this = parentArea;
-
+    key.project = project->getKey();
     setupHistory();
     updateDecoration(eMarkChanged, eMarkNone);
 }
@@ -164,7 +164,13 @@ CGisItemOvlArea::CGisItemOvlArea(const history_t& hist, IGisProject * project)
     loadHistory(hist.histIdxCurrent);
 }
 
-
+CGisItemOvlArea::CGisItemOvlArea(quint64 id, QSqlDatabase& db, IGisProject * project)
+    : IGisItem(project, eTypeOvl, -1)
+    , penForeground(Qt::blue, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
+    , penBackground(Qt::white, 5, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
+{
+    loadFromDb(id, db);
+}
 
 CGisItemOvlArea::~CGisItemOvlArea()
 {
@@ -388,10 +394,10 @@ const QString& CGisItemOvlArea::getName()
 QString CGisItemOvlArea::getInfo()
 {
     QString unit, val;
-    QString str = getName();
+    QString str = "<div style='font-weight: bold;'>" + getName() + "</div>";
 
     IUnit::self().meter2area(area.area, val, unit);
-    str += "\n" + QObject::tr("Area: %1%2").arg(val).arg(unit);
+    str += "<br/>\n" + QObject::tr("Area: %1%2").arg(val).arg(unit);
 
     QString desc = removeHtml(area.desc).simplified();
     if(desc.count())
diff --git a/src/gis/ovl/CGisItemOvlArea.h b/src/gis/ovl/CGisItemOvlArea.h
index e47b3ed..f2839b5 100644
--- a/src/gis/ovl/CGisItemOvlArea.h
+++ b/src/gis/ovl/CGisItemOvlArea.h
@@ -27,6 +27,7 @@
 
 class IGisProject;
 class CScrOptOvlArea;
+class IQlgtOverlay;
 
 #define OVL_N_COLORS 17
 #define OVL_N_WIDTHS 4
@@ -39,6 +40,8 @@ class CGisItemOvlArea : public IGisItem, public IGisLine
         CGisItemOvlArea(const CGisItemOvlArea &parentArea, IGisProject * project, int idx);
         CGisItemOvlArea(const QDomNode &xml, IGisProject *project);
         CGisItemOvlArea(const history_t& hist, IGisProject * project);
+        CGisItemOvlArea(quint64 id, QSqlDatabase& db, IGisProject * project);
+        CGisItemOvlArea(const IQlgtOverlay& ovl);
         virtual ~CGisItemOvlArea();
 
         QDataStream& operator<<(QDataStream& stream);
diff --git a/src/gis/ovl/CScrOptOvlArea.cpp b/src/gis/ovl/CScrOptOvlArea.cpp
index 5d40359..dd309f2 100644
--- a/src/gis/ovl/CScrOptOvlArea.cpp
+++ b/src/gis/ovl/CScrOptOvlArea.cpp
@@ -34,6 +34,8 @@ CScrOptOvlArea::CScrOptOvlArea(CGisItemOvlArea *area, const QPoint &point, IMous
     label->setText(area->getInfo());
     adjustSize();
 
+    toolEdit->setEnabled(!area->isReadOnly());
+
     anchor = area->getPointCloseBy(point);
     move(anchor.toPoint() + QPoint(-width()/2,SCR_OPT_OFFSET));
     show();
diff --git a/src/gis/ovl/IDetailsOvlArea.ui b/src/gis/ovl/IDetailsOvlArea.ui
index 7a5b710..c5b5e7a 100644
--- a/src/gis/ovl/IDetailsOvlArea.ui
+++ b/src/gis/ovl/IDetailsOvlArea.ui
@@ -33,6 +33,13 @@
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
       <widget class="QLabel" name="labelName">
+       <property name="font">
+        <font>
+         <pointsize>15</pointsize>
+         <weight>75</weight>
+         <bold>true</bold>
+        </font>
+       </property>
        <property name="text">
         <string>-</string>
        </property>
diff --git a/src/gis/prj/CDetailsPrj.cpp b/src/gis/prj/CDetailsPrj.cpp
index 1e38c13..80ee6fc 100644
--- a/src/gis/prj/CDetailsPrj.cpp
+++ b/src/gis/prj/CDetailsPrj.cpp
@@ -67,7 +67,7 @@ void CDetailsPrj::slotLinkActivated(const QString& link)
 {
     if(link == "name")
     {
-        QString name = QInputDialog::getText(0, tr("Edit name..."), tr("Enter new waypoint name."), QLineEdit::Normal, prj.getName());
+        QString name = QInputDialog::getText(0, tr("Edit name..."), tr("Enter new project name."), QLineEdit::Normal, prj.getName());
         if(name.isEmpty())
         {
             return;
diff --git a/src/gis/prj/IDetailsPrj.ui b/src/gis/prj/IDetailsPrj.ui
index 717b050..38290bd 100644
--- a/src/gis/prj/IDetailsPrj.ui
+++ b/src/gis/prj/IDetailsPrj.ui
@@ -33,6 +33,13 @@
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
       <widget class="QLabel" name="labelName">
+       <property name="font">
+        <font>
+         <pointsize>15</pointsize>
+         <weight>75</weight>
+         <bold>true</bold>
+        </font>
+       </property>
        <property name="text">
         <string>-</string>
        </property>
diff --git a/src/gis/prj/IGisProject.cpp b/src/gis/prj/IGisProject.cpp
index 0db35dc..51dee1d 100644
--- a/src/gis/prj/IGisProject.cpp
+++ b/src/gis/prj/IGisProject.cpp
@@ -41,6 +41,7 @@ IGisProject::~IGisProject()
     delete dlgDetails;
 }
 
+
 void IGisProject::genKey()
 {
     if(key.isEmpty())
@@ -132,30 +133,35 @@ void IGisProject::markAsSaved()
 
 QString IGisProject::getInfo()
 {
-    QString str = metadata.name.isEmpty() ? text(0) : metadata.name;
+    QString str = metadata.name.isEmpty() ? text(0) : metadata.name;    
+    str = "<div style='font-weight: bold;'>" + str + "</div>";
 
     if(metadata.time.isValid())
     {
-        str += "\n";
+        str += "<br/>\n";
         str += IUnit::datetime2string(metadata.time, false);
     }
 
 
-    if(!metadata.desc.isEmpty())
+    QString desc = IGisItem::removeHtml(metadata.desc).simplified();
+    if(!desc.isEmpty())
     {
-        str += "\n";
+        str += "<br/>\n";
 
-        if(metadata.desc.count() < 200)
+        if(desc.count() < 100)
         {
-            str += metadata.desc;
+            str += desc;
         }
         else
         {
-            str += metadata.desc.left(197) + "...";
+            str += desc.left(97) + "...";
         }
     }
 
-    str += QObject::tr("\nFilename: %1").arg(filename);
+    if(!filename.isEmpty())
+    {
+        str += QObject::tr("<br/>\nFilename: %1").arg(filename);
+    }
 
     // count number of items by type
     int counter[IGisItem::eTypeMax] = {0};
@@ -171,19 +177,19 @@ QString IGisProject::getInfo()
     }
     if(counter[IGisItem::eTypeWpt])
     {
-        str += "\n" + QObject::tr("Waypoints: %1").arg(counter[IGisItem::eTypeWpt]);
+        str += "<br/>\n" + QObject::tr("Waypoints: %1").arg(counter[IGisItem::eTypeWpt]);
     }
     if(counter[IGisItem::eTypeTrk])
     {
-        str += "\n" + QObject::tr("Tracks: %1").arg(counter[IGisItem::eTypeTrk]);
+        str += "<br/>\n" + QObject::tr("Tracks: %1").arg(counter[IGisItem::eTypeTrk]);
     }
     if(counter[IGisItem::eTypeRte])
     {
-        str += "\n" + QObject::tr("Routes: %1").arg(counter[IGisItem::eTypeRte]);
+        str += "<br/>\n" + QObject::tr("Routes: %1").arg(counter[IGisItem::eTypeRte]);
     }
     if(counter[IGisItem::eTypeOvl])
     {
-        str += "\n" + QObject::tr("Areas: %1").arg(counter[IGisItem::eTypeOvl]);
+        str += "<br/>\n" + QObject::tr("Areas: %1").arg(counter[IGisItem::eTypeOvl]);
     }
 
     return str;
@@ -227,9 +233,8 @@ void IGisProject::getItemByPos(const QPointF& pos, QList<IGisItem *> &items)
 }
 
 
-void IGisProject::delItemByKey(const IGisItem::key_t& key, QMessageBox::StandardButtons& last)
+bool IGisProject::delItemByKey(const IGisItem::key_t& key, QMessageBox::StandardButtons& last)
 {
-    QList<QTreeWidgetItem*> items;
     for(int i = childCount(); i > 0; i--)
     {
         IGisItem * item = dynamic_cast<IGisItem*>(child(i-1));
@@ -246,14 +251,26 @@ void IGisProject::delItemByKey(const IGisItem::key_t& key, QMessageBox::Standard
                 last = QMessageBox::question(0, QObject::tr("Delete..."), msg, QMessageBox::YesToAll|QMessageBox::Cancel|QMessageBox::Ok|QMessageBox::No, QMessageBox::Ok);
                 if((last == QMessageBox::No) || (last == QMessageBox::Cancel))
                 {
-                    continue;
+                    // as each item in the project has to be unique, we can stop searching.
+                    return false;
                 }
             }
-            items << takeChild(i-1);
-            setText(1,"*");
+            delete item;
+
+            /*
+                Database projects are a bit different. Deleteing an item does not really
+                mean the project is changed as the item is still stored in the database.
+            */
+            if(type != eTypeDb)
+            {
+                changed();
+            }
+
+            // as each item in the project has to be unique, we can stop searching.
+            return true;
         }
     }
-    qDeleteAll(items);
+    return false;
 }
 
 void IGisProject::editItemByKey(const IGisItem::key_t& key)
diff --git a/src/gis/prj/IGisProject.h b/src/gis/prj/IGisProject.h
index 21910f7..124e681 100644
--- a/src/gis/prj/IGisProject.h
+++ b/src/gis/prj/IGisProject.h
@@ -58,6 +58,7 @@ class IGisProject : public QTreeWidgetItem
 
         struct metadata_t
         {
+            metadata_t() : time(QDateTime::currentDateTimeUtc()){}
             QString name;
             QString desc;
             person_t author;
@@ -127,7 +128,7 @@ class IGisProject : public QTreeWidgetItem
            @brief Delete items with matching key
            @param key
         */
-        void delItemByKey(const IGisItem::key_t &key, QMessageBox::StandardButtons &last);
+        bool delItemByKey(const IGisItem::key_t &key, QMessageBox::StandardButtons &last);
 
         /**
            @brief Call IGisItem::edit() method for items with given key
diff --git a/src/gis/qms/CQmsProject.cpp b/src/gis/qms/CQmsProject.cpp
index 0e7b930..be24004 100644
--- a/src/gis/qms/CQmsProject.cpp
+++ b/src/gis/qms/CQmsProject.cpp
@@ -142,7 +142,7 @@ void CQmsProject::saveAs(const QString& fn, IGisProject& project)
     QString tmp = project.getFilename();
     project.setFilename(_fn_);
 
-    project >> out;
+    project.IGisProject::operator>>(out);
 
     project.setFilename(tmp);
 
diff --git a/src/gis/qms/serialization.cpp b/src/gis/qms/serialization.cpp
index 34a03ce..3e1bd29 100644
--- a/src/gis/qms/serialization.cpp
+++ b/src/gis/qms/serialization.cpp
@@ -17,6 +17,7 @@
 **********************************************************************************************/
 
 #include "gis/prj/IGisProject.h"
+#include "gis/db/CDBProject.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
 #include "gis/rte/CGisItemRte.h"
@@ -31,11 +32,12 @@
 #define VER_LINK        quint8(1)
 #define VER_TRKSEG      quint8(1)
 #define VER_TRKPT       quint8(1)
+#define VER_RTEPT       quint8(1)
 #define VER_WPT_T       quint8(1)
 #define VER_GC_T        quint8(1)
 #define VER_GCLOG_T     quint8(1)
 #define VER_IMAGE       quint8(1)
-#define VER_PROJECT     quint8(1)
+#define VER_PROJECT     quint8(2)
 #define VER_COPYRIGHT   quint8(1)
 #define VER_PERSON      quint8(1)
 #define VER_HIST        quint8(1)
@@ -322,6 +324,22 @@ QDataStream& operator>>(QDataStream& stream, CGisItemTrk::trkpt_t& pt)
     return stream;
 }
 
+QDataStream& operator<<(QDataStream& stream, const CGisItemRte::rtept_t& pt)
+{
+    stream << VER_RTEPT << pt.focus << pt.icon;
+    stream << (const IGisItem::wpt_t&)pt;
+    return stream;
+}
+
+QDataStream& operator>>(QDataStream& stream, CGisItemRte::rtept_t& pt)
+{
+    quint8 version;
+    stream >> version >> pt.focus >> pt.icon;
+    stream >> (IGisItem::wpt_t&)pt;
+    return stream;
+}
+
+
 QDataStream& operator<<(QDataStream& stream, const IGisProject::copyright_t& c)
 {
     stream << VER_COPYRIGHT << c.author << c.year << c.license;
@@ -483,12 +501,70 @@ QDataStream& CGisItemWpt::operator>>(QDataStream& stream)
 
 QDataStream& CGisItemRte::operator<<(QDataStream& stream)
 {
+    quint8      version;
+    QByteArray  buffer;
+    QIODevice * dev = stream.device();
+    qint64      pos = dev->pos();
+
+    char magic[10];
+    stream.readRawData(magic,MAGIC_SIZE);
+
+    if(strncmp(magic,MAGIC_RTE,MAGIC_SIZE))
+    {
+        dev->seek(pos);
+        return stream;
+    }
+
+    stream >> version;
+    stream >> buffer;
+    buffer = qUncompress(buffer);
+
+    QDataStream in(&buffer, QIODevice::ReadOnly);
+    in.setByteOrder(QDataStream::LittleEndian);
+    in.setVersion(QDataStream::Qt_5_2);
+
+    in >> key.item;
+    in >> flags;
+    in >> rte.name;
+    in >> rte.cmt;
+    in >> rte.desc;
+    in >> rte.src;
+    in >> rte.links;
+    in >> rte.number;
+    in >> rte.type;
+    in >> rte.pts;
+
+    setSymbol();
+    deriveSecondaryData();
+    setText(0, rte.name);
+    setToolTip(0, getInfo());
+
     return stream;
 }
 
 QDataStream& CGisItemRte::operator>>(QDataStream& stream)
 {
 
+    QByteArray  buffer;
+    QDataStream out(&buffer, QIODevice::WriteOnly);
+    out.setByteOrder(QDataStream::LittleEndian);
+    out.setVersion(QDataStream::Qt_5_2);
+
+    out << key.item;
+    out << flags;
+    out << rte.name;
+    out << rte.cmt;
+    out << rte.desc;
+    out << rte.src;
+    out << rte.links;
+    out << rte.number;
+    out << rte.type;
+    out << rte.pts;
+
+    stream.writeRawData(MAGIC_RTE, MAGIC_SIZE);
+    stream << VER_RTE;
+    stream << qCompress(buffer,9);
+
     return stream;
 }
 
@@ -595,6 +671,10 @@ QDataStream& IGisProject::operator<<(QDataStream& stream)
     stream >> metadata.time;
     stream >> metadata.keywords;
     stream >> metadata.bounds;
+    if(version > 1)
+    {
+        stream >> key;
+    }
 
     while(!stream.atEnd())
     {
@@ -648,7 +728,8 @@ QDataStream& IGisProject::operator>>(QDataStream& stream)
     stream << metadata.links;
     stream << metadata.time;
     stream << metadata.keywords;
-    stream << metadata.bounds;
+    stream << metadata.bounds;    
+    stream << key;
 
     for(int i = 0; i < childCount(); i++)
     {
@@ -702,3 +783,54 @@ QDataStream& IGisProject::operator>>(QDataStream& stream)
     return stream;
 }
 
+QDataStream& CDBProject::operator<<(QDataStream& stream)
+{
+    quint8      version;
+    QIODevice * dev = stream.device();
+    qint64      pos = dev->pos();
+
+    char magic[10];
+    stream.readRawData(magic,MAGIC_SIZE);
+
+    if(strncmp(magic,MAGIC_PROJ,MAGIC_SIZE))
+    {
+        dev->seek(pos);
+        return stream;
+    }
+
+    stream >> version;
+    stream >> filename;
+    stream >> metadata.name;
+    stream >> metadata.desc;
+    stream >> metadata.author;
+    stream >> metadata.copyright;
+    stream >> metadata.links;
+    stream >> metadata.time;
+    stream >> metadata.keywords;
+    stream >> metadata.bounds;
+    if(version > 1)
+    {
+        stream >> key;
+    }
+
+    return stream;
+}
+
+QDataStream& CDBProject::operator>>(QDataStream& stream)
+{    
+    stream.writeRawData(MAGIC_PROJ, MAGIC_SIZE);
+    stream << VER_PROJECT;
+
+    stream << filename;
+    stream << metadata.name;
+    stream << metadata.desc;
+    stream << metadata.author;
+    stream << metadata.copyright;
+    stream << metadata.links;
+    stream << metadata.time;
+    stream << metadata.keywords;
+    stream << metadata.bounds;
+    stream << key;
+
+    return stream;
+}
diff --git a/src/gis/rte/CGisItemRte.cpp b/src/gis/rte/CGisItemRte.cpp
index 2fb2930..eea29cd 100644
--- a/src/gis/rte/CGisItemRte.cpp
+++ b/src/gis/rte/CGisItemRte.cpp
@@ -36,7 +36,7 @@ CGisItemRte::CGisItemRte(const CGisItemRte& parentRte, IGisProject * project, in
     , penForeground(Qt::magenta, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
 {
     *this = parentRte;
-
+    key.project = project->getKey();
     setupHistory();
     updateDecoration(eMarkChanged, eMarkNone);
 }
@@ -52,6 +52,7 @@ CGisItemRte::CGisItemRte(const QDomNode& xml, IGisProject *parent)
 
     genKey();
     setupHistory();
+    deriveSecondaryData();
     updateDecoration(eMarkNone, eMarkNone);
 }
 
@@ -59,17 +60,42 @@ CGisItemRte::CGisItemRte(const history_t& hist, IGisProject * project)
     : IGisItem(project, eTypeRte, project->childCount())
     , penForeground(Qt::magenta, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
 {
-    history = hist;
+    history = hist;    
     loadHistory(hist.histIdxCurrent);
+    deriveSecondaryData();
 }
 
-
+CGisItemRte::CGisItemRte(quint64 id, QSqlDatabase& db, IGisProject * project)
+    : IGisItem(project, eTypeRte, -1)
+    , penForeground(Qt::magenta, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
+{
+    loadFromDb(id, db);    
+}
 
 CGisItemRte::~CGisItemRte()
 {
 
 }
 
+void CGisItemRte::deriveSecondaryData()
+{
+    qreal north = -90;
+    qreal east  = -180;
+    qreal south =  90;
+    qreal west  =  180;
+
+    foreach(const rtept_t& rtept, rte.pts)
+    {
+        if(rtept.lon < west)  west    = rtept.lon;
+        if(rtept.lon > east)  east    = rtept.lon;
+        if(rtept.lat < south) south   = rtept.lat;
+        if(rtept.lat > north) north   = rtept.lat;
+    }
+
+    boundingRect = QRectF(QPointF(west * DEG_TO_RAD, north * DEG_TO_RAD), QPointF(east * DEG_TO_RAD,south * DEG_TO_RAD));
+
+}
+
 void CGisItemRte::setSymbol()
 {
     icon = QPixmap("://icons/32x32/Route.png").scaled(22,22, Qt::KeepAspectRatio, Qt::SmoothTransformation);
diff --git a/src/gis/rte/CGisItemRte.h b/src/gis/rte/CGisItemRte.h
index 1c47b56..7b2784e 100644
--- a/src/gis/rte/CGisItemRte.h
+++ b/src/gis/rte/CGisItemRte.h
@@ -26,13 +26,22 @@
 
 class QDomNode;
 class IGisProject;
+class CQlgtRoute;
 
 class CGisItemRte : public IGisItem, public IGisLine
 {
     public:
+        struct rtept_t : public wpt_t
+        {
+            QPixmap icon;
+            QPointF focus;
+        };
+
         CGisItemRte(const QDomNode &xml, IGisProject *parent);
         CGisItemRte(const CGisItemRte& parentRte, IGisProject *project, int idx);
         CGisItemRte(const history_t& hist, IGisProject * project);
+        CGisItemRte(quint64 id, QSqlDatabase& db, IGisProject * project);
+        CGisItemRte(const CQlgtRoute& rte1);
         virtual ~CGisItemRte();
 
         QDataStream& operator<<(QDataStream& stream);
@@ -54,16 +63,12 @@ class CGisItemRte : public IGisItem, public IGisLine
 
     private:
         struct rte_t;
+        void deriveSecondaryData();
         void setSymbol();
         void readRte(const QDomNode& xml, rte_t& rte);
 
         static key_t keyUserFocus;
 
-        struct rtept_t : public wpt_t
-        {
-            QPixmap icon;
-            QPointF focus;
-        };
 
         struct rte_t
         {
diff --git a/src/gis/rte/CScrOptRte.h b/src/gis/rte/CScrOptRte.h
index 43c9286..9683efe 100644
--- a/src/gis/rte/CScrOptRte.h
+++ b/src/gis/rte/CScrOptRte.h
@@ -32,7 +32,7 @@ class CScrOptRte : public IScrOpt, private Ui::IScrOptRte
 {
     Q_OBJECT
     public:
-        CScrOptRte(CGisItemRte * rte, const QPoint &point, IMouse *parent);
+        CScrOptRte(CGisItemRte * rte, const QPoint &point, IMouse *parent);        
         virtual ~CScrOptRte();
 
         void draw(QPainter& p);
diff --git a/src/gis/trk/CGisItemTrk.cpp b/src/gis/trk/CGisItemTrk.cpp
index fb453e4..51ad049 100644
--- a/src/gis/trk/CGisItemTrk.cpp
+++ b/src/gis/trk/CGisItemTrk.cpp
@@ -157,6 +157,7 @@ CGisItemTrk::CGisItemTrk(const CGisItemTrk& parentTrk, IGisProject *project, int
     , mouseClickFocus(0)
 {
     *this = parentTrk;
+    key.project = project->getKey();
 
     setupHistory();
     updateDecoration(eMarkChanged, eMarkNone);
@@ -209,6 +210,15 @@ CGisItemTrk::CGisItemTrk(const history_t& hist, IGisProject * project)
     loadHistory(hist.histIdxCurrent);
 }
 
+CGisItemTrk::CGisItemTrk(quint64 id, QSqlDatabase& db, IGisProject * project)
+    : IGisItem(project, eTypeTrk, -1)
+    , penForeground(Qt::blue, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
+    , drawMode(eDrawNormal)
+    , mouseMoveFocus(0)
+    , mouseClickFocus(0)
+{
+    loadFromDb(id, db);
+}
 
 
 CGisItemTrk::~CGisItemTrk()
@@ -306,14 +316,15 @@ void CGisItemTrk::unregisterPlot(IPlot * plot)
 QString CGisItemTrk::getInfo()
 {
     QString val1, unit1, val2, unit2;
-    QString str = getName();
+    QString str = "<div style='font-weight: bold;'>" + getName() + "</div>";
+
     if(cntVisiblePoints == 0)
     {
         return(str);
     }
 
     IUnit::self().meter2distance(totalDistance, val1, unit1);
-    str += "\n";
+    str += "<br/>\n";
     str += QObject::tr("Length: %1 %2").arg(val1).arg(unit1);
 
     if(totalAscend != NOFLOAT && totalDescend != NOFLOAT)
@@ -328,7 +339,7 @@ QString CGisItemTrk::getInfo()
     if(totalElapsedSeconds != NOTIME)
     {
         IUnit::self().seconds2time(totalElapsedSeconds, val1, unit1);
-        str += "\n";
+        str += "<br/>\n";
         str += QObject::tr("Time: %1").arg(val1);
 
         IUnit::self().meter2speed(totalDistance / totalElapsedSeconds, val1, unit1);
@@ -338,7 +349,7 @@ QString CGisItemTrk::getInfo()
     if(totalElapsedSecondsMoving != NOTIME)
     {
         IUnit::self().seconds2time(totalElapsedSecondsMoving, val1, unit1);
-        str += "\n";
+        str += "<br/>\n";
         str += QObject::tr("Moving: %1").arg(val1);
 
         IUnit::self().meter2speed(totalDistance / totalElapsedSecondsMoving, val1, unit1);
@@ -347,16 +358,16 @@ QString CGisItemTrk::getInfo()
 
     if(timeStart.isValid())
     {
-        str += "\n";
+        str += "<br/>\n";
         str += QObject::tr("Start: %1").arg(IUnit::datetime2string(timeStart, false, boundingRect.center()));
     }
     if(timeEnd.isValid())
     {
-        str += "\n";
+        str += "<br/>\n";
         str += QObject::tr("End: %1").arg(IUnit::datetime2string(timeEnd, false, boundingRect.center()));
     }
 
-    str += "\n";
+    str += "<br/>\n";
     str += QObject::tr("Points: %1 (%2)").arg(cntVisiblePoints).arg(cntTotalPoints);
 
 
diff --git a/src/gis/trk/CGisItemTrk.h b/src/gis/trk/CGisItemTrk.h
index ff797f4..00fdc71 100644
--- a/src/gis/trk/CGisItemTrk.h
+++ b/src/gis/trk/CGisItemTrk.h
@@ -30,6 +30,8 @@ class IGisProject;
 class IPlot;
 class CDetailsTrk;
 class CScrOptTrk;
+class QSqlDatabase;
+class CQlgtTrack;
 
 #define TRK_N_COLORS 17
 
@@ -56,6 +58,8 @@ class CGisItemTrk : public IGisItem, public IGisLine
         CGisItemTrk(const QPolygonF& l, const QString &name, IGisProject *project, int idx);
         CGisItemTrk(const QDomNode &xml, IGisProject *project);
         CGisItemTrk(const history_t& hist, IGisProject * project);
+        CGisItemTrk(quint64 id, QSqlDatabase& db, IGisProject * project);
+        CGisItemTrk(const CQlgtTrack& trk1);
         virtual ~CGisItemTrk();
 
         QDataStream& operator<<(QDataStream& stream);
diff --git a/src/gis/trk/IScrOptTrk.ui b/src/gis/trk/IScrOptTrk.ui
index 8bb6506..76735f8 100644
--- a/src/gis/trk/IScrOptTrk.ui
+++ b/src/gis/trk/IScrOptTrk.ui
@@ -88,6 +88,9 @@
      </item>
      <item>
       <widget class="QToolButton" name="toolRange">
+       <property name="toolTip">
+        <string>Select a range of points.</string>
+       </property>
        <property name="text">
         <string>...</string>
        </property>
@@ -173,9 +176,6 @@
      <property name="text">
       <string>TextLabel</string>
      </property>
-     <property name="textFormat">
-      <enum>Qt::AutoText</enum>
-     </property>
     </widget>
    </item>
   </layout>
diff --git a/src/gis/wpt/CGisItemWpt.cpp b/src/gis/wpt/CGisItemWpt.cpp
index 8cca197..fa2d37d 100644
--- a/src/gis/wpt/CGisItemWpt.cpp
+++ b/src/gis/wpt/CGisItemWpt.cpp
@@ -33,6 +33,7 @@
 #include "CMainWindow.h"
 
 
+
 #include <QtWidgets>
 #include <QtXml>
 
@@ -95,6 +96,7 @@ CGisItemWpt::CGisItemWpt(const CGisItemWpt &parentWpt, IGisProject *project, int
     , posScreen(NOPOINTF)
 {
     *this = parentWpt;
+    key.project = project->getKey();
 
     setupHistory();
     updateDecoration(eMarkChanged, eMarkNone);
@@ -124,6 +126,14 @@ CGisItemWpt::CGisItemWpt(const history_t& hist, IGisProject * project)
     boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);    
 }
 
+CGisItemWpt::CGisItemWpt(quint64 id, QSqlDatabase& db, IGisProject * project)
+    : IGisItem(project, eTypeWpt, -1)
+    , proximity(NOFLOAT)
+    , posScreen(NOPOINTF)
+{
+    loadFromDb(id, db);
+    boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);
+}
 
 CGisItemWpt::~CGisItemWpt()
 {
@@ -187,7 +197,7 @@ void CGisItemWpt::getNewPosition(QPointF& pos)
 
 QString CGisItemWpt::getInfo()
 {
-    QString str = "<div>" + getName() + "</div>";
+    QString str = "<div style='font-weight: bold;'>" + getName() + "</div>";
 
     if(geocache.hasData)
     {
diff --git a/src/gis/wpt/CGisItemWpt.h b/src/gis/wpt/CGisItemWpt.h
index 2bdcd62..c489b0a 100644
--- a/src/gis/wpt/CGisItemWpt.h
+++ b/src/gis/wpt/CGisItemWpt.h
@@ -26,7 +26,8 @@
 class IGisProject;
 class QDomNode;
 class CScrOptWpt;
-
+class QSqlDatabase;
+class CQlgtWpt;
 
 class CGisItemWpt : public IGisItem
 {
@@ -116,6 +117,17 @@ class CGisItemWpt : public IGisItem
            @param project   the project to append with item
         */
         CGisItemWpt(const history_t& hist, IGisProject * project);
+
+        /**
+           @brief Read item from database by it's database ID
+           @param id        the item's ID in the database
+           @param db        the database itself
+           @param project   the project to append with item
+        */
+        CGisItemWpt(quint64 id, QSqlDatabase& db, IGisProject * project);
+
+        CGisItemWpt(const CQlgtWpt& wpt1);
+
         virtual ~CGisItemWpt();
 
         void save(QDomNode& gpx);
diff --git a/src/gis/wpt/CScrOptWpt.cpp b/src/gis/wpt/CScrOptWpt.cpp
index c9687ec..125750c 100644
--- a/src/gis/wpt/CScrOptWpt.cpp
+++ b/src/gis/wpt/CScrOptWpt.cpp
@@ -35,7 +35,7 @@ CScrOptWpt::CScrOptWpt(CGisItemWpt *wpt, const QPoint& point, IMouse *parent)
     setupUi(this);
     setOrigin(point);
     label->setFont(CMainWindow::self().getMapFont());
-    label->setText(IGisItem::removeHtml(wpt->getInfo()));
+    label->setText(wpt->getInfo());
     adjustSize();
 
     toolMove->setEnabled(!wpt->isReadOnly());
diff --git a/src/gis/wpt/IDetailsWpt.ui b/src/gis/wpt/IDetailsWpt.ui
index 07261e5..2e838f8 100644
--- a/src/gis/wpt/IDetailsWpt.ui
+++ b/src/gis/wpt/IDetailsWpt.ui
@@ -79,6 +79,13 @@
       <layout class="QHBoxLayout" name="horizontalLayout">
        <item>
         <widget class="QLabel" name="labelName">
+         <property name="font">
+          <font>
+           <pointsize>15</pointsize>
+           <weight>75</weight>
+           <bold>true</bold>
+          </font>
+         </property>
          <property name="text">
           <string>-</string>
          </property>
diff --git a/src/gis/wpt/IProjWpt.ui b/src/gis/wpt/IProjWpt.ui
index 0d4c659..7c1954d 100644
--- a/src/gis/wpt/IProjWpt.ui
+++ b/src/gis/wpt/IProjWpt.ui
@@ -34,6 +34,13 @@
      </item>
      <item>
       <widget class="QLabel" name="labelName">
+       <property name="font">
+        <font>
+         <pointsize>15</pointsize>
+         <weight>75</weight>
+         <bold>true</bold>
+        </font>
+       </property>
        <property name="text">
         <string>-</string>
        </property>
diff --git a/src/gis/wpt/IScrOptWpt.ui b/src/gis/wpt/IScrOptWpt.ui
index 925d014..750e5e3 100644
--- a/src/gis/wpt/IScrOptWpt.ui
+++ b/src/gis/wpt/IScrOptWpt.ui
@@ -144,9 +144,6 @@
      <property name="text">
       <string>TextLabel</string>
      </property>
-     <property name="textFormat">
-      <enum>Qt::PlainText</enum>
-     </property>
      <property name="wordWrap">
       <bool>true</bool>
      </property>
diff --git a/src/helpers/CAppOpts.h b/src/helpers/CAppOpts.h
index 77c80a0..2dd302b 100644
--- a/src/helpers/CAppOpts.h
+++ b/src/helpers/CAppOpts.h
@@ -22,6 +22,8 @@
  * including the positional arguments.
  */
 
+#include <QStringList>
+
 class CAppOpts
 {
     public:
diff --git a/src/helpers/CSettings.h b/src/helpers/CSettings.h
index 3223e2f..f34aa21 100644
--- a/src/helpers/CSettings.h
+++ b/src/helpers/CSettings.h
@@ -18,7 +18,7 @@
 #ifndef CSETTINGS_H
 #define CSETTINGS_H
 
-#include "CAppOpts.h"
+#include "helpers/CAppOpts.h"
 #include <QtCore>
 
 class CSettings : public QObject
diff --git a/src/icons/32x32/DatabaseConvert.png b/src/icons/32x32/DatabaseConvert.png
new file mode 100644
index 0000000..3108251
Binary files /dev/null and b/src/icons/32x32/DatabaseConvert.png differ
diff --git a/src/icons/32x32/Empty.png b/src/icons/32x32/Empty.png
new file mode 100644
index 0000000..6bc96b0
Binary files /dev/null and b/src/icons/32x32/Empty.png differ
diff --git a/src/icons/32x32/MimeDemVRT.png b/src/icons/32x32/MimeDemVRT.png
index 167b573..861b66d 100644
Binary files a/src/icons/32x32/MimeDemVRT.png and b/src/icons/32x32/MimeDemVRT.png differ
diff --git a/src/icons/32x32/MimeIMG.png b/src/icons/32x32/MimeIMG.png
index a9a562c..cc90d24 100644
Binary files a/src/icons/32x32/MimeIMG.png and b/src/icons/32x32/MimeIMG.png differ
diff --git a/src/icons/32x32/MimeJNX.png b/src/icons/32x32/MimeJNX.png
index abc2ba1..6bd3186 100644
Binary files a/src/icons/32x32/MimeJNX.png and b/src/icons/32x32/MimeJNX.png differ
diff --git a/src/icons/32x32/MimeMAP.png b/src/icons/32x32/MimeMAP.png
index 5d914fb..4fb238c 100644
Binary files a/src/icons/32x32/MimeMAP.png and b/src/icons/32x32/MimeMAP.png differ
diff --git a/src/icons/32x32/MimeRMAP.png b/src/icons/32x32/MimeRMAP.png
index fc0dd35..6bf0a5e 100644
Binary files a/src/icons/32x32/MimeRMAP.png and b/src/icons/32x32/MimeRMAP.png differ
diff --git a/src/icons/32x32/MimeTMS.png b/src/icons/32x32/MimeTMS.png
index 24743b1..fd4d246 100644
Binary files a/src/icons/32x32/MimeTMS.png and b/src/icons/32x32/MimeTMS.png differ
diff --git a/src/icons/32x32/MimeVRT.png b/src/icons/32x32/MimeVRT.png
index 7244776..062c2b5 100644
Binary files a/src/icons/32x32/MimeVRT.png and b/src/icons/32x32/MimeVRT.png differ
diff --git a/src/icons/32x32/MimeWMTS.png b/src/icons/32x32/MimeWMTS.png
index 6307afb..da98e6e 100644
Binary files a/src/icons/32x32/MimeWMTS.png and b/src/icons/32x32/MimeWMTS.png differ
diff --git a/src/icons/32x32/SearchGoogle.png b/src/icons/32x32/SearchGoogle.png
index 6828b0e..5346221 100644
Binary files a/src/icons/32x32/SearchGoogle.png and b/src/icons/32x32/SearchGoogle.png differ
diff --git a/src/icons/48x48/DatabaseConvert.png b/src/icons/48x48/DatabaseConvert.png
new file mode 100644
index 0000000..215ece1
Binary files /dev/null and b/src/icons/48x48/DatabaseConvert.png differ
diff --git a/src/icons/48x48/Empty.png b/src/icons/48x48/Empty.png
new file mode 100644
index 0000000..50bc1cd
Binary files /dev/null and b/src/icons/48x48/Empty.png differ
diff --git a/src/icons/48x48/MimeDemVRT.png b/src/icons/48x48/MimeDemVRT.png
index fd9ba85..ef225ba 100644
Binary files a/src/icons/48x48/MimeDemVRT.png and b/src/icons/48x48/MimeDemVRT.png differ
diff --git a/src/icons/48x48/MimeIMG.png b/src/icons/48x48/MimeIMG.png
index fd13917..3c41eff 100644
Binary files a/src/icons/48x48/MimeIMG.png and b/src/icons/48x48/MimeIMG.png differ
diff --git a/src/icons/48x48/MimeJNX.png b/src/icons/48x48/MimeJNX.png
index 77a7b0d..a1bcb26 100644
Binary files a/src/icons/48x48/MimeJNX.png and b/src/icons/48x48/MimeJNX.png differ
diff --git a/src/icons/48x48/MimeMAP.png b/src/icons/48x48/MimeMAP.png
index 6df528f..978c799 100644
Binary files a/src/icons/48x48/MimeMAP.png and b/src/icons/48x48/MimeMAP.png differ
diff --git a/src/icons/48x48/MimeRMAP.png b/src/icons/48x48/MimeRMAP.png
index 8e2d8d4..732cf3a 100644
Binary files a/src/icons/48x48/MimeRMAP.png and b/src/icons/48x48/MimeRMAP.png differ
diff --git a/src/icons/48x48/MimeTMS.png b/src/icons/48x48/MimeTMS.png
index 987603f..ab8f954 100644
Binary files a/src/icons/48x48/MimeTMS.png and b/src/icons/48x48/MimeTMS.png differ
diff --git a/src/icons/48x48/MimeVRT.png b/src/icons/48x48/MimeVRT.png
index 7638dee..2e2edd1 100644
Binary files a/src/icons/48x48/MimeVRT.png and b/src/icons/48x48/MimeVRT.png differ
diff --git a/src/icons/48x48/MimeWMTS.png b/src/icons/48x48/MimeWMTS.png
index b814110..0c600ac 100644
Binary files a/src/icons/48x48/MimeWMTS.png and b/src/icons/48x48/MimeWMTS.png differ
diff --git a/src/icons/48x48/SearchGoogle.png b/src/icons/48x48/SearchGoogle.png
index f423f75..4dff3ad 100644
Binary files a/src/icons/48x48/SearchGoogle.png and b/src/icons/48x48/SearchGoogle.png differ
diff --git a/src/icons/DatabaseConvert.svg b/src/icons/DatabaseConvert.svg
new file mode 100644
index 0000000..ae435b7
--- /dev/null
+++ b/src/icons/DatabaseConvert.svg
@@ -0,0 +1,260 @@
+<?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="DatabaseConvert.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="7.229447"
+     inkscape:cx="-3.950756"
+     inkscape:cy="18.171979"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="996"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1">
+    <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="g3856"
+       transform="matrix(0.46904962,0,0,0.9609277,1.7607232,983.43049)"
+       style="stroke-width:3.38945651;stroke-miterlimit:4;stroke-dasharray:none">
+      <path
+         transform="matrix(0.97628959,0,0,0.90577639,0.75264714,41.745822)"
+         sodipodi:open="true"
+         sodipodi:end="12.08609"
+         sodipodi:start="5.8033439"
+         d="m 47.741363,16.691808 c 5.099118,2.449571 1.289691,5.468753 -8.508593,6.743533 -9.798284,1.274779 -21.875015,0.322423 -26.974133,-2.127149 -5.099118,-2.449571 -1.289691,-5.468753 8.508593,-6.743533 9.795241,-1.274383 21.86824,-0.32305 26.970076,2.125201"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-6"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:3.60437727;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+         sodipodi:type="arc" />
+      <rect
+         y="18.943857"
+         x="10.056155"
+         height="40"
+         width="40"
+         id="rect3032"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+      <path
+         transform="matrix(0.97628959,0,0,0.90577639,0.75264717,1.7458229)"
+         sodipodi:open="true"
+         sodipodi:end="12.08609"
+         sodipodi:start="5.8033439"
+         d="m 47.741363,16.691808 c 5.099118,2.449571 1.289691,5.468753 -8.508593,6.743533 -9.798284,1.274779 -21.875015,0.322423 -26.974133,-2.127149 -5.099118,-2.449571 -1.289691,-5.468753 8.508593,-6.743533 9.795241,-1.274383 21.86824,-0.32305 26.970076,2.125201"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:3.60437727;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:open="true"
+         transform="matrix(0.9793945,0,0,0.87054856,0.71290745,12.690707)"
+         sodipodi:end="3.0635271"
+         sodipodi:start="0.063511676"
+         d="M 49.959676,19.317345 C 49.258617,22.073201 39.754045,24.165184 28.73062,23.989919 18.795256,23.831954 10.837299,21.871211 10.060911,19.389931"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-0"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:3.67074943;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:open="true"
+         transform="matrix(0.9793945,0,0,0.87054856,0.6219979,22.236163)"
+         sodipodi:end="3.0635271"
+         sodipodi:start="0.063511676"
+         d="M 49.959676,19.317345 C 49.258617,22.073201 39.754045,24.165184 28.73062,23.989919 18.795256,23.831954 10.837299,21.871211 10.060911,19.389931"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-0-2"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:3.67074943;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:open="true"
+         transform="matrix(0.9793945,0,0,0.87054856,0.71290699,32.327076)"
+         sodipodi:end="3.0635271"
+         sodipodi:start="0.063511676"
+         d="M 49.959676,19.317345 C 49.258617,22.073201 39.754045,24.165184 28.73062,23.989919 18.795256,23.831954 10.837299,21.871211 10.060911,19.389931"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-0-1"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:3.67074943;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+         sodipodi:type="arc" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3084"
+         d="m 10.454545,19 0,40"
+         style="fill:#ffffff;stroke:#000080;stroke-width:3.38945651;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3086"
+         d="m 49.545455,19 0,40"
+         style="fill:#ffffff;stroke:#000080;stroke-width:3.38945651;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+    <rect
+       style="fill:none;stroke:none"
+       id="rect2997"
+       width="50"
+       height="50"
+       x="8.237051"
+       y="995.86395" />
+    <g
+       id="g3856-5"
+       transform="matrix(0.46904962,0,0,0.9609277,40.0963,983.43049)"
+       style="stroke-width:3.38945651;stroke-miterlimit:4;stroke-dasharray:none">
+      <path
+         transform="matrix(0.97628959,0,0,0.90577639,0.75264714,41.745822)"
+         sodipodi:open="true"
+         sodipodi:end="12.08609"
+         sodipodi:start="5.8033439"
+         d="m 47.741363,16.691808 c 5.099118,2.449571 1.289691,5.468753 -8.508593,6.743533 -9.798284,1.274779 -21.875015,0.322423 -26.974133,-2.127149 -5.099118,-2.449571 -1.289691,-5.468753 8.508593,-6.743533 9.795241,-1.274383 21.86824,-0.32305 26.970076,2.125201"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-6-0"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:3.60437727;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+         sodipodi:type="arc" />
+      <rect
+         y="18.943857"
+         x="10.056155"
+         height="40"
+         width="40"
+         id="rect3032-4"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+      <path
+         transform="matrix(0.97628959,0,0,0.90577639,0.75264717,1.7458229)"
+         sodipodi:open="true"
+         sodipodi:end="12.08609"
+         sodipodi:start="5.8033439"
+         d="m 47.741363,16.691808 c 5.099118,2.449571 1.289691,5.468753 -8.508593,6.743533 -9.798284,1.274779 -21.875015,0.322423 -26.974133,-2.127149 -5.099118,-2.449571 -1.289691,-5.468753 8.508593,-6.743533 9.795241,-1.274383 21.86824,-0.32305 26.970076,2.125201"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-8"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:3.60437727;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:open="true"
+         transform="matrix(0.9793945,0,0,0.87054856,0.71290745,12.690707)"
+         sodipodi:end="3.0635271"
+         sodipodi:start="0.063511676"
+         d="M 49.959676,19.317345 C 49.258617,22.073201 39.754045,24.165184 28.73062,23.989919 18.795256,23.831954 10.837299,21.871211 10.060911,19.389931"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-0-25"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:3.67074943;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:open="true"
+         transform="matrix(0.9793945,0,0,0.87054856,0.6219979,22.236163)"
+         sodipodi:end="3.0635271"
+         sodipodi:start="0.063511676"
+         d="M 49.959676,19.317345 C 49.258617,22.073201 39.754045,24.165184 28.73062,23.989919 18.795256,23.831954 10.837299,21.871211 10.060911,19.389931"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-0-2-6"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:3.67074943;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:open="true"
+         transform="matrix(0.9793945,0,0,0.87054856,0.71290699,32.327076)"
+         sodipodi:end="3.0635271"
+         sodipodi:start="0.063511676"
+         d="M 49.959676,19.317345 C 49.258617,22.073201 39.754045,24.165184 28.73062,23.989919 18.795256,23.831954 10.837299,21.871211 10.060911,19.389931"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-0-1-1"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:3.67074943;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+         sodipodi:type="arc" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3084-9"
+         d="m 10.454545,19 0,40"
+         style="fill:#ffffff;stroke:#000080;stroke-width:3.38945651;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3086-8"
+         d="m 49.545455,19 0,40"
+         style="fill:#ffffff;stroke:#000080;stroke-width:3.38945651;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+    <path
+       style="fill:#000080;stroke:#000080;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+       d="m 30,1000.864 10,20 -10,20 z"
+       id="path3058"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/src/icons/Empty.svg b/src/icons/Empty.svg
new file mode 100644
index 0000000..efae6c2
--- /dev/null
+++ b/src/icons/Empty.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg3513"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="Empty.svg">
+  <defs
+     id="defs3515" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.5"
+     inkscape:cx="32"
+     inkscape:cy="32"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="992"
+     inkscape:window-x="-4"
+     inkscape:window-y="-1"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3518">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       id="g2987">
+      <rect
+         transform="matrix(0.83908132,-0.54400601,0.60317551,0.79760849,0,0)"
+         ry="3.2324563e-06"
+         y="33.374287"
+         x="5.9158211"
+         height="14.389285"
+         width="11.079326"
+         id="rect4004-6"
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.02867186000000022;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3971-4"
+         d="m 20.80275,23.37145 7.57353,28.01102 18.91716,0 7.54018,-28.01102 -34.03087,0 z"
+         style="fill:#000080;stroke:#000000;stroke-width:0.9686141px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/src/icons/MimeDemVRT.svg b/src/icons/MimeDemVRT.svg
index 12c83df..7423e6d 100644
--- a/src/icons/MimeDemVRT.svg
+++ b/src/icons/MimeDemVRT.svg
@@ -13,8 +13,8 @@
    height="64px"
    id="svg3016"
    version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="Neues Dokument 2">
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="MimeDemVRT.svg">
   <defs
      id="defs3018" />
   <sodipodi:namedview
@@ -32,9 +32,9 @@
      inkscape:document-units="px"
      inkscape:grid-bbox="true"
      inkscape:window-width="1920"
-     inkscape:window-height="996"
-     inkscape:window-x="-2"
-     inkscape:window-y="-3"
+     inkscape:window-height="992"
+     inkscape:window-x="-4"
+     inkscape:window-y="-1"
      inkscape:window-maximized="1" />
   <metadata
      id="metadata3021">
@@ -44,7 +44,7 @@
         <dc:format>image/svg+xml</dc:format>
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
+        <dc:title />
       </cc:Work>
     </rdf:RDF>
   </metadata>
@@ -53,14 +53,14 @@
      inkscape:label="Layer 1"
      inkscape:groupmode="layer">
     <g
-       id="g3147">
+       id="g3106">
       <rect
          y="8.3147955"
          x="8.3440924"
          height="33.188591"
          width="33.129997"
          id="rect3167-8-3"
-         style="fill:none;stroke:#806600;stroke-width:1.87165701;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+         style="fill:#ffffff;stroke:#806600;stroke-width:1.87165701000000007;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
       <rect
          ry="1.5290817e-06"
          y="31.437569"
diff --git a/src/icons/MimeIMG.svg b/src/icons/MimeIMG.svg
index 31bafe7..99e5e38 100644
--- a/src/icons/MimeIMG.svg
+++ b/src/icons/MimeIMG.svg
@@ -13,8 +13,8 @@
    height="64px"
    id="svg3354"
    version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="New document 1">
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="MimeIMG.svg">
   <defs
      id="defs3356" />
   <sodipodi:namedview
@@ -31,11 +31,11 @@
      showgrid="true"
      inkscape:document-units="px"
      inkscape:grid-bbox="true"
-     inkscape:window-width="550"
-     inkscape:window-height="421"
-     inkscape:window-x="-2"
-     inkscape:window-y="0"
-     inkscape:window-maximized="0" />
+     inkscape:window-width="1920"
+     inkscape:window-height="992"
+     inkscape:window-x="-4"
+     inkscape:window-y="-1"
+     inkscape:window-maximized="1" />
   <metadata
      id="metadata3359">
     <rdf:RDF>
@@ -44,7 +44,7 @@
         <dc:format>image/svg+xml</dc:format>
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
+        <dc:title />
       </cc:Work>
     </rdf:RDF>
   </metadata>
@@ -53,27 +53,23 @@
      inkscape:label="Layer 1"
      inkscape:groupmode="layer">
     <g
-       transform="translate(-123.45625,-208.97839)"
-       id="g3384"
-       inkscape:export-filename="/home/oeichler/Code/cpp/MapRoom/src/icons/16x16/mime_img.png"
-       inkscape:export-xdpi="41.105904"
-       inkscape:export-ydpi="41.105904">
+       id="g3134">
       <rect
-         y="218.02046"
-         x="137.98216"
+         y="9.0420723"
+         x="14.525912"
          height="33.188591"
          width="33.129997"
          id="rect3167-8-0"
-         style="fill:none;stroke:#000080;stroke-width:1.87165701;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+         style="fill:#ffffff;stroke:#000080;stroke-width:1.87165701000000007;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
       <path
          inkscape:connector-curvature="0"
          id="path3319-6-5"
-         d="m 142.15506,246.79382 c -0.37071,-0.15242 -0.77584,-0.32867 -0.90027,-0.39169 -0.22434,-0.11359 -0.22521,-0.11528 -0.1037,-0.19835 0.0674,-0.0461 0.17632,-0.0848 0.24202,-0.0861 0.0657,-9.4e-4 0.32235,-0.07 0.57033,-0.15261 0.7605,-0.25358 1.15015,-0.29959 2.03222,-0.23995 0.44199,0.0299 0.83863,0.072 0.88141,0.0938 0.0427,0.0217 0.11184,0.0126 0.15348,-0.0198 0.0648,-0.0509 0.0615,-0.0787 -0.0221,-0.19259 l -0.0978,-0.13325 0.38503,0.0469 c 0.66965,0.0815 1.82493,0.0633 1.85 [...]
+         d="m 18.69881,37.81543 c -0.37071,-0.15242 -0.77584,-0.32867 -0.90027,-0.39169 -0.22434,-0.11359 -0.22521,-0.11528 -0.1037,-0.19835 0.0674,-0.0461 0.17632,-0.0848 0.24202,-0.0861 0.0657,-9.4e-4 0.32235,-0.07 0.57033,-0.15261 0.7605,-0.25358 1.15015,-0.29959 2.03222,-0.23995 0.44199,0.0299 0.83863,0.072 0.88141,0.0938 0.0427,0.0217 0.11184,0.0126 0.15348,-0.0198 0.0648,-0.0509 0.0615,-0.0787 -0.0221,-0.19259 l -0.0978,-0.13325 0.38503,0.0469 c 0.66965,0.0815 1.82493,0.0633 1.8500 [...]
          style="fill:#000080" />
       <rect
          ry="1.5290817e-06"
-         y="241.14323"
-         x="138.56277"
+         y="32.164845"
+         x="15.106524"
          height="9.0398445"
          width="31.968777"
          id="rect3241-6"
@@ -81,13 +77,13 @@
       <text
          sodipodi:linespacing="125%"
          id="text3207-6"
-         y="249.30818"
-         x="143.50713"
+         y="40.329792"
+         x="20.050877"
          style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000080;fill-opacity:1;stroke:none;font-family:Sans"
          xml:space="preserve"><tspan
            style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000080;font-family:Sans;-inkscape-font-specification:Sans Bold"
-           y="249.30818"
-           x="143.50713"
+           y="40.329792"
+           x="20.050877"
            id="tspan3209-2"
            sodipodi:role="line">IMG</tspan></text>
     </g>
diff --git a/src/icons/MimeJNX.svg b/src/icons/MimeJNX.svg
index 21c93b0..bb53860 100644
--- a/src/icons/MimeJNX.svg
+++ b/src/icons/MimeJNX.svg
@@ -13,8 +13,8 @@
    height="64px"
    id="svg3513"
    version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="MimeRMAP.svg">
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="MimeJNX.svg">
   <defs
      id="defs3515" />
   <sodipodi:namedview
@@ -25,15 +25,15 @@
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
      inkscape:zoom="5.5"
-     inkscape:cx="32"
-     inkscape:cy="32"
+     inkscape:cx="71.232634"
+     inkscape:cy="46.340668"
      inkscape:current-layer="layer1"
      showgrid="true"
      inkscape:document-units="px"
      inkscape:grid-bbox="true"
      inkscape:window-width="657"
      inkscape:window-height="421"
-     inkscape:window-x="-2"
+     inkscape:window-x="0"
      inkscape:window-y="0"
      inkscape:window-maximized="0" />
   <metadata
@@ -44,7 +44,7 @@
         <dc:format>image/svg+xml</dc:format>
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
+        <dc:title />
       </cc:Work>
     </rdf:RDF>
   </metadata>
@@ -53,27 +53,23 @@
      inkscape:label="Layer 1"
      inkscape:groupmode="layer">
     <g
-       transform="translate(-163.80622,-158.76879)"
-       id="g3288"
-       inkscape:export-filename="/home/oeichler/Code/cpp/MapRoom/src/icons/16x16/mine_jnx.png"
-       inkscape:export-xdpi="41.142857"
-       inkscape:export-ydpi="41.142857">
+       id="g3170">
       <rect
-         y="178.35631"
-         x="187.60486"
+         y="19.587519"
+         x="23.798639"
          height="33.188591"
          width="33.129997"
          id="rect3167-8-1"
-         style="fill:none;stroke:#800000;stroke-width:1.87165701;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+         style="fill:#ffffff;stroke:#800000;stroke-width:1.87165701000000007;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
       <path
          inkscape:connector-curvature="0"
          id="path3319-6-0"
-         d="m 191.77774,207.12967 c -0.37071,-0.15242 -0.77584,-0.32867 -0.90027,-0.39169 -0.22434,-0.11359 -0.22521,-0.11528 -0.1037,-0.19835 0.0674,-0.0461 0.17632,-0.0848 0.24202,-0.0861 0.0657,-9.4e-4 0.32235,-0.07 0.57033,-0.15261 0.7605,-0.25358 1.15015,-0.29959 2.03222,-0.23995 0.44199,0.0299 0.83863,0.072 0.88141,0.0938 0.0427,0.0217 0.11184,0.0126 0.15348,-0.0198 0.0648,-0.0509 0.0615,-0.0787 -0.0221,-0.19259 l -0.0978,-0.13325 0.38503,0.0469 c 0.66965,0.0815 1.82493,0.0633 1.85 [...]
+         d="m 27.97152,48.36088 c -0.37071,-0.15242 -0.77584,-0.32867 -0.90027,-0.39169 -0.22434,-0.11359 -0.22521,-0.11528 -0.1037,-0.19835 0.0674,-0.0461 0.17632,-0.0848 0.24202,-0.0861 0.0657,-9.4e-4 0.32235,-0.07 0.57033,-0.15261 0.7605,-0.25358 1.15015,-0.29959 2.03222,-0.23995 0.44199,0.0299 0.83863,0.072 0.88141,0.0938 0.0427,0.0217 0.11184,0.0126 0.15348,-0.0198 0.0648,-0.0509 0.0615,-0.0787 -0.0221,-0.19259 l -0.0978,-0.13325 0.38503,0.0469 c 0.66965,0.0815 1.82493,0.0633 1.8500 [...]
          style="fill:#800000" />
       <rect
          ry="1.2791356e-06"
-         y="199.65564"
-         x="193.40381"
+         y="40.886848"
+         x="29.597589"
          height="10.875"
          width="20.25"
          id="rect4025"
@@ -81,13 +77,13 @@
       <text
          sodipodi:linespacing="125%"
          id="text4021"
-         y="207.73718"
-         x="194"
+         y="48.968391"
+         x="30.193781"
          style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
          xml:space="preserve"><tspan
            style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#800000;font-family:Sans;-inkscape-font-specification:Sans Bold"
-           y="207.73718"
-           x="194"
+           y="48.968391"
+           x="30.193781"
            id="tspan4023"
            sodipodi:role="line">JNX</tspan></text>
     </g>
diff --git a/src/icons/MimeMAP.svg b/src/icons/MimeMAP.svg
index e570ae2..ca42b4f 100644
--- a/src/icons/MimeMAP.svg
+++ b/src/icons/MimeMAP.svg
@@ -13,8 +13,8 @@
    height="64px"
    id="svg3513"
    version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="MimeVRT.svg">
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="MimeMAP.svg">
   <defs
      id="defs3515" />
   <sodipodi:namedview
@@ -31,11 +31,11 @@
      showgrid="true"
      inkscape:document-units="px"
      inkscape:grid-bbox="true"
-     inkscape:window-width="657"
-     inkscape:window-height="421"
-     inkscape:window-x="-2"
-     inkscape:window-y="0"
-     inkscape:window-maximized="0" />
+     inkscape:window-width="1920"
+     inkscape:window-height="992"
+     inkscape:window-x="-4"
+     inkscape:window-y="-1"
+     inkscape:window-maximized="1" />
   <metadata
      id="metadata3518">
     <rdf:RDF>
@@ -44,7 +44,7 @@
         <dc:format>image/svg+xml</dc:format>
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
+        <dc:title />
       </cc:Work>
     </rdf:RDF>
   </metadata>
@@ -53,27 +53,23 @@
      inkscape:label="Layer 1"
      inkscape:groupmode="layer">
     <g
-       transform="translate(-210.86748,-202.18904)"
-       id="g3398"
-       inkscape:export-filename="/home/oeichler/Code/cpp/MapRoom/src/icons/16x16/mime_map.png"
-       inkscape:export-xdpi="41.142838"
-       inkscape:export-ydpi="41.142838">
+       id="g3158">
       <rect
-         y="218.68565"
-         x="230.66612"
+         y="16.496614"
+         x="19.798643"
          height="33.188591"
          width="33.129997"
          id="rect3167-8-11"
-         style="fill:none;stroke:#672178;stroke-width:1.87165701;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+         style="fill:#ffffff;stroke:#672178;stroke-width:1.87165701000000007;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
       <path
          inkscape:connector-curvature="0"
          id="path3319-6-2"
-         d="m 234.83902,247.45902 c -0.37071,-0.15242 -0.77584,-0.32867 -0.90027,-0.3917 -0.22434,-0.11358 -0.22521,-0.11528 -0.1037,-0.19835 0.0674,-0.0461 0.17632,-0.0848 0.24202,-0.0861 0.0657,-9.5e-4 0.32235,-0.07 0.57033,-0.15262 0.7605,-0.25358 1.15015,-0.29958 2.03222,-0.23994 0.44199,0.0299 0.83863,0.072 0.88141,0.0938 0.0427,0.0217 0.11184,0.0126 0.15348,-0.0198 0.0648,-0.0509 0.0615,-0.0787 -0.0221,-0.19259 l -0.0978,-0.13325 0.38503,0.0469 c 0.66965,0.0815 1.82493,0.0633 1.850 [...]
+         d="m 23.97154,45.26998 c -0.37071,-0.15242 -0.77584,-0.32867 -0.90027,-0.3917 -0.22434,-0.11358 -0.22521,-0.11528 -0.1037,-0.19835 0.0674,-0.0461 0.17632,-0.0848 0.24202,-0.0861 0.0657,-9.5e-4 0.32235,-0.07 0.57033,-0.15262 0.7605,-0.25358 1.15015,-0.29958 2.03222,-0.23994 0.44199,0.0299 0.83863,0.072 0.88141,0.0938 0.0427,0.0217 0.11184,0.0126 0.15348,-0.0198 0.0648,-0.0509 0.0615,-0.0787 -0.0221,-0.19259 l -0.0978,-0.13325 0.38503,0.0469 c 0.66965,0.0815 1.82493,0.0633 1.85001 [...]
          style="fill:#672178" />
       <rect
          ry="1.5290817e-06"
-         y="241.80843"
-         x="231.24673"
+         y="39.619385"
+         x="20.379255"
          height="9.0398445"
          width="31.968777"
          id="rect3241-69"
@@ -81,13 +77,13 @@
       <text
          sodipodi:linespacing="125%"
          id="text3207-9"
-         y="249.97337"
-         x="234.46501"
+         y="47.784332"
+         x="23.597532"
          style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#672178;fill-opacity:1;stroke:none;font-family:Sans"
          xml:space="preserve"><tspan
            style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#672178;font-family:Sans;-inkscape-font-specification:Sans Bold"
-           y="249.97337"
-           x="234.46501"
+           y="47.784332"
+           x="23.597532"
            id="tspan3209-7"
            sodipodi:role="line">MAP</tspan></text>
     </g>
diff --git a/src/icons/MimeRMAP.svg b/src/icons/MimeRMAP.svg
index d674ea9..f3481e5 100644
--- a/src/icons/MimeRMAP.svg
+++ b/src/icons/MimeRMAP.svg
@@ -13,8 +13,8 @@
    height="64px"
    id="svg3513"
    version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="GridWizzard.svg">
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="MimeRMAP.svg">
   <defs
      id="defs3515" />
   <sodipodi:namedview
@@ -31,11 +31,11 @@
      showgrid="true"
      inkscape:document-units="px"
      inkscape:grid-bbox="true"
-     inkscape:window-width="657"
-     inkscape:window-height="421"
-     inkscape:window-x="-2"
-     inkscape:window-y="0"
-     inkscape:window-maximized="0" />
+     inkscape:window-width="1920"
+     inkscape:window-height="992"
+     inkscape:window-x="-4"
+     inkscape:window-y="-1"
+     inkscape:window-maximized="1" />
   <metadata
      id="metadata3518">
     <rdf:RDF>
@@ -44,7 +44,7 @@
         <dc:format>image/svg+xml</dc:format>
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
+        <dc:title />
       </cc:Work>
     </rdf:RDF>
   </metadata>
@@ -53,27 +53,23 @@
      inkscape:label="Layer 1"
      inkscape:groupmode="layer">
     <g
-       transform="translate(-126.5883,-159.20285)"
-       id="g3295"
-       inkscape:export-filename="/home/oeichler/Code/cpp/MapRoom/src/icons/16x16/mime_rmap.png"
-       inkscape:export-xdpi="41.142857"
-       inkscape:export-ydpi="41.142857">
+       id="g3146">
       <rect
-         y="177.69946"
-         x="138.93239"
+         y="18.496613"
+         x="12.344089"
          height="33.188591"
          width="33.129997"
          id="rect3167-8"
-         style="fill:none;stroke:#008000;stroke-width:1.87165701;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+         style="fill:#ffffff;stroke:#008000;stroke-width:1.87165701000000007;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
       <path
          inkscape:connector-curvature="0"
          id="path3319-6"
-         d="m 143.10527,206.47282 c -0.37071,-0.15242 -0.77584,-0.32867 -0.90027,-0.39169 -0.22434,-0.11359 -0.22521,-0.11528 -0.1037,-0.19835 0.0674,-0.0461 0.17632,-0.0848 0.24202,-0.0861 0.0657,-9.4e-4 0.32235,-0.07 0.57033,-0.15261 0.7605,-0.25358 1.15015,-0.29959 2.03222,-0.23995 0.44199,0.0299 0.83863,0.072 0.88141,0.0938 0.0427,0.0217 0.11184,0.0126 0.15348,-0.0198 0.0648,-0.0509 0.0615,-0.0787 -0.0221,-0.19259 l -0.0978,-0.13325 0.38503,0.0469 c 0.66965,0.0815 1.82493,0.0633 1.85 [...]
+         d="M 16.51697,47.26997 C 16.14626,47.11755 15.74113,46.9413 15.6167,46.87828 15.39236,46.76469 15.39149,46.763 15.513,46.67993 c 0.0674,-0.0461 0.17632,-0.0848 0.24202,-0.0861 0.0657,-9.4e-4 0.32235,-0.07 0.57033,-0.15261 0.7605,-0.25358 1.15015,-0.29959 2.03222,-0.23995 0.44199,0.0299 0.83863,0.072 0.88141,0.0938 0.0427,0.0217 0.11184,0.0126 0.15348,-0.0198 0.0648,-0.0509 0.0615,-0.0787 -0.0221,-0.19259 l -0.0978,-0.13325 0.38503,0.0469 c 0.66965,0.0815 1.82493,0.0633 1.85001,- [...]
          style="fill:#008000" />
       <rect
          ry="1.5290817e-06"
-         y="200.82224"
-         x="139.51299"
+         y="41.619385"
+         x="12.924685"
          height="9.0398445"
          width="31.968777"
          id="rect3241"
@@ -81,13 +77,13 @@
       <text
          sodipodi:linespacing="125%"
          id="text3207"
-         y="208.98718"
-         x="138.88361"
+         y="49.784332"
+         x="12.295306"
          style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#008000;fill-opacity:1;stroke:none;font-family:Sans"
          xml:space="preserve"><tspan
            style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#008000;font-family:Sans;-inkscape-font-specification:Sans Bold"
-           y="208.98718"
-           x="138.88361"
+           y="49.784332"
+           x="12.295306"
            id="tspan3209"
            sodipodi:role="line">RMAP</tspan></text>
     </g>
diff --git a/src/icons/MimeTMS.svg b/src/icons/MimeTMS.svg
index 04800ce..98f7601 100644
--- a/src/icons/MimeTMS.svg
+++ b/src/icons/MimeTMS.svg
@@ -13,7 +13,7 @@
    height="64px"
    id="svg3462"
    version="1.1"
-   inkscape:version="0.48.4 r9939"
+   inkscape:version="0.48.5 r10040"
    sodipodi:docname="MimeTMS.svg">
   <defs
      id="defs3464" />
@@ -32,9 +32,9 @@
      inkscape:document-units="px"
      inkscape:grid-bbox="true"
      inkscape:window-width="1920"
-     inkscape:window-height="1012"
-     inkscape:window-x="-2"
-     inkscape:window-y="-3"
+     inkscape:window-height="992"
+     inkscape:window-x="-4"
+     inkscape:window-y="-1"
      inkscape:window-maximized="1">
     <inkscape:grid
        type="xygrid"
@@ -48,7 +48,7 @@
         <dc:format>image/svg+xml</dc:format>
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
+        <dc:title />
       </cc:Work>
     </rdf:RDF>
   </metadata>
@@ -57,7 +57,14 @@
      inkscape:label="Layer 1"
      inkscape:groupmode="layer">
     <g
-       id="g3042">
+       id="g3121">
+      <rect
+         y="12.314795"
+         x="16.525911"
+         height="33.188591"
+         width="33.129997"
+         id="rect3167"
+         style="fill:#ffffff;stroke:#aa0000;stroke-width:1.87165701000000007;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
       <path
          inkscape:connector-curvature="0"
          id="path3319"
@@ -86,13 +93,6 @@
              y="44"
              style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;font-family:Sans;-inkscape-font-specification:Sans Bold">TMS</tspan></text>
       </g>
-      <rect
-         y="12.314795"
-         x="16.525911"
-         height="33.188591"
-         width="33.129997"
-         id="rect3167"
-         style="fill:none;stroke:#aa0000;stroke-width:1.87165701000000007;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
     </g>
   </g>
 </svg>
diff --git a/src/icons/MimeVRT.svg b/src/icons/MimeVRT.svg
index 454e3a2..bdd9356 100644
--- a/src/icons/MimeVRT.svg
+++ b/src/icons/MimeVRT.svg
@@ -13,7 +13,7 @@
    height="64px"
    id="svg3513"
    version="1.1"
-   inkscape:version="0.48.4 r9939"
+   inkscape:version="0.48.5 r10040"
    sodipodi:docname="MimeVRT.svg">
   <defs
      id="defs3515" />
@@ -32,9 +32,9 @@
      inkscape:document-units="px"
      inkscape:grid-bbox="true"
      inkscape:window-width="1920"
-     inkscape:window-height="996"
-     inkscape:window-x="-2"
-     inkscape:window-y="-3"
+     inkscape:window-height="992"
+     inkscape:window-x="-4"
+     inkscape:window-y="-1"
      inkscape:window-maximized="1" />
   <metadata
      id="metadata3518">
@@ -53,14 +53,14 @@
      inkscape:label="Layer 1"
      inkscape:groupmode="layer">
     <g
-       id="g2993">
+       id="g3092">
       <rect
          y="13.769343"
          x="17.798641"
          height="33.188591"
          width="33.129997"
          id="rect3167-8-3"
-         style="fill:none;stroke:#806600;stroke-width:1.87165701000000007;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+         style="fill:#ffffff;stroke:#806600;stroke-width:1.87165701000000007;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
       <path
          inkscape:connector-curvature="0"
          id="path3319-6-1"
diff --git a/src/icons/MimeWMTS.svg b/src/icons/MimeWMTS.svg
index 65a903d..5e32b9f 100644
--- a/src/icons/MimeWMTS.svg
+++ b/src/icons/MimeWMTS.svg
@@ -13,7 +13,7 @@
    height="64px"
    id="svg3462"
    version="1.1"
-   inkscape:version="0.48.4 r9939"
+   inkscape:version="0.48.5 r10040"
    sodipodi:docname="MimeWMTS.svg">
   <defs
      id="defs3464" />
@@ -32,9 +32,9 @@
      inkscape:document-units="px"
      inkscape:grid-bbox="true"
      inkscape:window-width="1920"
-     inkscape:window-height="1012"
-     inkscape:window-x="-2"
-     inkscape:window-y="-3"
+     inkscape:window-height="992"
+     inkscape:window-x="-4"
+     inkscape:window-y="-1"
      inkscape:window-maximized="1">
     <inkscape:grid
        type="xygrid"
@@ -57,42 +57,38 @@
      inkscape:label="Layer 1"
      inkscape:groupmode="layer">
     <g
-       id="g3034">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3319"
-         d="m 20.698811,41.088148 c -0.37071,-0.152412 -0.77584,-0.328663 -0.90027,-0.391681 -0.22434,-0.113598 -0.22521,-0.115284 -0.1037,-0.198356 0.0674,-0.04608 0.17632,-0.08477 0.24202,-0.08608 0.0657,-9.37e-4 0.32235,-0.06997 0.57033,-0.15261 0.7605,-0.25358 1.15015,-0.299589 2.03222,-0.239952 0.44199,0.02988 0.83863,0.07203 0.88141,0.0938 0.0427,0.02173 0.11184,0.01264 0.15348,-0.01976 0.0648,-0.05086 0.0615,-0.07868 -0.0221,-0.192586 l -0.0978,-0.133248 0.38503,0.04693 c 0.66965, [...]
-         style="fill:#00d4aa" />
-      <g
-         transform="translate(7.9263592,-19.951782)"
-         id="g3029">
-        <rect
-           style="fill:#ffffff;stroke:none"
-           id="rect3019"
-           width="31"
-           height="7"
-           x="9.6645508"
-           y="57.175659" />
-        <text
-           xml:space="preserve"
-           style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#00d4aa;fill-opacity:1;stroke:none;font-family:Sans"
-           x="9.6035156"
-           y="63.951782"
-           id="text3207"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3209"
-             x="9.6035156"
-             y="63.951782"
-             style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#00d4aa;font-family:Sans;-inkscape-font-specification:Sans Bold">WMTS</tspan></text>
-      </g>
+       id="g3080">
       <rect
          y="12.314795"
          x="16.525911"
          height="33.188591"
          width="33.129997"
          id="rect3167"
-         style="fill:none;stroke:#217867;stroke-width:1.87165701000000007;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+         style="fill:#ffffff;stroke:#217867;stroke-width:1.87165701000000007;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3319"
+         d="m 20.698811,41.088148 c -0.37071,-0.152412 -0.77584,-0.328663 -0.90027,-0.391681 -0.22434,-0.113598 -0.22521,-0.115284 -0.1037,-0.198356 0.0674,-0.04608 0.17632,-0.08477 0.24202,-0.08608 0.0657,-9.37e-4 0.32235,-0.06997 0.57033,-0.15261 0.7605,-0.25358 1.15015,-0.299589 2.03222,-0.239952 0.44199,0.02988 0.83863,0.07203 0.88141,0.0938 0.0427,0.02173 0.11184,0.01264 0.15348,-0.01976 0.0648,-0.05086 0.0615,-0.07868 -0.0221,-0.192586 l -0.0978,-0.133248 0.38503,0.04693 c 0.66965, [...]
+         style="fill:#00d4aa" />
+      <rect
+         y="37.223877"
+         x="17.59091"
+         height="7"
+         width="31"
+         id="rect3019"
+         style="fill:#ffffff;stroke:none" />
+      <text
+         sodipodi:linespacing="125%"
+         id="text3207"
+         y="44"
+         x="17.529875"
+         style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#00d4aa;fill-opacity:1;stroke:none;font-family:Sans"
+         xml:space="preserve"><tspan
+           style="font-size:9px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#00d4aa;font-family:Sans;-inkscape-font-specification:Sans Bold"
+           y="44"
+           x="17.529875"
+           id="tspan3209"
+           sodipodi:role="line">WMTS</tspan></text>
     </g>
   </g>
 </svg>
diff --git a/src/locale/qmapshack_cs.ts b/src/locale/qmapshack_cs.ts
index 175aa06..a1eeb4d 100644
--- a/src/locale/qmapshack_cs.ts
+++ b/src/locale/qmapshack_cs.ts
@@ -41,7 +41,7 @@
         <location filename="../dem/CDemVRT.cpp" line="44"/>
         <location filename="../dem/CDemVRT.cpp" line="51"/>
         <location filename="../dem/CDemVRT.cpp" line="60"/>
-        <location filename="../dem/CDemVRT.cpp" line="84"/>
+        <location filename="../dem/CDemVRT.cpp" line="87"/>
         <source>Error...</source>
         <translation>Chyba...</translation>
     </message>
@@ -57,7 +57,7 @@
         <translation>DEM musí mít jedno pásmo s 16bitovými nebo 32bitovými daty.</translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="84"/>
+        <location filename="../dem/CDemVRT.cpp" line="87"/>
         <source>No georeference information found.</source>
         <translation>Nenalezeny žádné údaje o vyjádření prostorových vztahů.</translation>
     </message>
@@ -79,98 +79,115 @@
 <context>
     <name>CDetailsOvlArea</name>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
+        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="131"/>
         <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="131"/>
         <source>Enter new waypoint name.</source>
         <translation>Zadat  nový název cestovního bodu.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="221"/>
         <source><h4>Comment:</h4></source>
-        <translation><h4>Poznámka:</h4></translation>
+        <translation type="obsolete"><h4>Poznámka:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="224"/>
         <source><p>--- no comment ---</p></source>
-        <translation><p>--- žádná poznámka ---</p></translation>
+        <translation type="obsolete"><p>--- žádná poznámka ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="231"/>
         <source><h4>Description:</h4></source>
-        <translation><h4>Popis:</h4></translation>
+        <translation type="obsolete"><h4>Popis:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="234"/>
         <source><p>--- no description ---</p></source>
-        <translation><p>--- žádný popis ---</p></translation>
+        <translation type="obsolete"><p>--- žádný popis ---</p></translation>
+    </message>
+</context>
+<context>
+    <name>CDetailsPrj</name>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="56"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="84"/>
+        <source>none</source>
+        <translation type="unfinished">žádné</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="70"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Upravit název...</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="70"/>
+        <source>Enter new project name.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="79"/>
+        <source>Edit keywords...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="79"/>
+        <source>Enter keywords.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>CDetailsTrk</name>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="162"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="171"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="174"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="180"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="199"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="201"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="154"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="163"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="166"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="172"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="191"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="193"/>
         <source>%1 %2</source>
         <translation>%1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="226"/>
         <source><h4>Comment:</h4></source>
-        <translation type="unfinished"><h4>Poznámka:</h4></translation>
+        <translation type="obsolete"><h4>Poznámka:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="229"/>
         <source><p>--- no comment ---</p></source>
-        <translation type="unfinished"><p>--- žádná poznámka ---</p></translation>
+        <translation type="obsolete"><p>--- žádná poznámka ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="236"/>
         <source><h4>Description:</h4></source>
-        <translation type="unfinished"><h4>Popis:</h4></translation>
+        <translation type="obsolete"><h4>Popis:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="239"/>
         <source><p>--- no description ---</p></source>
-        <translation type="unfinished"><p>--- žádný popis ---</p></translation>
+        <translation type="obsolete"><p>--- žádný popis ---</p></translation>
     </message>
 </context>
 <context>
     <name>CDetailsWpt</name>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="130"/>
         <source><h4>Comment:</h4></source>
-        <translation><h4>Poznámka:</h4></translation>
+        <translation type="obsolete"><h4>Poznámka:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="133"/>
         <source><p>--- no comment ---</p></source>
-        <translation><p>--- žádná poznámka ---</p></translation>
+        <translation type="obsolete"><p>--- žádná poznámka ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="140"/>
         <source><h4>Description:</h4></source>
-        <translation><h4>Popis:</h4></translation>
+        <translation type="obsolete"><h4>Popis:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="143"/>
         <source><p>--- no description ---</p></source>
-        <translation><p>--- žádný popis ---</p></translation>
+        <translation type="obsolete"><p>--- žádný popis ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="163"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="130"/>
         <source>Edit name...</source>
         <translation>Upravit název...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="163"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="130"/>
         <source>Enter new waypoint name.</source>
         <translation>Zadat nový cestovní bod.</translation>
     </message>
@@ -179,7 +196,7 @@
         <translation type="obsolete">Zadat novou výšku.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="182"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="149"/>
         <source>Enter new proximity range.</source>
         <translation>Zadat nový rozsah blízkosti.</translation>
     </message>
@@ -189,96 +206,173 @@
     <message>
         <location filename="../helpers/CElevationDialog.cpp" line="85"/>
         <source>No DEM data found for that point.</source>
+        <translation>Pro tento bod nebyla nalezena žádná data DEM.</translation>
+    </message>
+</context>
+<context>
+    <name>CGisListDB</name>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="74"/>
+        <source>Add Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="77"/>
+        <source>Add Folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="78"/>
+        <source>Delete Folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="82"/>
+        <source>Remove Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="85"/>
+        <source>Empty</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="228"/>
+        <source>Remove database...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="228"/>
+        <source>Do you realy want to remove '%1' from the list?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="269"/>
+        <source>Delete database folder...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="269"/>
+        <source>Are you sure you want to delete "%1" from the database?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="295"/>
+        <source>Remove items...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="295"/>
+        <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>CGisListWks</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="47"/>
+        <location filename="../gis/CGisListWks.cpp" line="80"/>
         <source>Save As...</source>
         <translation>Uložit jako...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="48"/>
+        <location filename="../gis/CGisListWks.cpp" line="81"/>
         <source>Save</source>
         <translation>Uložit</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="49"/>
+        <location filename="../gis/CGisListWks.cpp" line="82"/>
+        <source>Edit..</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="83"/>
         <source>Close</source>
         <translation>Zavřít</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="55"/>
+        <location filename="../gis/CGisListWks.cpp" line="89"/>
         <source>Edit...</source>
         <translation>Upravit...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="56"/>
+        <location filename="../gis/CGisListWks.cpp" line="90"/>
         <source>Move Waypoint</source>
         <translation>Přesunout cestovní bod</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="57"/>
+        <location filename="../gis/CGisListWks.cpp" line="91"/>
         <source>Proj. Waypoint...</source>
         <translation>Promítnout cestovní bod...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="58"/>
+        <location filename="../gis/CGisListWks.cpp" line="92"/>
         <source>Track Profile</source>
         <translation>Sledovat profil</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="59"/>
+        <location filename="../gis/CGisListWks.cpp" line="93"/>
         <source>Select Range</source>
-        <translation type="unfinished"></translation>
+        <translation>Vybrat rozsah</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="60"/>
+        <location filename="../gis/CGisListWks.cpp" line="94"/>
         <source>Edit Track Points</source>
         <translation>Upravit body stopy</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="61"/>
+        <location filename="../gis/CGisListWks.cpp" line="95"/>
         <source>Reverse Track</source>
         <translation>Obrátit stopu</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="62"/>
+        <location filename="../gis/CGisListWks.cpp" line="96"/>
         <source>Combine Tracks</source>
         <translation>Spojit stopy</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="63"/>
+        <location filename="../gis/CGisListWks.cpp" line="97"/>
         <source>Edit Area Points</source>
-        <translation type="unfinished"></translation>
+        <translation>Upravit body oblasti</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="66"/>
+        <location filename="../gis/CGisListWks.cpp" line="100"/>
         <source>Delete</source>
         <translation>Smazat</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="400"/>
+        <location filename="../gis/CGisListWks.cpp" line="621"/>
         <source>Saving workspace. Please wait.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ukládá se pracovní oblast. Počkejte, prosím.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="441"/>
+        <location filename="../gis/CGisListWks.cpp" line="662"/>
         <source>Loading workspace. Please wait.</source>
+        <translation>Nahrává se pracovní oblast. Počkejte, prosím.</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="1070"/>
+        <source>Close all projects...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="1070"/>
+        <source>This will remove all projects from the workspace.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>CGrid</name>
     <message>
-        <location filename="../grid/CGrid.cpp" line="61"/>
         <source>[Grid: %1] </source>
-        <translation>[Mřížka: %1]</translation>
+        <translation type="obsolete">[Mřížka: %1]</translation>
     </message>
     <message>
-        <location filename="../grid/CGrid.cpp" line="65"/>
+        <location filename="../grid/CGrid.cpp" line="62"/>
+        <source>[Grid: %1%2%5 %3%4%5] </source>
+        <translation type="unfinished">[Mřížka: %1] {1%2%5 %3%4%5]?}</translation>
+    </message>
+    <message>
+        <location filename="../grid/CGrid.cpp" line="66"/>
         <source>[Grid: N %1m, E %2m] </source>
         <translation>[Mřížka: S %1m, V %2m] </translation>
     </message>
@@ -288,18 +382,36 @@
     <message>
         <location filename="../helpers/CHistoryListWidget.cpp" line="32"/>
         <source>Cut history</source>
+        <translation>Vyjmout historii</translation>
+    </message>
+</context>
+<context>
+    <name>CImportDatabase</name>
+    <message>
+        <location filename="../qlgt/CImportDatabase.cpp" line="29"/>
+        <source>Import QLandkarte Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CImportDatabase.cpp" line="74"/>
+        <source>Select source database...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CImportDatabase.cpp" line="95"/>
+        <source>Select target database...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="444"/>
+        <location filename="../CMainWindow.cpp" line="441"/>
         <source>Ele: %1%2</source>
         <translation>Výška: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="559"/>
+        <location filename="../CMainWindow.cpp" line="562"/>
         <source>Load GIS Data...</source>
         <translation>Nahrát data GIS...</translation>
     </message>
@@ -906,31 +1018,31 @@
         <translation>Soubor je ve formátu NT. QMapShack nedokáže číst mapové soubory ve formátu NT: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="713"/>
+        <location filename="../map/CMapIMG.cpp" line="727"/>
         <source>File contains locked / encypted data. Garmin does not want you to use this file with any other software than the one supplied by Garmin.</source>
         <translation>Soubor obsahuje zamknutá/zašifrovaná data. Garmin nechce, aby byl tento soubor použit s jiným programem než dodaným Garminem.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2363"/>
-        <location filename="../map/CMapIMG.cpp" line="2371"/>
-        <location filename="../map/CMapIMG.cpp" line="2375"/>
-        <location filename="../map/CMapIMG.cpp" line="2380"/>
-        <location filename="../map/CMapIMG.cpp" line="2427"/>
-        <location filename="../map/CMapIMG.cpp" line="2435"/>
-        <location filename="../map/CMapIMG.cpp" line="2439"/>
-        <location filename="../map/CMapIMG.cpp" line="2444"/>
+        <location filename="../map/CMapIMG.cpp" line="2377"/>
+        <location filename="../map/CMapIMG.cpp" line="2385"/>
+        <location filename="../map/CMapIMG.cpp" line="2389"/>
+        <location filename="../map/CMapIMG.cpp" line="2394"/>
+        <location filename="../map/CMapIMG.cpp" line="2441"/>
+        <location filename="../map/CMapIMG.cpp" line="2449"/>
+        <location filename="../map/CMapIMG.cpp" line="2453"/>
+        <location filename="../map/CMapIMG.cpp" line="2458"/>
         <source>Point of Interest</source>
         <translation>Podivuhodnost</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2569"/>
+        <location filename="../map/CMapIMG.cpp" line="2583"/>
         <source>Unknown</source>
         <translation>Neznámý</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2616"/>
-        <location filename="../map/CMapIMG.cpp" line="2625"/>
-        <location filename="../map/CMapIMG.cpp" line="2632"/>
+        <location filename="../map/CMapIMG.cpp" line="2630"/>
+        <location filename="../map/CMapIMG.cpp" line="2639"/>
+        <location filename="../map/CMapIMG.cpp" line="2646"/>
         <source>Area</source>
         <translation>Oblast</translation>
     </message>
@@ -974,7 +1086,7 @@
         <translation>Přidat nebo odstranit cesty obsahující mapy. V cestě může být více map, ale žádná podcesta není zpracována. Podporovanými formáty jsou: %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapPathSetup.cpp" line="54"/>
+        <location filename="../map/CMapPathSetup.cpp" line="55"/>
         <source>Select map path...</source>
         <translation>Vybrat cestu k mapě...</translation>
     </message>
@@ -1036,31 +1148,31 @@
         <location filename="../map/CMapTMS.cpp" line="69"/>
         <location filename="../map/CMapTMS.cpp" line="79"/>
         <source>Error...</source>
-        <translation type="unfinished">Chyba...</translation>
+        <translation>Chyba...</translation>
     </message>
     <message>
         <location filename="../map/CMapTMS.cpp" line="69"/>
         <source>Failed to open %1</source>
-        <translation type="unfinished">Nepodařilo se otevřít %1</translation>
+        <translation>Nepodařilo se otevřít %1</translation>
     </message>
     <message>
         <location filename="../map/CMapTMS.cpp" line="79"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
-        <translation type="unfinished">Chyba při čtení: %1
+        <translation>Chyba při čtení: %1
 Řádek %2, Sloupec %3:
 %4</translation>
     </message>
     <message>
         <location filename="../map/CMapTMS.cpp" line="117"/>
         <source>Layer %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Vrstva %1</translation>
     </message>
     <message>
         <location filename="../map/CMapTMS.cpp" line="288"/>
         <source><b>%1</b>: %2 tiles pending<br/></source>
-        <translation type="unfinished"><b>%1</b>: %2 dlaždic čeká<br/></translation>
+        <translation><b>%1</b>: %2 dlaždic čeká<br/></translation>
     </message>
 </context>
 <context>
@@ -1287,35 +1399,215 @@ není platným vymezením soustavy souřadnic
     </message>
 </context>
 <context>
+    <name>CQlgtDb</name>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="304"/>
+        <source>Migrating database from version 4 to 5.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="357"/>
+        <source>Migrating database from version 5 to 6.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="414"/>
+        <source>Migrating database from version 6 to 7.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="480"/>
+        <source>Migrating database from version 7 to 8.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="509"/>
+        <source>Migrating database from version 8 to 9.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="532"/>
+        <source>Open database: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="541"/>
+        <source>Folders:          %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="550"/>
+        <source>Tracks:           %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="558"/>
+        <source>Routes:           %1 (Only the basic route will be copied)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="566"/>
+        <source>Waypoints:        %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="574"/>
+        <source>Overlays:         %1 (only area overlays will be converted to QMapShack)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="581"/>
+        <source>Diaries:          %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="588"/>
+        <source>Map selections:   %1 (can't be converted to QMapShack)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="594"/>
+        <source>------ Start to convert database to %1------</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="598"/>
+        <source>Failed to create target database.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="599"/>
+        <source>------ Abort ------</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="627"/>
+        <source>------ Done ------</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="636"/>
+        <source>Restore folders...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="636"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="669"/>
+        <source>Abort</source>
+        <translation type="unfinished">Přerušit</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="663"/>
+        <source>Imported %1 folders and %2 diaries</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="669"/>
+        <source>Copy items...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="694"/>
+        <source>Imported %1 tracks, %2 waypoints, %3 routes, %4 areas</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="695"/>
+        <source>Import folders...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="747"/>
+        <source>Overlay of type '%1' cant be converted</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CQmsDb</name>
+    <message>
+        <location filename="../qlgt/CQmsDb.cpp" line="46"/>
+        <source>Existing file...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQmsDb.cpp" line="46"/>
+        <source>Remove existing %1?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQmsDb.cpp" line="51"/>
+        <source>Remove existing file %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQmsDb.cpp" line="158"/>
+        <source>%1: drop item with QLGT DB ID %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CSearchGoogle</name>
     <message>
         <location filename="../gis/search/CSearchGoogle.cpp" line="120"/>
         <source>Unknown response</source>
-        <translation type="unfinished"></translation>
+        <translation>Neznámá odpověď</translation>
     </message>
     <message>
         <location filename="../gis/search/CSearchGoogle.cpp" line="130"/>
         <source>Error: </source>
-        <translation type="unfinished"></translation>
+        <translation>Chyba: </translation>
     </message>
 </context>
 <context>
     <name>CSetupDB</name>
     <message>
-        <location filename="../gis/db/CSetupDB.cpp" line="55"/>
         <source>Setup database...</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Nastavit databázi...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDB.cpp" line="55"/>
         <source>Changes will become active after an application's restart.</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Změny budou uvedeny v činnost po opětovném spuštění programu.</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDB.cpp" line="63"/>
         <source>Select database path...</source>
+        <translation type="obsolete">Vybrat cestu k databázi...</translation>
+    </message>
+</context>
+<context>
+    <name>CSetupDatabase</name>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="71"/>
+        <source>Error...</source>
+        <translation type="unfinished">Chyba...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="71"/>
+        <source>There is already a database with name '%1'</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="85"/>
+        <source>New database...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="110"/>
+        <source>Open database...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CSetupWorkspace</name>
+    <message>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="52"/>
+        <source>Setup database...</source>
+        <translation type="unfinished">Nastavit databázi...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="52"/>
+        <source>Changes will become active after an application's restart.</source>
+        <translation type="unfinished">Změny budou uvedeny v činnost po opětovném spuštění programu.</translation>
+    </message>
 </context>
 <context>
     <name>CTextEditWidget</name>
@@ -1413,13 +1705,13 @@ není platným vymezením soustavy souřadnic
         <translation>Stanovit cesty k souborům DEM</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPathSetup.ui" line="38"/>
-        <location filename="../dem/IDemPathSetup.ui" line="58"/>
+        <location filename="../dem/IDemPathSetup.ui" line="31"/>
+        <location filename="../dem/IDemPathSetup.ui" line="51"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPathSetup.ui" line="107"/>
+        <location filename="../dem/IDemPathSetup.ui" line="112"/>
         <source>-</source>
         <translation>-</translation>
     </message>
@@ -1548,52 +1840,72 @@ není platným vymezením soustavy souřadnic
         <translation>Dialog</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="37"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="44"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="75"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="82"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="105"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="112"/>
         <source>Color</source>
         <translation>Barva</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="126"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="133"/>
         <source>Border width</source>
         <translation>Šířka okraje</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="140"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="147"/>
         <source>Style</source>
         <translation>Styl</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="159"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="166"/>
         <source>Opacity</source>
         <translation>Neprůhlednost</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="179"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="186"/>
         <source>Points</source>
         <translation>Body</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="206"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="213"/>
         <source>Position</source>
         <translation>Poloha</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="215"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="222"/>
         <source>Hist.</source>
         <translation>Hist.</translation>
     </message>
 </context>
 <context>
+    <name>IDetailsPrj</name>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished">Formulář</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="44"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="51"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="75"/>
+        <source>-</source>
+        <translation type="unfinished">-</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="68"/>
+        <source>Keywords:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>IDetailsTrk</name>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="14"/>
@@ -1632,7 +1944,7 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="302"/>
         <source>Points</source>
-        <translation type="unfinished">Body</translation>
+        <translation>Body</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="350"/>
@@ -1698,42 +2010,42 @@ není platným vymezením soustavy souřadnic
         <translation>Dialog</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="121"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="242"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="128"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="249"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="155"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="162"/>
         <source>Position:</source>
         <translation>Poloha:</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="72"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="83"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="162"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="188"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="214"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="90"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="169"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="195"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="221"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="175"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="182"/>
         <source>Ele.</source>
         <translation>Výška</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="201"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="208"/>
         <source>Proximity:</source>
         <translation>Blízkost:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="102"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="109"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation><html><head/><body><p>Cestovní bod byl zaveden do QMapShacku a byl změněn. Už neukazuje původní data. Prohlédněte si, prosím, historii kvůli změnám. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="118"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="125"/>
         <source><html><head/><body><p>Read Only Mode</p></body></html></source>
         <translation><html><head/><body><p>Režim pouze pro čtení</p></body></html></translation>
     </message>
@@ -1748,27 +2060,27 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="14"/>
         <source>Edit elevation...</source>
-        <translation type="unfinished"></translation>
+        <translation>Upravit výšku...</translation>
     </message>
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="22"/>
         <source>Elevation</source>
-        <translation type="unfinished"></translation>
+        <translation>Výška</translation>
     </message>
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="32"/>
         <source>-</source>
-        <translation type="unfinished">-</translation>
+        <translation>-</translation>
     </message>
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="39"/>
         <source>Get elevation from active digital elevation model.</source>
-        <translation type="unfinished"></translation>
+        <translation>Získat výšku z činného digitálního výškového modelu.</translation>
     </message>
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="42"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -1779,10 +2091,20 @@ není platným vymezením soustavy souřadnic
         <translation>Formulář</translation>
     </message>
     <message>
-        <location filename="../gis/IGisWidget.ui" line="59"/>
+        <location filename="../gis/IGisWidget.ui" line="62"/>
         <source>State</source>
         <translation>Stav</translation>
     </message>
+    <message>
+        <location filename="../gis/IGisWidget.ui" line="94"/>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisWidget.ui" line="127"/>
+        <source>To add a database do a right click on the database list above.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IGridSetup</name>
@@ -1831,6 +2153,41 @@ není platným vymezením soustavy souřadnic
     </message>
 </context>
 <context>
+    <name>IImportDatabase</name>
+    <message>
+        <location filename="../qlgt/IImportDatabase.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished">Formulář</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/IImportDatabase.ui" line="28"/>
+        <source>Source Database:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/IImportDatabase.ui" line="35"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="76"/>
+        <source>-</source>
+        <translation type="unfinished">-</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/IImportDatabase.ui" line="42"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="83"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/IImportDatabase.ui" line="69"/>
+        <source>Target Database:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/IImportDatabase.ui" line="102"/>
+        <source>Start</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>IInputDialog</name>
     <message>
         <location filename="../helpers/IInputDialog.ui" line="14"/>
@@ -1844,6 +2201,35 @@ není platným vymezením soustavy souřadnic
     </message>
 </context>
 <context>
+    <name>ILinksDialog</name>
+    <message>
+        <location filename="../helpers/ILinksDialog.ui" line="14"/>
+        <source>Links...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../helpers/ILinksDialog.ui" line="23"/>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../helpers/ILinksDialog.ui" line="28"/>
+        <source>Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../helpers/ILinksDialog.ui" line="33"/>
+        <source>Uri</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../helpers/ILinksDialog.ui" line="43"/>
+        <location filename="../helpers/ILinksDialog.ui" line="63"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+</context>
+<context>
     <name>IMainWindow</name>
     <message>
         <location filename="../IMainWindow.ui" line="14"/>
@@ -1873,169 +2259,198 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../IMainWindow.ui" line="101"/>
         <source>Project</source>
+        <translation>Projekt</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="111"/>
+        <source>Tool</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="121"/>
+        <location filename="../IMainWindow.ui" line="128"/>
         <source>Maps</source>
         <translation>Mapy</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="158"/>
+        <location filename="../IMainWindow.ui" line="165"/>
         <source>Dig. Elev. Model (DEM)</source>
         <translation>Digitální výškový model (DEM)</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="191"/>
+        <location filename="../IMainWindow.ui" line="198"/>
         <source>Data</source>
         <translation>Data</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="204"/>
+        <location filename="../IMainWindow.ui" line="211"/>
         <source>Add Map Workspace</source>
         <translation>Přidat pracovní oblast mapy</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="207"/>
+        <location filename="../IMainWindow.ui" line="214"/>
         <source>Ctrl+T</source>
         <translation>Ctrl+T</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="219"/>
+        <location filename="../IMainWindow.ui" line="226"/>
         <source>Show Scale</source>
         <translation>Ukázat měřítko</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="228"/>
+        <location filename="../IMainWindow.ui" line="235"/>
         <source>Setup Map Font</source>
         <translation>Nastavit písmo mapy</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="240"/>
+        <location filename="../IMainWindow.ui" line="247"/>
         <source>Show Grid</source>
         <translation>Ukázat mřížku</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="243"/>
+        <location filename="../IMainWindow.ui" line="250"/>
         <source>Ctrl+G</source>
         <translation>Ctrl+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="252"/>
+        <location filename="../IMainWindow.ui" line="259"/>
         <source>Setup Grid</source>
         <translation>Nastavit mřížku</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="255"/>
+        <location filename="../IMainWindow.ui" line="262"/>
         <source>Ctrl+Alt+G</source>
         <translation>Ctrl+Alt+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="267"/>
+        <location filename="../IMainWindow.ui" line="274"/>
         <source>Flip Mouse Wheel</source>
         <translation>Obrátit kolečko myši</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="276"/>
-        <location filename="../IMainWindow.ui" line="279"/>
+        <location filename="../IMainWindow.ui" line="283"/>
+        <location filename="../IMainWindow.ui" line="286"/>
         <source>Setup Map Paths</source>
         <translation>Nastavit cesty k mapám</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="291"/>
+        <location filename="../IMainWindow.ui" line="298"/>
         <source>POI Text</source>
         <translation>Text POI</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="303"/>
+        <location filename="../IMainWindow.ui" line="310"/>
         <source>Night / Day</source>
         <translation>Noc/Den</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="315"/>
+        <location filename="../IMainWindow.ui" line="322"/>
         <source>Map Tool Tip</source>
         <translation>Rada k nástroji pro mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="324"/>
+        <location filename="../IMainWindow.ui" line="331"/>
         <source>Setup DEM Paths</source>
         <translation>Nastavit cesty k DEM</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="333"/>
+        <location filename="../IMainWindow.ui" line="340"/>
         <source>About</source>
         <translation>O programu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="342"/>
+        <location filename="../IMainWindow.ui" line="349"/>
         <source>Help</source>
         <translation>Nápověda</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="351"/>
+        <location filename="../IMainWindow.ui" line="358"/>
         <source>Setup Map Workspace</source>
         <translation>Nastavit pracovní oblast mapy</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="360"/>
+        <location filename="../IMainWindow.ui" line="367"/>
         <source>Load GIS Data</source>
         <translation>Nahrát data GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="363"/>
+        <location filename="../IMainWindow.ui" line="370"/>
         <source>Load projects from file</source>
         <translation>Nahrát projekty ze souboru</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="366"/>
+        <location filename="../IMainWindow.ui" line="373"/>
         <source>Ctrl+L</source>
         <translation>Ctrl+L</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="375"/>
+        <location filename="../IMainWindow.ui" line="382"/>
         <source>Save All GIS Data</source>
         <translation>Uložit všechna data GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="378"/>
+        <location filename="../IMainWindow.ui" line="385"/>
         <source>Save all projects in the workspace</source>
         <translation>Uložit všechny projekty v pracovní oblasti</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="381"/>
+        <location filename="../IMainWindow.ui" line="388"/>
         <source>Ctrl+S</source>
         <translation>Ctrl+S</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="390"/>
+        <location filename="../IMainWindow.ui" line="397"/>
         <source>Setup Time Zone</source>
         <translation>Nastavit časové pásmo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="399"/>
+        <location filename="../IMainWindow.ui" line="406"/>
         <source>Add empty project</source>
-        <translation type="unfinished"></translation>
+        <translation>Přidat prázdný projekt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="411"/>
+        <location filename="../IMainWindow.ui" line="418"/>
         <source>Search Google</source>
-        <translation type="unfinished"></translation>
+        <translation>Hledat pomocí Google</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="420"/>
+        <location filename="../IMainWindow.ui" line="427"/>
         <source>Close all projects</source>
+        <translation>Zavřít všechny projekty</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="430"/>
+        <source>F8</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="429"/>
+        <location filename="../IMainWindow.ui" line="439"/>
         <source>Setup Units</source>
+        <translation>Nastavit jednotky</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="448"/>
+        <source>Setup Workspace</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="438"/>
-        <source>Setup Database</source>
+        <location filename="../IMainWindow.ui" line="451"/>
+        <source>Setup save on exit.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="460"/>
+        <source>Import Database from QLandkarte</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="463"/>
+        <source>Import QLandkarte GT database</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Setup Database</source>
+        <translation type="obsolete">Nastavit databázi</translation>
+    </message>
 </context>
 <context>
     <name>IMapList</name>
@@ -2072,13 +2487,13 @@ není platným vymezením soustavy souřadnic
         <translation>Nastavit cesty k mapám</translation>
     </message>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="38"/>
-        <location filename="../map/IMapPathSetup.ui" line="58"/>
+        <location filename="../map/IMapPathSetup.ui" line="31"/>
+        <location filename="../map/IMapPathSetup.ui" line="51"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="107"/>
+        <location filename="../map/IMapPathSetup.ui" line="93"/>
         <source>-</source>
         <translation>-</translation>
     </message>
@@ -2274,22 +2689,22 @@ nebo
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="38"/>
+        <location filename="../gis/wpt/IProjWpt.ui" line="45"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="47"/>
+        <location filename="../gis/wpt/IProjWpt.ui" line="54"/>
         <source>Clone waypoint and move by:</source>
         <translation>Klonovat cestovní bod a posunout o:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="59"/>
+        <location filename="../gis/wpt/IProjWpt.ui" line="66"/>
         <source>m</source>
         <translation>m</translation>
     </message>
     <message utf8="true">
-        <location filename="../gis/wpt/IProjWpt.ui" line="69"/>
+        <location filename="../gis/wpt/IProjWpt.ui" line="76"/>
         <source>°</source>
         <translation>°</translation>
     </message>
@@ -2302,17 +2717,17 @@ nebo
         <translation>Formulář</translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptEditLine.ui" line="50"/>
+        <location filename="../mouse/IScrOptEditLine.ui" line="47"/>
         <source>Save to orignal</source>
         <translation>Uložit do předlohy</translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptEditLine.ui" line="57"/>
+        <location filename="../mouse/IScrOptEditLine.ui" line="54"/>
         <source>Save as new</source>
         <translation>Uložit jako nový</translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptEditLine.ui" line="64"/>
+        <location filename="../mouse/IScrOptEditLine.ui" line="61"/>
         <source>Abort</source>
         <translation>Přerušit</translation>
     </message>
@@ -2484,22 +2899,27 @@ nebo
         <translation>Ukázat promítnutý profil a podrobné údaje o bodech.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="145"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="148"/>
         <source>Cut track at selected point into two tracks.</source>
         <translation>Vyjmout stopu na vybraném bodu do dvou stop.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="103"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="106"/>
         <source>Edit position of track points.</source>
         <translation>Upravit polohu bodů stopy.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="117"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="92"/>
+        <source>Select a range of points.</source>
+        <translation type="unfinished">Vybrat rozsah bodů.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="120"/>
         <source>Reverse track.</source>
         <translation>Obrátit stopu.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="131"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="134"/>
         <source>Combine tracks.</source>
         <translation>Spojit stopy.</translation>
     </message>
@@ -2511,11 +2931,11 @@ nebo
         <location filename="../gis/trk/IScrOptTrk.ui" line="43"/>
         <location filename="../gis/trk/IScrOptTrk.ui" line="57"/>
         <location filename="../gis/trk/IScrOptTrk.ui" line="74"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="92"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="106"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="120"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="134"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="148"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="95"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="109"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="123"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="137"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="151"/>
         <source>...</source>
         <translation>...</translation>
     </message>
@@ -2524,7 +2944,7 @@ nebo
         <translation type="obsolete"><html><head/><body><p>Smazat</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="174"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="177"/>
         <source>TextLabel</source>
         <translation>Textový štítek</translation>
     </message>
@@ -2589,51 +3009,130 @@ nebo
     <message>
         <location filename="../helpers/ISelectProjectDialog.ui" line="36"/>
         <source>New project is created as:</source>
-        <translation type="unfinished"></translation>
+        <translation>Nový projekt je vytvořen jako:</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectProjectDialog.ui" line="73"/>
         <source>*.qms</source>
-        <translation type="unfinished"></translation>
+        <translation>*.qms</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectProjectDialog.ui" line="83"/>
         <source>*.gpx</source>
-        <translation type="unfinished"></translation>
+        <translation>*.gpx</translation>
     </message>
 </context>
 <context>
     <name>ISetupDB</name>
     <message>
-        <location filename="../gis/db/ISetupDB.ui" line="14"/>
         <source>Setup database...</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Nastavit databázi...</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDB.ui" line="35"/>
         <source>save workspace on exit, and every</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Uložit pracovní oblast při ukončení, a každých</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDB.ui" line="45"/>
         <source>minutes</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">minut</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDB.ui" line="62"/>
         <source>Database path</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Cesta k databázi</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDB.ui" line="69"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation type="obsolete">...</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDB.ui" line="92"/>
+        <source>-</source>
+        <translation type="obsolete">-</translation>
+    </message>
+</context>
+<context>
+    <name>ISetupDatabase</name>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="14"/>
+        <source>Add database...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="25"/>
+        <source>File</source>
+        <translation type="unfinished">Soubor</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="32"/>
         <source>-</source>
         <translation type="unfinished">-</translation>
     </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="39"/>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="46"/>
+        <source>Add new database.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="49"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="63"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="60"/>
+        <source>Open existing database.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ISetupFolder</name>
+    <message>
+        <location filename="../gis/db/ISetupFolder.ui" line="14"/>
+        <source>Folder...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupFolder.ui" line="22"/>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupFolder.ui" line="34"/>
+        <source>Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupFolder.ui" line="45"/>
+        <source>Project</source>
+        <translation type="unfinished">Projekt</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupFolder.ui" line="59"/>
+        <source>Other</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ISetupWorkspace</name>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="14"/>
+        <source>Setup database...</source>
+        <translation type="unfinished">Nastavit databázi...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="35"/>
+        <source>save workspace on exit, and every</source>
+        <translation type="unfinished">Uložit pracovní oblast při ukončení, a každých</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="45"/>
+        <source>minutes</source>
+        <translation type="unfinished">minut</translation>
+    </message>
 </context>
 <context>
     <name>ITextEditWidget</name>
@@ -2644,7 +3143,7 @@ nebo
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="14"/>
         <source>Edit text...</source>
-        <translation type="unfinished"></translation>
+        <translation>Upravit text...</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="25"/>
@@ -2812,22 +3311,22 @@ nebo
     <message>
         <location filename="../units/IUnitsSetup.ui" line="14"/>
         <source>Setup units...</source>
-        <translation type="unfinished"></translation>
+        <translation>Nastavit jednotky...</translation>
     </message>
     <message>
         <location filename="../units/IUnitsSetup.ui" line="22"/>
         <source>Metric</source>
-        <translation type="unfinished"></translation>
+        <translation>Metrické</translation>
     </message>
     <message>
         <location filename="../units/IUnitsSetup.ui" line="29"/>
         <source>Imperial</source>
-        <translation type="unfinished"></translation>
+        <translation>Anglické</translation>
     </message>
     <message>
         <location filename="../units/IUnitsSetup.ui" line="36"/>
         <source>Nautic</source>
-        <translation type="unfinished"></translation>
+        <translation>Nautické</translation>
     </message>
 </context>
 <context>
@@ -2871,42 +3370,68 @@ line %2, column %3:
         <translation>Není souborem GPX: </translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="112"/>
         <source>
 Filename: %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">
+Název souboru: %1</translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="128"/>
         <source>
 Waypoints: %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">
+Cestovní body: %1</translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="132"/>
         <source>
 Tracks: %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">
+Stopy: %1</translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="136"/>
         <source>
 Routes: %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">
+Cesty: %1</translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="140"/>
         <source>
 Areas: %1</source>
+        <translation type="obsolete">
+Oblasti: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="163"/>
+        <source><br/>
+Filename: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="180"/>
+        <source>Waypoints: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="184"/>
+        <source>Tracks: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="188"/>
+        <source>Routes: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="197"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="192"/>
+        <source>Areas: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="250"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
         <translation>Jste si jistý, že chcete smazat '%1' z projektu '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="198"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="251"/>
         <source>Delete...</source>
         <translation>Smazat...</translation>
     </message>
@@ -2915,22 +3440,33 @@ Areas: %1</source>
         <location filename="../gis/qms/CQmsProject.cpp" line="47"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="135"/>
         <source>Failed to open...</source>
-        <translation type="unfinished"></translation>
+        <translation>Nepodařilo se otevřít...</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="53"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="47"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="135"/>
         <source>Failed to open %1</source>
-        <translation type="unfinished">Nepodařilo se otevřít %1</translation>
+        <translation>Nepodařilo se otevřít %1</translation>
     </message>
     <message>
+        <location filename="../gis/db/CDBProject.cpp" line="124"/>
         <location filename="../gis/gpx/CGpxProject.cpp" line="151"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="90"/>
         <source>Save GIS data to...</source>
         <translation>Uložit data GIS do...</translation>
     </message>
     <message>
+        <location filename="../gis/db/CDBProject.cpp" line="153"/>
+        <source>Save ...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="153"/>
+        <source>Abort save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="222"/>
         <source>File exists ...</source>
         <translation>Soubor existuje...</translation>
@@ -2957,117 +3493,151 @@ Areas: %1</source>
         <translation>Nepodařilo se zapsat soubor '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="239"/>
+        <location filename="../gis/IGisItem.cpp" line="284"/>
         <source>Initial version.</source>
-        <translation type="unfinished"></translation>
+        <translation>Počáteční verze.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="319"/>
+        <location filename="../gis/IGisItem.cpp" line="368"/>
         <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="320"/>
+        <location filename="../gis/IGisItem.cpp" line="369"/>
         <source>Read Only Mode...</source>
         <translation>Režim pouze pro čtení...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="319"/>
+        <location filename="../gis/IGisItem.cpp" line="558"/>
+        <source><h4>Comment:</h4></source>
+        <translation type="unfinished"><h4>Poznámka:</h4></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="561"/>
+        <source><p>--- no comment ---</p></source>
+        <translation type="unfinished"><p>--- žádná poznámka ---</p></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="568"/>
+        <location filename="../gis/IGisItem.cpp" line="598"/>
+        <source><h4>Description:</h4></source>
+        <translation type="unfinished"><h4>Popis:</h4></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="571"/>
+        <location filename="../gis/IGisItem.cpp" line="601"/>
+        <source><p>--- no description ---</p></source>
+        <translation type="unfinished"><p>--- žádný popis ---</p></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="578"/>
+        <location filename="../gis/IGisItem.cpp" line="608"/>
+        <source><h4>Links:</h4></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="581"/>
+        <location filename="../gis/IGisItem.cpp" line="611"/>
+        <source><p>--- no links ---</p></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="328"/>
         <source>Length: %1 %2</source>
         <translation>Délka: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="326"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="335"/>
         <source>, %1%2 %3, %4%5 %6</source>
         <translation>, %1%2 %3, %4%5 %6</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="334"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="343"/>
         <source>Time: %1</source>
         <translation>Čas: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="337"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="347"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="346"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="356"/>
         <source>, Speed: %1 %2</source>
         <translation>, Rychlost: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="344"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="353"/>
         <source>Moving: %1</source>
         <translation>Pohyb: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="353"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="362"/>
         <source>Start: %1</source>
         <translation>Začátek: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="358"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="367"/>
         <source>End: %1</source>
         <translation>Konec: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="362"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="371"/>
         <source>Points: %1 (%2)</source>
         <translation>Body: %1 (%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="427"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="436"/>
         <source>Ele.: %1 %2</source>
         <translation>Výška: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="430"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="439"/>
         <source> slope: %1%3 (%2%)</source>
-        <translation type="unfinished"></translation>
+        <translation> sklon: %1%3 (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="940"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="950"/>
         <source>Hide points.</source>
-        <translation type="unfinished"></translation>
+        <translation>Skrýt body.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="974"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="984"/>
         <source>Show points.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ukázat body.</translation>
     </message>
     <message>
         <source> slope: %1°(%2%)</source>
         <translation type="obsolete"> sklon: %1°(%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="435"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="444"/>
         <source> speed: %1%2</source>
         <translation> rychlost: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="447"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="456"/>
         <source>Ascend: %1%2 (%3%)</source>
         <translation>Stoupání: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="451"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="460"/>
         <source>Ascend: - (-)</source>
         <translation>Stoupání: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="461"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="470"/>
         <source> Descend: - (-) </source>
         <translation> Klesání: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="482"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="491"/>
         <source> Moving: - (-) </source>
         <translation> Pohyb: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="457"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="466"/>
         <source> Descend: %1%2 (%3%)</source>
         <translation> Klesání: %1%2 (%3%) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="253"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="261"/>
         <source>Changed trackpoints, sacrificed all previous data.</source>
         <translation>Změněny body stop. Obětována veškerá předchozí data.</translation>
     </message>
@@ -3076,143 +3646,155 @@ Areas: %1</source>
         <translation type="obsolete"> sklon: %1° (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="468"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="477"/>
         <source>Dist.: %1%2 (%3%)</source>
         <translation>Vzdálenost: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="472"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="481"/>
         <source>Dist.: - (-)</source>
         <translation>Vzdálenost: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="478"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="487"/>
         <source> Moving: %1%2 (%3%)</source>
         <translation> Pohyb: %1%2 (%3%) </translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="94"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="95"/>
         <source>thin</source>
         <translation>Tenký</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="95"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="96"/>
         <source>normal</source>
         <translation>Obvyklý</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="96"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="97"/>
         <source>wide</source>
         <translation>Široký</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="97"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="98"/>
         <source>strong</source>
         <translation>Silný</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="418"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="400"/>
+        <source>Area: %1%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="452"/>
         <source>Changed area shape.</source>
         <translation>Změněn tvar oblasti.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="426"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="460"/>
         <source>Changed name.</source>
         <translation>Změněn název.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="432"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="466"/>
         <source>Changed border width.</source>
         <translation>Změněna šířka okraje.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="438"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="472"/>
         <source>Changed fill pattern.</source>
         <translation>Změněn vzor výplně.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="444"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="478"/>
         <source>Changed opacity.</source>
         <translation>Změněna neprůhlednost.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="450"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="484"/>
         <source>Changed comment.</source>
         <translation>Změněna poznámka.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="456"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="490"/>
         <source>Changed description.</source>
         <translation>Změněn popis.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="468"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1284"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="496"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1289"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="341"/>
+        <source>Changed links</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="508"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1301"/>
         <source>Changed color</source>
         <translation>Změněná barva</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="211"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="219"/>
         <source>Elevation: %1 %2</source>
         <translation>Výška: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="219"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="227"/>
         <source>Proximity: %1 %2</source>
         <translation>Blízkost: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1261"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="284"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1271"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="292"/>
         <source>Changed name</source>
         <translation>Změněný název</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="803"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="811"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="829"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="872"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="999"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="165"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="813"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="821"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="839"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="882"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1009"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="173"/>
         <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
         <source>Edit name...</source>
         <translation>Upravit název...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="165"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="173"/>
         <source>Enter new waypoint name.</source>
         <translation>Zadat nový název pro cestovní bod.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="291"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="299"/>
         <source>Changed position</source>
         <translation>Změněná poloha</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="297"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="305"/>
         <source>Changed elevation</source>
         <translation>Změněná výška</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="303"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="311"/>
         <source>Changed proximity</source>
         <translation>Změněná blízkost</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="315"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="323"/>
         <source>Changed icon</source>
         <translation>Změněná ikona</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1267"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="321"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1277"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="329"/>
         <source>Changed comment</source>
         <translation>Změněná poznámka</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1273"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="327"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1283"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="335"/>
         <source>Changed description</source>
         <translation>Změněný popis</translation>
     </message>
@@ -3248,11 +3830,11 @@ Areas: %1</source>
         <translation>Toto je souborový typ s neznámým druhem čáry. Nahlašte to, prosím!</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="803"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="811"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="829"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="872"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="999"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="813"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="821"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="839"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="882"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1009"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
         <source>Enter new track name.</source>
         <translation>Zadat název nové stopy.</translation>
@@ -3260,6 +3842,52 @@ Areas: %1</source>
     <message>
         <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
         <source>Enter new area name.</source>
+        <translation>Zadat název nové oblasti.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderDatabase.cpp" line="26"/>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="28"/>
+        <source>All your data grouped by folders.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="29"/>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="63"/>
+        <source>Lost & Found</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="58"/>
+        <source>Lost & Found (%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/converter.cpp" line="196"/>
+        <source>Copy flag information from QLandkarte GT track</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="158"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="212"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="259"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="285"/>
+        <source>Corrupt track ...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="158"/>
+        <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="212"/>
+        <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="259"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="285"/>
+        <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/locale/qmapshack_de.ts b/src/locale/qmapshack_de.ts
index 6a9847a..3df4860 100644
--- a/src/locale/qmapshack_de.ts
+++ b/src/locale/qmapshack_de.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.1" language="de_DE">
+<TS version="2.0" language="de_DE">
 <context>
     <name>CCanvas</name>
     <message>
@@ -41,7 +41,7 @@
         <location filename="../dem/CDemVRT.cpp" line="44"/>
         <location filename="../dem/CDemVRT.cpp" line="51"/>
         <location filename="../dem/CDemVRT.cpp" line="60"/>
-        <location filename="../dem/CDemVRT.cpp" line="84"/>
+        <location filename="../dem/CDemVRT.cpp" line="87"/>
         <source>Error...</source>
         <translation>Fehler...</translation>
     </message>
@@ -58,10 +58,10 @@
     </message>
     <message>
         <source>DEM must have one band with 16 bit or 32 bit data.</source>
-        <translation type="vanished">Das DEM muss aus einem Satz mit 16 bit oder 32 bit Daten bestehen.</translation>
+        <translation type="obsolete">Das DEM muss aus einem Satz mit 16 bit oder 32 bit Daten bestehen.</translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="84"/>
+        <location filename="../dem/CDemVRT.cpp" line="87"/>
         <source>No georeference information found.</source>
         <translation>Keine Georeferenzierung gefunden.</translation>
     </message>
@@ -94,19 +94,48 @@
     </message>
     <message>
         <source><h4>Comment:</h4></source>
-        <translation type="vanished"><h4>Kommentar:</h4></translation>
+        <translation type="obsolete"><h4>Kommentar:</h4></translation>
     </message>
     <message>
         <source><p>--- no comment ---</p></source>
-        <translation type="vanished"><p>--- kein Kommentar ---</p></translation>
+        <translation type="obsolete"><p>--- kein Kommentar ---</p></translation>
     </message>
     <message>
         <source><h4>Description:</h4></source>
-        <translation type="vanished"><h4>Beschreibung:</h4></translation>
+        <translation type="obsolete"><h4>Beschreibung:</h4></translation>
     </message>
     <message>
         <source><p>--- no description ---</p></source>
-        <translation type="vanished"><p>--- keine Beschreibung ---</p></translation>
+        <translation type="obsolete"><p>--- keine Beschreibung ---</p></translation>
+    </message>
+</context>
+<context>
+    <name>CDetailsPrj</name>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="56"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="84"/>
+        <source>none</source>
+        <translation>keine</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="70"/>
+        <source>Edit name...</source>
+        <translation>Name bearbeiten...</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="70"/>
+        <source>Enter new project name.</source>
+        <translation>Geben Sie einen neuen Projektnamen ein.</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="79"/>
+        <source>Edit keywords...</source>
+        <translation>Schlagwörter bearbeiten...</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="79"/>
+        <source>Enter keywords.</source>
+        <translation>Geben Sie einen neue Schlagwörter an.</translation>
     </message>
 </context>
 <context>
@@ -123,46 +152,46 @@
     </message>
     <message>
         <source><h4>Comment:</h4></source>
-        <translation type="vanished"><h4>Kommentar:</h4></translation>
+        <translation type="obsolete"><h4>Kommentar:</h4></translation>
     </message>
     <message>
         <source><p>--- no comment ---</p></source>
-        <translation type="vanished"><p>--- kein Kommentar ---</p></translation>
+        <translation type="obsolete"><p>--- kein Kommentar ---</p></translation>
     </message>
     <message>
         <source><h4>Description:</h4></source>
-        <translation type="vanished"><h4>Beschreibung:</h4></translation>
+        <translation type="obsolete"><h4>Beschreibung:</h4></translation>
     </message>
     <message>
         <source><p>--- no description ---</p></source>
-        <translation type="vanished"><p>--- keine Beschreibung ---</p></translation>
+        <translation type="obsolete"><p>--- keine Beschreibung ---</p></translation>
     </message>
 </context>
 <context>
     <name>CDetailsWpt</name>
     <message>
         <source>no comment</source>
-        <translation type="vanished">kein Kommentar vorhanden</translation>
+        <translation type="obsolete">kein Kommentar vorhanden</translation>
     </message>
     <message>
         <source>no description</source>
-        <translation type="vanished">keine Beschreibung vorhanden</translation>
+        <translation type="obsolete">keine Beschreibung vorhanden</translation>
     </message>
     <message>
         <source><h4>Comment:</h4></source>
-        <translation type="vanished"><h4>Kommentar:</h4></translation>
+        <translation type="obsolete"><h4>Kommentar:</h4></translation>
     </message>
     <message>
         <source><p>--- no comment ---</p></source>
-        <translation type="vanished"><p>--- kein Kommentar ---</p></translation>
+        <translation type="obsolete"><p>--- kein Kommentar ---</p></translation>
     </message>
     <message>
         <source><h4>Description:</h4></source>
-        <translation type="vanished"><h4>Beschreibung:</h4></translation>
+        <translation type="obsolete"><h4>Beschreibung:</h4></translation>
     </message>
     <message>
         <source><p>--- no description ---</p></source>
-        <translation type="vanished"><p>--- keine Beschreibung ---</p></translation>
+        <translation type="obsolete"><p>--- keine Beschreibung ---</p></translation>
     </message>
     <message>
         <location filename="../gis/wpt/CDetailsWpt.cpp" line="130"/>
@@ -176,7 +205,7 @@
     </message>
     <message>
         <source>Enter new elevation.</source>
-        <translation type="vanished">Geben Sie eine Höhe ein.</translation>
+        <translation type="obsolete">Geben Sie eine Höhe ein.</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CDetailsWpt.cpp" line="149"/>
@@ -193,104 +222,181 @@
     </message>
 </context>
 <context>
+    <name>CGisListDB</name>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="74"/>
+        <source>Add Database</source>
+        <translation>Datenbank hinzufügen</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="77"/>
+        <source>Add Folder</source>
+        <translation>Ordner hinzufügen</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="78"/>
+        <source>Delete Folder</source>
+        <translation>Ordner löschen</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="82"/>
+        <source>Remove Database</source>
+        <translation>Datenbank entfernen</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="85"/>
+        <source>Empty</source>
+        <translation>Leeren</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="228"/>
+        <source>Remove database...</source>
+        <translation>Datenbank entfernen...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="228"/>
+        <source>Do you realy want to remove '%1' from the list?</source>
+        <translation>Sind Sie sicher, dass Sie die Datenbank '%1' entfernen wollen?</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="269"/>
+        <source>Delete database folder...</source>
+        <translation>Datenbankordner löschen... </translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="269"/>
+        <source>Are you sure you want to delete "%1" from the database?</source>
+        <translation>Sind Sie sicher, dass Sie den Ordner "%1" aus der Datenbank löschen wollen?</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="295"/>
+        <source>Remove items...</source>
+        <translation>Elemente entfernen...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="295"/>
+        <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
+        <translation>Sind Sie sicher, dass Sie alle Elemente aus Verloren&Gefunden löschen wollen? Das wird die Eelemente für immer löschen.</translation>
+    </message>
+</context>
+<context>
     <name>CGisListWks</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="48"/>
+        <location filename="../gis/CGisListWks.cpp" line="81"/>
         <source>Save</source>
         <translation>Speichern</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="47"/>
+        <location filename="../gis/CGisListWks.cpp" line="80"/>
         <source>Save As...</source>
         <translation>Speichern als...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="49"/>
+        <location filename="../gis/CGisListWks.cpp" line="82"/>
+        <source>Edit..</source>
+        <translation>Ändern...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="83"/>
         <source>Close</source>
         <translation>Schließen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="55"/>
+        <location filename="../gis/CGisListWks.cpp" line="89"/>
         <source>Edit...</source>
         <translation>Ändern...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="56"/>
+        <location filename="../gis/CGisListWks.cpp" line="90"/>
         <source>Move Waypoint</source>
         <translation>Wegpunkt verschieben</translation>
     </message>
     <message>
         <source>Move Waypoint...</source>
-        <translation type="vanished">Wegpunkt verschieben...</translation>
+        <translation type="obsolete">Wegpunkt verschieben...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="57"/>
+        <location filename="../gis/CGisListWks.cpp" line="91"/>
         <source>Proj. Waypoint...</source>
         <translation>Wegpunkt Projektion...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="58"/>
+        <location filename="../gis/CGisListWks.cpp" line="92"/>
         <source>Track Profile</source>
         <translation>Trackprofil</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="59"/>
+        <location filename="../gis/CGisListWks.cpp" line="93"/>
         <source>Select Range</source>
         <translation>Bereich wählen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="60"/>
+        <location filename="../gis/CGisListWks.cpp" line="94"/>
         <source>Edit Track Points</source>
         <translation>Wegpunkte bearbeiten</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="61"/>
+        <location filename="../gis/CGisListWks.cpp" line="95"/>
         <source>Reverse Track</source>
         <translation>Track umkehren</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="62"/>
+        <location filename="../gis/CGisListWks.cpp" line="96"/>
         <source>Combine Tracks</source>
         <translation>Tracks verbinden</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="63"/>
+        <location filename="../gis/CGisListWks.cpp" line="97"/>
         <source>Edit Area Points</source>
         <translation>Flächenpunkte bearbeiten</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="66"/>
+        <location filename="../gis/CGisListWks.cpp" line="100"/>
         <source>Delete</source>
         <translation>Löschen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="400"/>
+        <location filename="../gis/CGisListWks.cpp" line="621"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Ansicht speichern. Bitte warten.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="441"/>
+        <location filename="../gis/CGisListWks.cpp" line="662"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Ansicht laden. Bitte warten.</translation>
     </message>
     <message>
+        <location filename="../gis/CGisListWks.cpp" line="1070"/>
+        <source>Close all projects...</source>
+        <translation>Alle Projekte schließen...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="1070"/>
+        <source>This will remove all projects from the workspace.</source>
+        <translation>Hiermit werden alle Projekte aus dem Arbeitsplatz entfernt.</translation>
+    </message>
+    <message>
         <source>Add Empty Project</source>
-        <translation type="vanished">Leeres Projekt hinzufügen</translation>
+        <translation type="obsolete">Leeres Projekt hinzufügen</translation>
     </message>
     <message>
         <source>New Project</source>
-        <translation type="vanished">Neues Projekt</translation>
+        <translation type="obsolete">Neues Projekt</translation>
     </message>
 </context>
 <context>
     <name>CGrid</name>
     <message>
-        <location filename="../grid/CGrid.cpp" line="61"/>
         <source>[Grid: %1] </source>
-        <translation>[Gitter: %1]</translation>
+        <translation type="obsolete">[Gitter: %1]</translation>
     </message>
     <message>
-        <location filename="../grid/CGrid.cpp" line="65"/>
+        <location filename="../grid/CGrid.cpp" line="62"/>
+        <source>[Grid: %1%2%5 %3%4%5] </source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../grid/CGrid.cpp" line="66"/>
         <source>[Grid: N %1m, E %2m] </source>
         <translation>[Gitter: N %1m, E %2m]</translation>
     </message>
@@ -304,14 +410,40 @@
     </message>
 </context>
 <context>
+    <name>CImportDatabase</name>
+    <message>
+        <location filename="../qlgt/CImportDatabase.cpp" line="29"/>
+        <source>Import QLandkarte Database</source>
+        <translation>QLandkarte Datenbank importieren</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CImportDatabase.cpp" line="74"/>
+        <source>Select source database...</source>
+        <translation>Wählen Sie die Quelldatenbank aus...</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CImportDatabase.cpp" line="95"/>
+        <source>Select target database...</source>
+        <translation>Wählen Sie die Zieldatenbank aus...</translation>
+    </message>
+    <message>
+        <source>Select source databse...</source>
+        <translation type="obsolete">Wählen Sie die Quelldatenbank aus...</translation>
+    </message>
+    <message>
+        <source>Select target databse...</source>
+        <translation type="obsolete">Wählen Sie die Zieldatenbank aus...</translation>
+    </message>
+</context>
+<context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="444"/>
+        <location filename="../CMainWindow.cpp" line="441"/>
         <source>Ele: %1%2</source>
         <translation>Höhe: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="559"/>
+        <location filename="../CMainWindow.cpp" line="562"/>
         <source>Load GIS Data...</source>
         <translation>Lade GIS Daten...</translation>
     </message>
@@ -919,31 +1051,31 @@
         <translation>Die Datei hat das NT Format. QMapShack kann dieses Format nicht lesen:</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="713"/>
+        <location filename="../map/CMapIMG.cpp" line="727"/>
         <source>File contains locked / encypted data. Garmin does not want you to use this file with any other software than the one supplied by Garmin.</source>
         <translation>Die Datei enthält verschlüsselte Daten. Garmin möchte nicht dass diese Datei mit einer anderen Software, als der von Garmin bereitgestellten, benützt wird.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2363"/>
-        <location filename="../map/CMapIMG.cpp" line="2371"/>
-        <location filename="../map/CMapIMG.cpp" line="2375"/>
-        <location filename="../map/CMapIMG.cpp" line="2380"/>
-        <location filename="../map/CMapIMG.cpp" line="2427"/>
-        <location filename="../map/CMapIMG.cpp" line="2435"/>
-        <location filename="../map/CMapIMG.cpp" line="2439"/>
-        <location filename="../map/CMapIMG.cpp" line="2444"/>
+        <location filename="../map/CMapIMG.cpp" line="2377"/>
+        <location filename="../map/CMapIMG.cpp" line="2385"/>
+        <location filename="../map/CMapIMG.cpp" line="2389"/>
+        <location filename="../map/CMapIMG.cpp" line="2394"/>
+        <location filename="../map/CMapIMG.cpp" line="2441"/>
+        <location filename="../map/CMapIMG.cpp" line="2449"/>
+        <location filename="../map/CMapIMG.cpp" line="2453"/>
+        <location filename="../map/CMapIMG.cpp" line="2458"/>
         <source>Point of Interest</source>
         <translation>Ort von Interesse</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2569"/>
+        <location filename="../map/CMapIMG.cpp" line="2583"/>
         <source>Unknown</source>
         <translation>Unbekannt</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2616"/>
-        <location filename="../map/CMapIMG.cpp" line="2625"/>
-        <location filename="../map/CMapIMG.cpp" line="2632"/>
+        <location filename="../map/CMapIMG.cpp" line="2630"/>
+        <location filename="../map/CMapIMG.cpp" line="2639"/>
+        <location filename="../map/CMapIMG.cpp" line="2646"/>
         <source>Area</source>
         <translation>Gebiet</translation>
     </message>
@@ -1072,7 +1204,7 @@ Zeile %2, Spalte %3:
     </message>
     <message>
         <source>--- All ---</source>
-        <translation type="vanished">--- Alle ---</translation>
+        <translation type="obsolete">--- Alle ---</translation>
     </message>
     <message>
         <location filename="../map/CMapTMS.cpp" line="288"/>
@@ -1146,7 +1278,7 @@ Unbekannte Struktur.</translation>
     </message>
     <message>
         <source>--- All ---</source>
-        <translation type="vanished">--- Alle ---</translation>
+        <translation type="obsolete">--- Alle ---</translation>
     </message>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="385"/>
@@ -1155,11 +1287,11 @@ Unbekannte Struktur.</translation>
     </message>
     <message>
         <source>%1: %2 tiles pending</source>
-        <translation type="vanished">%1: %2 unerledigte Kacheln</translation>
+        <translation type="obsolete">%1: %2 unerledigte Kacheln</translation>
     </message>
     <message>
         <source>Unexpexted service. 'OGC WMTS 1.0.0' is expected. '%1 %2' is read.</source>
-        <translation type="vanished">Unerwarterter Dienst. 'OGC WMTS 1.0.0' Wird erwartet. '%1 %2' wird gelesen.</translation>
+        <translation type="obsolete">Unerwarterter Dienst. 'OGC WMTS 1.0.0' Wird erwartet. '%1 %2' wird gelesen.</translation>
     </message>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="198"/>
@@ -1179,19 +1311,19 @@ Unbekannte Struktur.</translation>
     <name>CMouseEditLine</name>
     <message>
         <source>Add points?</source>
-        <translation type="vanished">Punkte hinzufügen?</translation>
+        <translation type="obsolete">Punkte hinzufügen?</translation>
     </message>
     <message>
         <source>Add points to temporary line?</source>
-        <translation type="vanished">Punkte zur temporären Linie hinzufügen?</translation>
+        <translation type="obsolete">Punkte zur temporären Linie hinzufügen?</translation>
     </message>
     <message>
         <source>Warning!</source>
-        <translation type="vanished">Warnung!</translation>
+        <translation type="obsolete">Warnung!</translation>
     </message>
     <message>
         <source>This will replace all data of the orignal by a simple line of coordinates. All other data will be lost permanently.</source>
-        <translation type="vanished">Alle ursprünglichen Daten werden durch eine einfache Koordinatenlinie ersetzt. Alle anderen Daten sind dauerhaft verloren.</translation>
+        <translation type="obsolete">Alle ursprünglichen Daten werden durch eine einfache Koordinatenlinie ersetzt. Alle anderen Daten sind dauerhaft verloren.</translation>
     </message>
 </context>
 <context>
@@ -1330,6 +1462,153 @@ ist keine gültige Koordinatensystemdefinition:
     </message>
 </context>
 <context>
+    <name>CQlgtDb</name>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="304"/>
+        <source>Migrating database from version 4 to 5.</source>
+        <translation>Führe Datenbank von Version 4 zu Version 5 über.</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="357"/>
+        <source>Migrating database from version 5 to 6.</source>
+        <translation>Führe Datenbank von Version 5 zu Version 6 über.</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="414"/>
+        <source>Migrating database from version 6 to 7.</source>
+        <translation>Führe Datenbank von Version 6 zu Version 7 über.</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="480"/>
+        <source>Migrating database from version 7 to 8.</source>
+        <translation>Führe Datenbank von Version 7 zu Version 8 über.</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="509"/>
+        <source>Migrating database from version 8 to 9.</source>
+        <translation>Führe Datenbank von Version 8 zu Version 9 über.</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="532"/>
+        <source>Open database: %1</source>
+        <translation>Öffne Datenbank: %1</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="541"/>
+        <source>Folders:          %1</source>
+        <translation>Ordner:.          %1</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="550"/>
+        <source>Tracks:           %1</source>
+        <translation>Tracks:           %1</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="558"/>
+        <source>Routes:           %1 (Only the basic route will be copied)</source>
+        <translation>Routen:           %1 (Nur die Basisroute wird kopiert)</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="566"/>
+        <source>Waypoints:        %1</source>
+        <translation>Wegpunkte:        %1</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="574"/>
+        <source>Overlays:         %1 (only area overlays will be converted to QMapShack)</source>
+        <translation>Overlays:         %1 (nur Flächen werden konvertiert)</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="581"/>
+        <source>Diaries:          %1</source>
+        <translation>Tagebuch:         %1</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="588"/>
+        <source>Map selections:   %1 (can't be converted to QMapShack)</source>
+        <translation>Kartenauswahl:   %1 (kann nicht konvertiert werden)</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="594"/>
+        <source>------ Start to convert database to %1------</source>
+        <translation>------ Start der Konvertierung der Datenbank zu %1------</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="598"/>
+        <source>Failed to create target database.</source>
+        <translation>Die Zieldatenbank konnte nicht angelegt werden.</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="599"/>
+        <source>------ Abort ------</source>
+        <translation>------ Abbruch ------</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="627"/>
+        <source>------ Done ------</source>
+        <translation>------ Fertig ------</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="636"/>
+        <source>Restore folders...</source>
+        <translation>Ordner wiederherstellen...</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="636"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="669"/>
+        <source>Abort</source>
+        <translation>Abbrechen</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="663"/>
+        <source>Imported %1 folders and %2 diaries</source>
+        <translation>%1 Ordner und %2 Tagebücher wurden imortiert</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="669"/>
+        <source>Copy items...</source>
+        <translation>Elemente kopieren...</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="694"/>
+        <source>Imported %1 tracks, %2 waypoints, %3 routes, %4 areas</source>
+        <translation>%1 Tracks, %2 Wegpunkte, %3 Routen, %4 Flächen wurden importiert</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="695"/>
+        <source>Import folders...</source>
+        <translation>Ordner importieren...</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="747"/>
+        <source>Overlay of type '%1' cant be converted</source>
+        <translation>Overlay des Typs '%1' kann nicht konvertiert werden</translation>
+    </message>
+</context>
+<context>
+    <name>CQmsDb</name>
+    <message>
+        <location filename="../qlgt/CQmsDb.cpp" line="46"/>
+        <source>Existing file...</source>
+        <translation>Datei existiert...</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQmsDb.cpp" line="46"/>
+        <source>Remove existing %1?</source>
+        <translation>Existierende Datei %1 löschen?</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQmsDb.cpp" line="51"/>
+        <source>Remove existing file %1</source>
+        <translation>Existierende Datei %1 gelöscht</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQmsDb.cpp" line="158"/>
+        <source>%1: drop item with QLGT DB ID %2</source>
+        <translation>%1: Eintrag %2 aus der QLGT Datenbank geht verloren</translation>
+    </message>
+</context>
+<context>
     <name>CSearchGoogle</name>
     <message>
         <location filename="../gis/search/CSearchGoogle.cpp" line="120"/>
@@ -1345,19 +1624,52 @@ ist keine gültige Koordinatensystemdefinition:
 <context>
     <name>CSetupDB</name>
     <message>
-        <location filename="../gis/db/CSetupDB.cpp" line="55"/>
         <source>Setup database...</source>
-        <translation>Datenbank einrichten...</translation>
+        <translation type="obsolete">Datenbank einrichten...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDB.cpp" line="55"/>
         <source>Changes will become active after an application's restart.</source>
-        <translation>Änderungen werden nach Neustart der Anwendung aktiv.</translation>
+        <translation type="obsolete">Änderungen werden nach Neustart der Anwendung aktiv.</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDB.cpp" line="63"/>
         <source>Select database path...</source>
-        <translation>Datenbankpfad w#ählen...</translation>
+        <translation type="obsolete">Datenbankpfad w#ählen...</translation>
+    </message>
+</context>
+<context>
+    <name>CSetupDatabase</name>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="71"/>
+        <source>Error...</source>
+        <translation>Fehler...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="71"/>
+        <source>There is already a database with name '%1'</source>
+        <translation>Es gibt schon eine Datenbank mit dem namen '%1'</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="85"/>
+        <source>New database...</source>
+        <translation>Neue Datenbank...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="110"/>
+        <source>Open database...</source>
+        <translation>Datenbank öffnen...</translation>
+    </message>
+</context>
+<context>
+    <name>CSetupWorkspace</name>
+    <message>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="52"/>
+        <source>Setup database...</source>
+        <translation>Datenbank einrichten...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="52"/>
+        <source>Changes will become active after an application's restart.</source>
+        <translation>Änderungen werden nach einem Neustart der Anwendung erst aktiv.</translation>
     </message>
 </context>
 <context>
@@ -1408,7 +1720,7 @@ ist keine gültige Koordinatensystemdefinition:
         <source>This software is licensed under GPL3 or any later version</source>
         <translation>Diese Software steht unter der GPL3 Lizenz (oder spätere Versionen)</translation>
     </message>
-    <message>
+    <message utf8="true">
         <location filename="../IAbout.ui" line="145"/>
         <source>© 2014 Oliver Eichler (oliver.eichler at gmx.de)</source>
         <translation></translation>
@@ -1456,13 +1768,13 @@ ist keine gültige Koordinatensystemdefinition:
         <translation>Pfad für die DEM Dateien setzen</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPathSetup.ui" line="38"/>
-        <location filename="../dem/IDemPathSetup.ui" line="58"/>
+        <location filename="../dem/IDemPathSetup.ui" line="31"/>
+        <location filename="../dem/IDemPathSetup.ui" line="51"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPathSetup.ui" line="107"/>
+        <location filename="../dem/IDemPathSetup.ui" line="112"/>
         <source>-</source>
         <translation></translation>
     </message>
@@ -1591,52 +1903,72 @@ ist keine gültige Koordinatensystemdefinition:
         <translation>Dialog</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="37"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="44"/>
         <source>-</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="75"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="82"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="105"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="112"/>
         <source>Color</source>
         <translation>Farbe</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="126"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="133"/>
         <source>Border width</source>
         <translation>Rahmenbreite</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="140"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="147"/>
         <source>Style</source>
         <translation>Stil</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="159"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="166"/>
         <source>Opacity</source>
         <translation>Deckkraft</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="179"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="186"/>
         <source>Points</source>
         <translation>Punkte</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="206"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="213"/>
         <source>Position</source>
         <translation>Position</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="215"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="222"/>
         <source>Hist.</source>
         <translation>Hist.</translation>
     </message>
 </context>
 <context>
+    <name>IDetailsPrj</name>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="44"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="51"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="75"/>
+        <source>-</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="68"/>
+        <source>Keywords:</source>
+        <translation>Schlagwörter:</translation>
+    </message>
+</context>
+<context>
     <name>IDetailsTrk</name>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="14"/>
@@ -1733,7 +2065,7 @@ ist keine gültige Koordinatensystemdefinition:
     </message>
     <message>
         <source>TextLabel</source>
-        <translation type="vanished">Bezeichnung</translation>
+        <translation type="obsolete">Bezeichnung</translation>
     </message>
 </context>
 <context>
@@ -1745,49 +2077,49 @@ ist keine gültige Koordinatensystemdefinition:
     </message>
     <message>
         <source><html><head/><body><p>Edit comment.</p></body></html></source>
-        <translation type="vanished"><html><head/><body><p>Kommentar bearbeiten.</p></body></html></translation>
+        <translation type="obsolete"><html><head/><body><p>Kommentar bearbeiten.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="121"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="242"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="128"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="249"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="102"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="109"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation><html><head/><body><p>Der Wegpunkt wurde in QMapShack importiert und geändert. Die ursprünglichen Daten weren nicht mehr angezeigt. Näheres siehe Änderungshistorie.</p></body></html></translation>
     </message>
     <message>
         <source><html><head/><body><p>Edit description.</p></body></html></source>
-        <translation type="vanished"><html><head/><body><p>Beschreibung bearbeiten.</p></body></html></translation>
+        <translation type="obsolete"><html><head/><body><p>Beschreibung bearbeiten.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="155"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="162"/>
         <source>Position:</source>
         <translation>Position:</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="72"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="83"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="162"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="188"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="214"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="90"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="169"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="195"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="221"/>
         <source>-</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="175"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="182"/>
         <source>Ele.</source>
         <translation>Höhe</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="201"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="208"/>
         <source>Proximity:</source>
         <translation>Abstand:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="118"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="125"/>
         <source><html><head/><body><p>Read Only Mode</p></body></html></source>
         <translation><html><head/><body><p>Schreibschutz</p></body></html></translation>
     </message>
@@ -1833,10 +2165,20 @@ ist keine gültige Koordinatensystemdefinition:
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/IGisWidget.ui" line="59"/>
+        <location filename="../gis/IGisWidget.ui" line="62"/>
         <source>State</source>
         <translation>Status</translation>
     </message>
+    <message>
+        <location filename="../gis/IGisWidget.ui" line="94"/>
+        <source>Name</source>
+        <translation>Name</translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisWidget.ui" line="127"/>
+        <source>To add a database do a right click on the database list above.</source>
+        <translation>Um eine Datenbank hinzuzufügen, müssen Sie mit der rechten Maustaste auf die obige Datenbanklist klicken.</translation>
+    </message>
 </context>
 <context>
     <name>IGridSetup</name>
@@ -1885,6 +2227,41 @@ ist keine gültige Koordinatensystemdefinition:
     </message>
 </context>
 <context>
+    <name>IImportDatabase</name>
+    <message>
+        <location filename="../qlgt/IImportDatabase.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/IImportDatabase.ui" line="28"/>
+        <source>Source Database:</source>
+        <translation>Quelldatenbank:</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/IImportDatabase.ui" line="35"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="76"/>
+        <source>-</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/IImportDatabase.ui" line="42"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="83"/>
+        <source>...</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/IImportDatabase.ui" line="69"/>
+        <source>Target Database:</source>
+        <translation>Zieldatenbank:</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/IImportDatabase.ui" line="102"/>
+        <source>Start</source>
+        <translation>Los</translation>
+    </message>
+</context>
+<context>
     <name>IInputDialog</name>
     <message>
         <location filename="../helpers/IInputDialog.ui" line="14"/>
@@ -1960,165 +2337,194 @@ ist keine gültige Koordinatensystemdefinition:
         <translation>Projekt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="121"/>
+        <location filename="../IMainWindow.ui" line="111"/>
+        <source>Tool</source>
+        <translation>Werkzeuge</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="128"/>
         <source>Maps</source>
         <translation>Karten</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="158"/>
+        <location filename="../IMainWindow.ui" line="165"/>
         <source>Dig. Elev. Model (DEM)</source>
         <translation>Höhenmodell (DEM)</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="191"/>
+        <location filename="../IMainWindow.ui" line="198"/>
         <source>Data</source>
         <translation>Daten</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="204"/>
+        <location filename="../IMainWindow.ui" line="211"/>
         <source>Add Map Workspace</source>
         <translation>Ansicht hinzufügen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="207"/>
+        <location filename="../IMainWindow.ui" line="214"/>
         <source>Ctrl+T</source>
         <translation>Crtl+T</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="219"/>
+        <location filename="../IMainWindow.ui" line="226"/>
         <source>Show Scale</source>
         <translation>Maßstab</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="228"/>
+        <location filename="../IMainWindow.ui" line="235"/>
         <source>Setup Map Font</source>
         <translation>Kartenfont einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="240"/>
+        <location filename="../IMainWindow.ui" line="247"/>
         <source>Show Grid</source>
         <translation>Gitter</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="243"/>
+        <location filename="../IMainWindow.ui" line="250"/>
         <source>Ctrl+G</source>
         <translation>Crtl+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="252"/>
+        <location filename="../IMainWindow.ui" line="259"/>
         <source>Setup Grid</source>
         <translation>Gitter einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="255"/>
+        <location filename="../IMainWindow.ui" line="262"/>
         <source>Ctrl+Alt+G</source>
         <translation>Ctrl+Alt+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="267"/>
+        <location filename="../IMainWindow.ui" line="274"/>
         <source>Flip Mouse Wheel</source>
         <translation>Mausrad umdrehen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="276"/>
-        <location filename="../IMainWindow.ui" line="279"/>
+        <location filename="../IMainWindow.ui" line="283"/>
+        <location filename="../IMainWindow.ui" line="286"/>
         <source>Setup Map Paths</source>
         <translation>Kartenverzeichnisse angeben</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="291"/>
+        <location filename="../IMainWindow.ui" line="298"/>
         <source>POI Text</source>
         <translation>POI Text</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="303"/>
+        <location filename="../IMainWindow.ui" line="310"/>
         <source>Night / Day</source>
         <translation>Nacht / Tag</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="315"/>
+        <location filename="../IMainWindow.ui" line="322"/>
         <source>Map Tool Tip</source>
         <translation>Kartentooltip</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="324"/>
+        <location filename="../IMainWindow.ui" line="331"/>
         <source>Setup DEM Paths</source>
         <translation>DEM Verzeichnisse angeben</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="333"/>
+        <location filename="../IMainWindow.ui" line="340"/>
         <source>About</source>
         <translation>Über</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="342"/>
+        <location filename="../IMainWindow.ui" line="349"/>
         <source>Help</source>
         <translation>Hilfe</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="351"/>
+        <location filename="../IMainWindow.ui" line="358"/>
         <source>Setup Map Workspace</source>
         <translation>Kartenansicht einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="360"/>
+        <location filename="../IMainWindow.ui" line="367"/>
         <source>Load GIS Data</source>
         <translation>GIS Daten laden</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="363"/>
+        <location filename="../IMainWindow.ui" line="370"/>
         <source>Load projects from file</source>
         <translation>Lade Datei als Projekt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="366"/>
+        <location filename="../IMainWindow.ui" line="373"/>
         <source>Ctrl+L</source>
         <translation>Ctrl+L</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="375"/>
+        <location filename="../IMainWindow.ui" line="382"/>
         <source>Save All GIS Data</source>
         <translation>Alle GIS Daten speichern</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="378"/>
+        <location filename="../IMainWindow.ui" line="385"/>
         <source>Save all projects in the workspace</source>
         <translation>Alle Projekte im Arbeitsplatz speichern</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="381"/>
+        <location filename="../IMainWindow.ui" line="388"/>
         <source>Ctrl+S</source>
         <translation>Ctrl+S</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="390"/>
+        <location filename="../IMainWindow.ui" line="397"/>
         <source>Setup Time Zone</source>
         <translation>Zeitzone einstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="399"/>
+        <location filename="../IMainWindow.ui" line="406"/>
         <source>Add empty project</source>
         <translation>Leeres Projekt hinzufügen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="411"/>
+        <location filename="../IMainWindow.ui" line="418"/>
         <source>Search Google</source>
         <translation>Mit Google suchen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="420"/>
+        <location filename="../IMainWindow.ui" line="427"/>
         <source>Close all projects</source>
         <translation>Alle Projekte schließen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="429"/>
+        <location filename="../IMainWindow.ui" line="430"/>
+        <source>F8</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="439"/>
         <source>Setup Units</source>
         <translation>Einheiten einrichten</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="438"/>
+        <location filename="../IMainWindow.ui" line="448"/>
+        <source>Setup Workspace</source>
+        <translation>Arbeitsplatz einstellen</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="451"/>
+        <source>Setup save on exit.</source>
+        <translation>Speichern beim Verlassen.</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="460"/>
+        <source>Import Database from QLandkarte</source>
+        <translation>Datenbank von QLandkarte importieren</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="463"/>
+        <source>Import QLandkarte GT database</source>
+        <translation>QLandkarte GT Datenbank importieren.</translation>
+    </message>
+    <message>
         <source>Setup Database</source>
-        <translation>Datenbank einrichten</translation>
+        <translation type="obsolete">Datenbank einrichten</translation>
     </message>
 </context>
 <context>
@@ -2130,7 +2536,7 @@ ist keine gültige Koordinatensystemdefinition:
     </message>
     <message>
         <source>To add maps use File->Setup Map Pathss. </source>
-        <translation type="vanished">Um Karten zuzufügen -> Menü Datei - Kartenverzeichnisse angeben.</translation>
+        <translation type="obsolete">Um Karten zuzufügen -> Menü Datei - Kartenverzeichnisse angeben.</translation>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="103"/>
@@ -2156,13 +2562,13 @@ ist keine gültige Koordinatensystemdefinition:
         <translation>Kartenpfad einstellen</translation>
     </message>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="38"/>
-        <location filename="../map/IMapPathSetup.ui" line="58"/>
+        <location filename="../map/IMapPathSetup.ui" line="31"/>
+        <location filename="../map/IMapPathSetup.ui" line="51"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="107"/>
+        <location filename="../map/IMapPathSetup.ui" line="93"/>
         <source>-</source>
         <translation></translation>
     </message>
@@ -2359,22 +2765,22 @@ sein</translation>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="38"/>
+        <location filename="../gis/wpt/IProjWpt.ui" line="45"/>
         <source>-</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="47"/>
+        <location filename="../gis/wpt/IProjWpt.ui" line="54"/>
         <source>Clone waypoint and move by:</source>
         <translation>Wegpunkt kopieren und verschieben um:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="59"/>
+        <location filename="../gis/wpt/IProjWpt.ui" line="66"/>
         <source>m</source>
         <translation></translation>
     </message>
-    <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="69"/>
+    <message utf8="true">
+        <location filename="../gis/wpt/IProjWpt.ui" line="76"/>
         <source>°</source>
         <translation></translation>
     </message>
@@ -2387,17 +2793,17 @@ sein</translation>
         <translation></translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptEditLine.ui" line="50"/>
+        <location filename="../mouse/IScrOptEditLine.ui" line="47"/>
         <source>Save to orignal</source>
         <translation>Ins Original speichern</translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptEditLine.ui" line="57"/>
+        <location filename="../mouse/IScrOptEditLine.ui" line="54"/>
         <source>Save as new</source>
         <translation>Als neu speichern</translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptEditLine.ui" line="64"/>
+        <location filename="../mouse/IScrOptEditLine.ui" line="61"/>
         <source>Abort</source>
         <translation>Abbrechen</translation>
     </message>
@@ -2506,7 +2912,7 @@ sein</translation>
     </message>
     <message>
         <source>Hide points.</source>
-        <translation type="vanished">Pukte ausblenden.</translation>
+        <translation type="obsolete">Pukte ausblenden.</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptRangeTrk.ui" line="43"/>
@@ -2517,11 +2923,11 @@ sein</translation>
     </message>
     <message>
         <source>Show points.</source>
-        <translation type="vanished">Punkte anzeigen.</translation>
+        <translation type="obsolete">Punkte anzeigen.</translation>
     </message>
     <message>
         <source>Copy track points to clipboard</source>
-        <translation type="vanished">Trackpunkte in die Zwischenablage kopieren</translation>
+        <translation type="obsolete">Trackpunkte in die Zwischenablage kopieren</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptRangeTrk.ui" line="103"/>
@@ -2581,63 +2987,68 @@ sein</translation>
         <translation>Zeigt das Profil und detaillierte Informationen der Punkte.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="145"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="148"/>
         <source>Cut track at selected point into two tracks.</source>
         <translation>Teilt den Track am selektierten Punkt in zwei Teile.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="103"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="106"/>
         <source>Edit position of track points.</source>
         <translation>Position von Trackpunkten bearbeiten.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="117"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="92"/>
+        <source>Select a range of points.</source>
+        <translation>Einen Punktebereich wählen.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="120"/>
         <source>Reverse track.</source>
         <translation>Track umkehren.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="131"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="134"/>
         <source>Combine tracks.</source>
         <translation>Tracks verbinden.</translation>
     </message>
     <message>
         <source><html><head/><body><p>View details &amp; Edit</p></body></html></source>
-        <translation type="vanished"><html><head/><body><p>Details anzeigen &amp; Bearbeiten</p></body></html></translation>
+        <translation type="obsolete"><html><head/><body><p>Details anzeigen &amp; Bearbeiten</p></body></html></translation>
     </message>
     <message>
         <source><html><head/><body><p>View details &amp; Edit properties of track.</p></body></html></source>
-        <translation type="vanished"><html><head/><body><p>Detailansicht &amp; Trackeigenschaften bearbeiten..</p></body></html></translation>
+        <translation type="obsolete"><html><head/><body><p>Detailansicht &amp; Trackeigenschaften bearbeiten..</p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="43"/>
         <location filename="../gis/trk/IScrOptTrk.ui" line="57"/>
         <location filename="../gis/trk/IScrOptTrk.ui" line="74"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="92"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="106"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="120"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="134"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="148"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="95"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="109"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="123"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="137"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="151"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
         <source><html><head/><body><p>Delete</p></body></html></source>
-        <translation type="vanished"><html><head/><body><p>Löschen</p></body></html></translation>
+        <translation type="obsolete"><html><head/><body><p>Löschen</p></body></html></translation>
     </message>
     <message>
         <source><html><head/><body><p>Show on-screen profile and detailed information about points.</p></body></html></source>
-        <translation type="vanished"><html><head/><body><p>Zeigt das Profil und detaillierte Informationen der Punkte.</p></body></html></translation>
+        <translation type="obsolete"><html><head/><body><p>Zeigt das Profil und detaillierte Informationen der Punkte.</p></body></html></translation>
     </message>
     <message>
         <source><html><head/><body><p>Cut track at selected point into two tracks.</p></body></html></source>
-        <translation type="vanished"><html><head/><body><p>Teilt den Track am selektierten Punkt in zwei Teile.</p></body></html></translation>
+        <translation type="obsolete"><html><head/><body><p>Teilt den Track am selektierten Punkt in zwei Teile.</p></body></html></translation>
     </message>
     <message>
         <source><html><head/><body><p>Edit position of track points.</p></body></html></source>
-        <translation type="vanished"><html><head/><body><p>Bearbeiten der Position von Trackpunkten.</p></body></html></translation>
+        <translation type="obsolete"><html><head/><body><p>Bearbeiten der Position von Trackpunkten.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="174"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="177"/>
         <source>TextLabel</source>
         <translation>Bezeichnung</translation>
     </message>
@@ -2687,7 +3098,7 @@ sein</translation>
     <name>ISelectProjectDialog</name>
     <message>
         <source>Dialog</source>
-        <translation type="vanished">Dialog</translation>
+        <translation type="obsolete">Dialog</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectProjectDialog.ui" line="14"/>
@@ -2718,35 +3129,106 @@ sein</translation>
 <context>
     <name>ISetupDB</name>
     <message>
-        <location filename="../gis/db/ISetupDB.ui" line="14"/>
         <source>Setup database...</source>
-        <translation>Datenbank einrichten...</translation>
+        <translation type="obsolete">Datenbank einrichten...</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDB.ui" line="35"/>
         <source>save workspace on exit, and every</source>
-        <translation>Ansicht beim Beenden speichern, und alle</translation>
+        <translation type="obsolete">Ansicht beim Beenden speichern, und alle</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDB.ui" line="45"/>
         <source>minutes</source>
-        <translation>Minuten</translation>
+        <translation type="obsolete">Minuten</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDB.ui" line="62"/>
         <source>Database path</source>
-        <translation>Datenbankpfad</translation>
+        <translation type="obsolete">Datenbankpfad</translation>
     </message>
+</context>
+<context>
+    <name>ISetupDatabase</name>
     <message>
-        <location filename="../gis/db/ISetupDB.ui" line="69"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="14"/>
+        <source>Add database...</source>
+        <translation>Datenbank hinzufügen...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="25"/>
+        <source>File</source>
+        <translation>Datei</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDB.ui" line="92"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="32"/>
         <source>-</source>
         <translation></translation>
     </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="39"/>
+        <source>Name</source>
+        <translation>Name</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="46"/>
+        <source>Add new database.</source>
+        <translation>Neue Datenbank hinzufügen.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="49"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="63"/>
+        <source>...</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="60"/>
+        <source>Open existing database.</source>
+        <translation>Existierende Datenbank öffnen.</translation>
+    </message>
+</context>
+<context>
+    <name>ISetupFolder</name>
+    <message>
+        <location filename="../gis/db/ISetupFolder.ui" line="14"/>
+        <source>Folder...</source>
+        <translation>Ordner...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupFolder.ui" line="22"/>
+        <source>Name</source>
+        <translation>Name</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupFolder.ui" line="34"/>
+        <source>Group</source>
+        <translation>Gruppe</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupFolder.ui" line="45"/>
+        <source>Project</source>
+        <translation>Projekt</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupFolder.ui" line="59"/>
+        <source>Other</source>
+        <translation>Andere</translation>
+    </message>
+</context>
+<context>
+    <name>ISetupWorkspace</name>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="14"/>
+        <source>Setup database...</source>
+        <translation>Datenbank einrichten...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="35"/>
+        <source>save workspace on exit, and every</source>
+        <translation>Den Arbeitsplatz beim Beenden speichern, und alle</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="45"/>
+        <source>minutes</source>
+        <translation>Minuten</translation>
+    </message>
 </context>
 <context>
     <name>ITextEditWidget</name>
@@ -2980,42 +3462,64 @@ Zeile %2, Spalte %3:
         <translation>Keien GPX Datei:</translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="112"/>
         <source>
 Filename: %1</source>
-        <translation>Dateiname: %1</translation>
+        <translation type="obsolete">Dateiname: %1</translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="128"/>
         <source>
 Waypoints: %1</source>
-        <translation>Wegpunkte: %1</translation>
+        <translation type="obsolete">Wegpunkte: %1</translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="132"/>
         <source>
 Tracks: %1</source>
-        <translation>Tracks: %1</translation>
+        <translation type="obsolete">Tracks: %1</translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="136"/>
         <source>
 Routes: %1</source>
-        <translation>Routen: %1</translation>
+        <translation type="obsolete">Routen: %1</translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="140"/>
         <source>
 Areas: %1</source>
-        <translation>Fläche: %1</translation>
+        <translation type="obsolete">Fläche: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="163"/>
+        <source><br/>
+Filename: %1</source>
+        <translation><br/>
+Dateiname: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="180"/>
+        <source>Waypoints: %1</source>
+        <translation>Wegpunkte: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="184"/>
+        <source>Tracks: %1</source>
+        <translation>Tracks: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="188"/>
+        <source>Routes: %1</source>
+        <translation>Routen: %1</translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="197"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="192"/>
+        <source>Areas: %1</source>
+        <translation>Flächen: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="250"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
         <translation>Sind Sie sicher, dass Sie '%1' aus dem Projekt '%2' löschen wollen? </translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="198"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="251"/>
         <source>Delete...</source>
         <translation>Löschen...</translation>
     </message>
@@ -3034,12 +3538,23 @@ Areas: %1</source>
         <translation>Öffnen fehlgeschlagen: %1</translation>
     </message>
     <message>
+        <location filename="../gis/db/CDBProject.cpp" line="124"/>
         <location filename="../gis/gpx/CGpxProject.cpp" line="151"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="90"/>
         <source>Save GIS data to...</source>
         <translation>GIS Daten speichern in...</translation>
     </message>
     <message>
+        <location filename="../gis/db/CDBProject.cpp" line="153"/>
+        <source>Save ...</source>
+        <translation>Speichern...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="153"/>
+        <source>Abort save</source>
+        <translation>Speichern abbrechen</translation>
+    </message>
+    <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="222"/>
         <source>File exists ...</source>
         <translation>Datei existiert...</translation>
@@ -3066,254 +3581,259 @@ Areas: %1</source>
         <translation>Datei %1' konnte nicht gespeichert werden</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="253"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="261"/>
         <source>Changed trackpoints, sacrificed all previous data.</source>
         <translation>Wegpunkte geändert, alle vorherigen Daten sind verloren.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="319"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="328"/>
         <source>Length: %1 %2</source>
         <translation>Länge: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="326"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="335"/>
         <source>, %1%2 %3, %4%5 %6</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="334"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="343"/>
         <source>Time: %1</source>
         <translation>Zeit: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="337"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="347"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="346"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="356"/>
         <source>, Speed: %1 %2</source>
         <translation>, Geschw.: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="344"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="353"/>
         <source>Moving: %1</source>
         <translation>Bewegung: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="353"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="362"/>
         <source>Start: %1</source>
         <translation>Beginn: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="358"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="367"/>
         <source>End: %1</source>
         <translation>Ende: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="362"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="371"/>
         <source>Points: %1 (%2)</source>
         <translation>Punkte: %1 (%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="427"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="436"/>
         <source>Ele.: %1 %2</source>
         <translation>Höhe: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="430"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="439"/>
         <source> slope: %1%3 (%2%)</source>
         <translation>Neigung: %1%3 (%2%)</translation>
     </message>
     <message>
         <source> slope: %1° (%2%)</source>
-        <translation type="vanished"> Neigung: %1° (%2%)</translation>
+        <translation type="obsolete"> Neigung: %1° (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="940"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="950"/>
         <source>Hide points.</source>
         <translation>Punkte ausblenden.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="974"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="984"/>
         <source>Show points.</source>
         <translation>Punkte anzeigen.</translation>
     </message>
     <message>
         <source> slope: %1°(%2%)</source>
-        <translation type="vanished">Neigung: %1°(%2%)</translation>
+        <translation type="obsolete">Neigung: %1°(%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="435"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="444"/>
         <source> speed: %1%2</source>
         <translation>Geschwindigkeit: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="447"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="456"/>
         <source>Ascend: %1%2 (%3%)</source>
         <translation>Anstieg: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="451"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="460"/>
         <source>Ascend: - (-)</source>
         <translation>Anstieg: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="457"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="466"/>
         <source> Descend: %1%2 (%3%)</source>
         <translation> Abstieg: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="461"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="470"/>
         <source> Descend: - (-) </source>
         <translation> Abstieg: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="468"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="477"/>
         <source>Dist.: %1%2 (%3%)</source>
         <translation>Entf.: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="472"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="481"/>
         <source>Dist.: - (-)</source>
         <translation>Entf.: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="478"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="487"/>
         <source> Moving: %1%2 (%3%)</source>
         <translation>Bewegung: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="482"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="491"/>
         <source> Moving: - (-) </source>
         <translation> Bewegung: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="94"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="95"/>
         <source>thin</source>
         <translation>dünn</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="95"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="96"/>
         <source>normal</source>
         <translation>normal</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="96"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="97"/>
         <source>wide</source>
         <translation>weit</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="97"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="98"/>
         <source>strong</source>
         <translation>stark</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="418"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="400"/>
+        <source>Area: %1%2</source>
+        <translation>Fläche: %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="452"/>
         <source>Changed area shape.</source>
         <translation>Flächenform geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="426"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="460"/>
         <source>Changed name.</source>
         <translation>Name geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="432"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="466"/>
         <source>Changed border width.</source>
         <translation>Umrnadungsbreite geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="438"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="472"/>
         <source>Changed fill pattern.</source>
         <translation>Füllung geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="444"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="478"/>
         <source>Changed opacity.</source>
         <translation>Durchsichtigkeit geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="450"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="484"/>
         <source>Changed comment.</source>
         <translation>Kommentar geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="456"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="490"/>
         <source>Changed description.</source>
         <translation>Beschreibung geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="462"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1279"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="333"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="496"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1289"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="341"/>
         <source>Changed links</source>
         <translation>Geänderte Verbindungen</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="474"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1291"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="508"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1301"/>
         <source>Changed color</source>
         <translation>Farbe geändert</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="803"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="811"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="829"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="872"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="999"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="165"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="813"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="821"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="839"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="882"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1009"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="173"/>
         <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
         <source>Edit name...</source>
         <translation>Name bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="165"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="173"/>
         <source>Enter new waypoint name.</source>
         <translation>Name eingeben.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="211"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="219"/>
         <source>Elevation: %1 %2</source>
         <translation>Höhe: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="219"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="227"/>
         <source>Proximity: %1 %2</source>
         <translation>Abstand: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1261"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="284"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1271"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="292"/>
         <source>Changed name</source>
         <translation>Name geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="291"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="299"/>
         <source>Changed position</source>
         <translation>Position geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="297"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="305"/>
         <source>Changed elevation</source>
         <translation>Höhe geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="303"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="311"/>
         <source>Changed proximity</source>
         <translation>Abstandsalarm geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="315"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="323"/>
         <source>Changed icon</source>
         <translation>Symbol geändert</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1267"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="321"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1277"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="329"/>
         <source>Changed comment</source>
         <translation>Kommentar geändert</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1273"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="327"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1283"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="335"/>
         <source>Changed description</source>
         <translation>Beschreibung geändert</translation>
     </message>
@@ -3349,56 +3869,60 @@ Areas: %1</source>
         <translation>Dieser Dateityp hat eine unbekannte Polyline Kodierung. Bitte mitteilen!</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="239"/>
+        <location filename="../gis/IGisItem.cpp" line="284"/>
         <source>Initial version.</source>
         <translation>Erstversion.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="323"/>
+        <location filename="../gis/IGisItem.cpp" line="368"/>
         <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="324"/>
+        <location filename="../gis/IGisItem.cpp" line="369"/>
         <source>Read Only Mode...</source>
         <translation>Schreibgeschützt...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="513"/>
+        <location filename="../gis/IGisItem.cpp" line="558"/>
         <source><h4>Comment:</h4></source>
         <translation><h4>Kommentar:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="516"/>
+        <location filename="../gis/IGisItem.cpp" line="561"/>
         <source><p>--- no comment ---</p></source>
         <translation><p>--- kein Kommentar ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="523"/>
+        <location filename="../gis/IGisItem.cpp" line="568"/>
+        <location filename="../gis/IGisItem.cpp" line="598"/>
         <source><h4>Description:</h4></source>
         <translation><h4>Beschreibung:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="526"/>
+        <location filename="../gis/IGisItem.cpp" line="571"/>
+        <location filename="../gis/IGisItem.cpp" line="601"/>
         <source><p>--- no description ---</p></source>
         <translation><p>--- keine Beschreibung ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="533"/>
+        <location filename="../gis/IGisItem.cpp" line="578"/>
+        <location filename="../gis/IGisItem.cpp" line="608"/>
         <source><h4>Links:</h4></source>
         <translation><h4>Verbindungen:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="536"/>
+        <location filename="../gis/IGisItem.cpp" line="581"/>
+        <location filename="../gis/IGisItem.cpp" line="611"/>
         <source><p>--- no links ---</p></source>
         <translation><h4>keine Verbindungen:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="803"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="811"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="829"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="872"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="999"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="813"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="821"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="839"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="882"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1009"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
         <source>Enter new track name.</source>
         <translation>Name eingeben.</translation>
@@ -3408,5 +3932,51 @@ Areas: %1</source>
         <source>Enter new area name.</source>
         <translation>Name eingeben.</translation>
     </message>
+    <message>
+        <location filename="../gis/db/CDBFolderDatabase.cpp" line="26"/>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="28"/>
+        <source>All your data grouped by folders.</source>
+        <translation>Alle Ihre Daten nach Ordnern gruppiert.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="29"/>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="63"/>
+        <source>Lost & Found</source>
+        <translation>Verloren & Gefunden</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="58"/>
+        <source>Lost & Found (%1)</source>
+        <translation>Verloren & Gefunden (%1)</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/converter.cpp" line="196"/>
+        <source>Copy flag information from QLandkarte GT track</source>
+        <translation>Flaginformation aus dem QLandkarte GT track kopiert</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="158"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="212"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="259"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="285"/>
+        <source>Corrupt track ...</source>
+        <translation>Korrupter Track...</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="158"/>
+        <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="212"/>
+        <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="259"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="285"/>
+        <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
+        <translation></translation>
+    </message>
 </context>
 </TS>
diff --git a/src/locale/qmapshack_es.ts b/src/locale/qmapshack_es.ts
index be91345..5958546 100644
--- a/src/locale/qmapshack_es.ts
+++ b/src/locale/qmapshack_es.ts
@@ -6,7 +6,7 @@
     <message>
         <location filename="../canvas/CCanvas.cpp" line="59"/>
         <source>Workspace %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Espacio de Trabajo %1</translation>
     </message>
 </context>
 <context>
@@ -14,12 +14,12 @@
     <message>
         <location filename="../dem/CDemList.cpp" line="143"/>
         <source>Deactivate</source>
-        <translation type="unfinished"></translation>
+        <translation>Desactivar</translation>
     </message>
     <message>
         <location filename="../dem/CDemList.cpp" line="143"/>
         <source>Activate</source>
-        <translation type="unfinished"></translation>
+        <translation>Activar</translation>
     </message>
 </context>
 <context>
@@ -27,12 +27,12 @@
     <message>
         <location filename="../dem/CDemPathSetup.cpp" line="39"/>
         <source>Add or remove paths containing DEM data. There can be multiple files in a path but no sub-path is parsed. Supported formats are: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Añadir o quitar rutas que contienen datos DEM. Puede haber múltiples archivos en una ruta, pero no se buscará en los subdirectorios. Los formatos soportados son: %1</translation>
     </message>
     <message>
         <location filename="../dem/CDemPathSetup.cpp" line="55"/>
         <source>Select DEM file path...</source>
-        <translation type="unfinished"></translation>
+        <translation>Seleccione la ruta al archivo DEM...</translation>
     </message>
 </context>
 <context>
@@ -41,25 +41,25 @@
         <location filename="../dem/CDemVRT.cpp" line="44"/>
         <location filename="../dem/CDemVRT.cpp" line="51"/>
         <location filename="../dem/CDemVRT.cpp" line="60"/>
-        <location filename="../dem/CDemVRT.cpp" line="84"/>
+        <location filename="../dem/CDemVRT.cpp" line="87"/>
         <source>Error...</source>
-        <translation type="unfinished"></translation>
+        <translation>Error...</translation>
     </message>
     <message>
         <location filename="../dem/CDemVRT.cpp" line="44"/>
         <source>Failed to load file: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al cargar el archivo: %1</translation>
     </message>
     <message>
         <location filename="../dem/CDemVRT.cpp" line="51"/>
         <location filename="../dem/CDemVRT.cpp" line="60"/>
         <source>DEM must have one band with 16bit or 32bit data.</source>
-        <translation type="unfinished"></translation>
+        <translation>El DEM debe tener una sola banda con datos de 16 o 32 bits.</translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="84"/>
+        <location filename="../dem/CDemVRT.cpp" line="87"/>
         <source>No georeference information found.</source>
-        <translation type="unfinished"></translation>
+        <translation>No se encontró información de georreferenciación.</translation>
     </message>
 </context>
 <context>
@@ -67,117 +67,134 @@
     <message>
         <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="58"/>
         <source>none</source>
-        <translation type="unfinished"></translation>
+        <translation>ninguno</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="58"/>
         <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="101"/>
         <source>???</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
 </context>
 <context>
     <name>CDetailsOvlArea</name>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
+        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="131"/>
         <source>Edit name...</source>
-        <translation type="unfinished"></translation>
+        <translation>Editar nombre...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="130"/>
+        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="131"/>
         <source>Enter new waypoint name.</source>
-        <translation type="unfinished"></translation>
+        <translation>Editar el nombre del nuevo waypoint.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="221"/>
         <source><h4>Comment:</h4></source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete"><h4>Comentario:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="224"/>
         <source><p>--- no comment ---</p></source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete"><p>---sin comentario---</p></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="231"/>
         <source><h4>Description:</h4></source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete"><h4>Descripción:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="234"/>
         <source><p>--- no description ---</p></source>
+        <translation type="obsolete"><p>---sin descripción---</p></translation>
+    </message>
+</context>
+<context>
+    <name>CDetailsPrj</name>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="56"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="84"/>
+        <source>none</source>
+        <translation type="unfinished">ninguno</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="70"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Editar nombre...</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="70"/>
+        <source>Enter new project name.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="79"/>
+        <source>Edit keywords...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="79"/>
+        <source>Enter keywords.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>CDetailsTrk</name>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="162"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="171"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="174"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="180"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="199"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="201"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="154"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="163"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="166"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="172"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="191"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="193"/>
         <source>%1 %2</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="226"/>
         <source><h4>Comment:</h4></source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete"><h4>Comentario:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="229"/>
         <source><p>--- no comment ---</p></source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete"><p>---sin comentario---</p></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="236"/>
         <source><h4>Description:</h4></source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete"><h4>Descripción:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="239"/>
         <source><p>--- no description ---</p></source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete"><p>---sin descripción---</p></translation>
     </message>
 </context>
 <context>
     <name>CDetailsWpt</name>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="130"/>
         <source><h4>Comment:</h4></source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete"><h4>Comentario:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="133"/>
         <source><p>--- no comment ---</p></source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete"><p>---sin-comentario---</p></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="140"/>
         <source><h4>Description:</h4></source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete"><h4>Descripción:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="143"/>
         <source><p>--- no description ---</p></source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete"><p>---sin descripción---</p></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="163"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="130"/>
         <source>Edit name...</source>
-        <translation type="unfinished"></translation>
+        <translation>Editar nombre...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="163"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="130"/>
         <source>Enter new waypoint name.</source>
-        <translation type="unfinished"></translation>
+        <translation>Introducir el nombre del nuevo waypoint.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="182"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="149"/>
         <source>Enter new proximity range.</source>
-        <translation type="unfinished"></translation>
+        <translation>Introduzca el nuevo valor de proximidad.</translation>
     </message>
 </context>
 <context>
@@ -185,98 +202,175 @@
     <message>
         <location filename="../helpers/CElevationDialog.cpp" line="85"/>
         <source>No DEM data found for that point.</source>
+        <translation>No se encontraron datos DEM para ese punto.</translation>
+    </message>
+</context>
+<context>
+    <name>CGisListDB</name>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="74"/>
+        <source>Add Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="77"/>
+        <source>Add Folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="78"/>
+        <source>Delete Folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="82"/>
+        <source>Remove Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="85"/>
+        <source>Empty</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="228"/>
+        <source>Remove database...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="228"/>
+        <source>Do you realy want to remove '%1' from the list?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="269"/>
+        <source>Delete database folder...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="269"/>
+        <source>Are you sure you want to delete "%1" from the database?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="295"/>
+        <source>Remove items...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="295"/>
+        <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>CGisListWks</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="48"/>
+        <location filename="../gis/CGisListWks.cpp" line="81"/>
         <source>Save</source>
-        <translation type="unfinished"></translation>
+        <translation>Guardar</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="47"/>
+        <location filename="../gis/CGisListWks.cpp" line="80"/>
         <source>Save As...</source>
+        <translation>Guardar Como...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="82"/>
+        <source>Edit..</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="49"/>
+        <location filename="../gis/CGisListWks.cpp" line="83"/>
         <source>Close</source>
-        <translation type="unfinished"></translation>
+        <translation>Cerrar</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="55"/>
+        <location filename="../gis/CGisListWks.cpp" line="89"/>
         <source>Edit...</source>
-        <translation type="unfinished"></translation>
+        <translation>Editar...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="56"/>
+        <location filename="../gis/CGisListWks.cpp" line="90"/>
         <source>Move Waypoint</source>
-        <translation type="unfinished"></translation>
+        <translation>Mover Waypoint</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="57"/>
+        <location filename="../gis/CGisListWks.cpp" line="91"/>
         <source>Proj. Waypoint...</source>
-        <translation type="unfinished"></translation>
+        <translation>Proyectar Waypoint...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="58"/>
+        <location filename="../gis/CGisListWks.cpp" line="92"/>
         <source>Track Profile</source>
-        <translation type="unfinished"></translation>
+        <translation>Perfil del Track</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="59"/>
+        <location filename="../gis/CGisListWks.cpp" line="93"/>
         <source>Select Range</source>
-        <translation type="unfinished"></translation>
+        <translation>Seleccionar Rango</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="60"/>
+        <location filename="../gis/CGisListWks.cpp" line="94"/>
         <source>Edit Track Points</source>
-        <translation type="unfinished"></translation>
+        <translation>Editar Puntos del Track</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="61"/>
+        <location filename="../gis/CGisListWks.cpp" line="95"/>
         <source>Reverse Track</source>
-        <translation type="unfinished"></translation>
+        <translation>Invertir Track</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="62"/>
+        <location filename="../gis/CGisListWks.cpp" line="96"/>
         <source>Combine Tracks</source>
-        <translation type="unfinished"></translation>
+        <translation>Combinar Tracks</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="63"/>
+        <location filename="../gis/CGisListWks.cpp" line="97"/>
         <source>Edit Area Points</source>
-        <translation type="unfinished"></translation>
+        <translation>Editar Puntos del Área</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="66"/>
+        <location filename="../gis/CGisListWks.cpp" line="100"/>
         <source>Delete</source>
-        <translation type="unfinished"></translation>
+        <translation>Borrar</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="400"/>
+        <location filename="../gis/CGisListWks.cpp" line="621"/>
         <source>Saving workspace. Please wait.</source>
-        <translation type="unfinished"></translation>
+        <translation>Guardando espacio de trabajo. Por favor espere.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="441"/>
+        <location filename="../gis/CGisListWks.cpp" line="662"/>
         <source>Loading workspace. Please wait.</source>
+        <translation>Cargando espacio de trabajo. Por favor espere.</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="1070"/>
+        <source>Close all projects...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="1070"/>
+        <source>This will remove all projects from the workspace.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>CGrid</name>
     <message>
-        <location filename="../grid/CGrid.cpp" line="61"/>
         <source>[Grid: %1] </source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">[Malla: %1] </translation>
+    </message>
+    <message>
+        <location filename="../grid/CGrid.cpp" line="62"/>
+        <source>[Grid: %1%2%5 %3%4%5] </source>
+        <translation type="unfinished">[Malla: %1]  {1%2%5 %3%4%5]?}</translation>
     </message>
     <message>
-        <location filename="../grid/CGrid.cpp" line="65"/>
+        <location filename="../grid/CGrid.cpp" line="66"/>
         <source>[Grid: N %1m, E %2m] </source>
-        <translation type="unfinished"></translation>
+        <translation>[Malla: N %1m, E %2m] </translation>
     </message>
 </context>
 <context>
@@ -284,20 +378,38 @@
     <message>
         <location filename="../helpers/CHistoryListWidget.cpp" line="32"/>
         <source>Cut history</source>
+        <translation>Cortar historial</translation>
+    </message>
+</context>
+<context>
+    <name>CImportDatabase</name>
+    <message>
+        <location filename="../qlgt/CImportDatabase.cpp" line="29"/>
+        <source>Import QLandkarte Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CImportDatabase.cpp" line="74"/>
+        <source>Select source database...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CImportDatabase.cpp" line="95"/>
+        <source>Select target database...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="444"/>
+        <location filename="../CMainWindow.cpp" line="441"/>
         <source>Ele: %1%2</source>
-        <translation type="unfinished"></translation>
+        <translation>Alt: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="559"/>
+        <location filename="../CMainWindow.cpp" line="562"/>
         <source>Load GIS Data...</source>
-        <translation type="unfinished"></translation>
+        <translation>Cargar Datos GIS...</translation>
     </message>
 </context>
 <context>
@@ -305,630 +417,630 @@
     <message>
         <location filename="../map/CMapIMG.cpp" line="140"/>
         <source>Failed ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Falló ...</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="156"/>
         <source>Unspecified</source>
-        <translation type="unfinished"></translation>
+        <translation>No especificado</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="157"/>
         <source>French</source>
-        <translation type="unfinished"></translation>
+        <translation>Francés</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="158"/>
         <source>German</source>
-        <translation type="unfinished"></translation>
+        <translation>Alemán</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="159"/>
         <source>Dutch</source>
-        <translation type="unfinished"></translation>
+        <translation>Holandés</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="160"/>
         <source>English</source>
-        <translation type="unfinished"></translation>
+        <translation>Inglés</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="161"/>
         <source>Italian</source>
-        <translation type="unfinished"></translation>
+        <translation>Italiano</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="162"/>
         <source>Finnish</source>
-        <translation type="unfinished"></translation>
+        <translation>Finés</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="163"/>
         <source>Swedish</source>
-        <translation type="unfinished"></translation>
+        <translation>Sueco</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="164"/>
         <source>Spanish</source>
-        <translation type="unfinished"></translation>
+        <translation>Español</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="165"/>
         <source>Basque</source>
-        <translation type="unfinished"></translation>
+        <translation>Euskera</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="166"/>
         <source>Catalan</source>
-        <translation type="unfinished"></translation>
+        <translation>Catalán</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="167"/>
         <source>Galician</source>
-        <translation type="unfinished"></translation>
+        <translation>Gallego</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="168"/>
         <source>Welsh</source>
-        <translation type="unfinished"></translation>
+        <translation>Galés</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="169"/>
         <source>Gaelic</source>
-        <translation type="unfinished"></translation>
+        <translation>Gaélico</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="170"/>
         <source>Danish</source>
-        <translation type="unfinished"></translation>
+        <translation>Danés</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="171"/>
         <source>Norwegian</source>
-        <translation type="unfinished"></translation>
+        <translation>Noruego</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="172"/>
         <source>Portuguese</source>
-        <translation type="unfinished"></translation>
+        <translation>Portugués</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="173"/>
         <source>Slovak</source>
-        <translation type="unfinished"></translation>
+        <translation>Eslovaco</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="174"/>
         <source>Czech</source>
-        <translation type="unfinished"></translation>
+        <translation>Checo</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="175"/>
         <source>Croatian</source>
-        <translation type="unfinished"></translation>
+        <translation>Croata</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="176"/>
         <source>Hungarian</source>
-        <translation type="unfinished"></translation>
+        <translation>Húngaro</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="177"/>
         <source>Polish</source>
-        <translation type="unfinished"></translation>
+        <translation>Polaco</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="178"/>
         <source>Turkish</source>
-        <translation type="unfinished"></translation>
+        <translation>Turco</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="179"/>
         <source>Greek</source>
-        <translation type="unfinished"></translation>
+        <translation>Griego</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="180"/>
         <source>Slovenian</source>
-        <translation type="unfinished"></translation>
+        <translation>Esloveno</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="181"/>
         <source>Russian</source>
-        <translation type="unfinished"></translation>
+        <translation>Ruso</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="182"/>
         <source>Estonian</source>
-        <translation type="unfinished"></translation>
+        <translation>Estonio</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="183"/>
         <source>Latvian</source>
-        <translation type="unfinished"></translation>
+        <translation>Letón</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="184"/>
         <source>Romanian</source>
-        <translation type="unfinished"></translation>
+        <translation>Rumano</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="185"/>
         <source>Albanian</source>
-        <translation type="unfinished"></translation>
+        <translation>Albanés</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="186"/>
         <source>Bosnian</source>
-        <translation type="unfinished"></translation>
+        <translation>Bosnio</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="187"/>
         <source>Lithuanian</source>
-        <translation type="unfinished"></translation>
+        <translation>Lituano</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="188"/>
         <source>Serbian</source>
-        <translation type="unfinished"></translation>
+        <translation>Serbio</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="189"/>
         <source>Macedonian</source>
-        <translation type="unfinished"></translation>
+        <translation>Macedonio</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="190"/>
         <source>Bulgarian</source>
-        <translation type="unfinished"></translation>
+        <translation>Búlgaro</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="247"/>
         <source>Major highway</source>
-        <translation type="unfinished"></translation>
+        <translation>Autovía Primaria</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="248"/>
         <source>Principal highway</source>
-        <translation type="unfinished"></translation>
+        <translation>Autovía secundaria</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="249"/>
         <source>Other highway</source>
-        <translation type="unfinished"></translation>
+        <translation>Otras autovías</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="250"/>
         <source>Arterial road</source>
-        <translation type="unfinished"></translation>
+        <translation>Carretera principal</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="251"/>
         <source>Collector road</source>
-        <translation type="unfinished"></translation>
+        <translation>Carretera secundaria</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="252"/>
         <source>Residential street</source>
-        <translation type="unfinished"></translation>
+        <translation>Calle residencial</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="253"/>
         <source>Alley/Private road</source>
-        <translation type="unfinished"></translation>
+        <translation>Callejón/Carretera privada</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="254"/>
         <source>Highway ramp, low speed</source>
-        <translation type="unfinished"></translation>
+        <translation>Acceso a autopista, baja velocidad</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="255"/>
         <source>Highway ramp, high speed</source>
-        <translation type="unfinished"></translation>
+        <translation>Acceso a autopista, alta velocidad</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="256"/>
         <source>Unpaved road</source>
-        <translation type="unfinished"></translation>
+        <translation>Carretera sin asfaltar</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="257"/>
         <source>Major highway connector</source>
-        <translation type="unfinished"></translation>
+        <translation>Conexión con autovía principal</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="258"/>
         <source>Roundabout</source>
-        <translation type="unfinished"></translation>
+        <translation>Rotonda</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="259"/>
         <source>Railroad</source>
-        <translation type="unfinished"></translation>
+        <translation>Ferrocarril</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="260"/>
         <source>Shoreline</source>
-        <translation type="unfinished"></translation>
+        <translation>Línea de costa</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="261"/>
         <source>Trail</source>
-        <translation type="unfinished"></translation>
+        <translation>Sendero</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="262"/>
         <source>Stream</source>
-        <translation type="unfinished"></translation>
+        <translation>Arroyo</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="263"/>
         <source>Time zone</source>
-        <translation type="unfinished"></translation>
+        <translation>Zona horaria</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="264"/>
         <location filename="../map/CMapIMG.cpp" line="265"/>
         <source>Ferry</source>
-        <translation type="unfinished"></translation>
+        <translation>Ferry</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="266"/>
         <source>State/province border</source>
-        <translation type="unfinished"></translation>
+        <translation>Frontera de estado/provincia</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="267"/>
         <source>County/parish border</source>
-        <translation type="unfinished"></translation>
+        <translation>Frontera de condado/término municipal</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="268"/>
         <source>International border</source>
-        <translation type="unfinished"></translation>
+        <translation>Frontera internacional</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="269"/>
         <source>River</source>
-        <translation type="unfinished"></translation>
+        <translation>Río</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="270"/>
         <source>Minor land contour</source>
-        <translation type="unfinished"></translation>
+        <translation>Curva altimétrica menor</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="271"/>
         <source>Intermediate land contour</source>
-        <translation type="unfinished"></translation>
+        <translation>Curva altimétrica intermedia</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="272"/>
         <source>Major land contour</source>
-        <translation type="unfinished"></translation>
+        <translation>Curva altimétrica principal</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="273"/>
         <source>Minor depth contour</source>
-        <translation type="unfinished"></translation>
+        <translation>Curva batimétrica menor</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="274"/>
         <source>Intermediate depth contour</source>
-        <translation type="unfinished"></translation>
+        <translation>Curva batimétrica intermedia</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="275"/>
         <source>Major depth contour</source>
-        <translation type="unfinished"></translation>
+        <translation>Curva batimétrica principal</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="276"/>
         <source>Intermittent stream</source>
-        <translation type="unfinished"></translation>
+        <translation>Curso intermitente</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="277"/>
         <location filename="../map/CMapIMG.cpp" line="359"/>
         <source>Airport runway</source>
-        <translation type="unfinished"></translation>
+        <translation>Pista de aterrizaje</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="278"/>
         <source>Pipeline</source>
-        <translation type="unfinished"></translation>
+        <translation>Tubería</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="279"/>
         <source>Powerline</source>
-        <translation type="unfinished"></translation>
+        <translation>Línea eléctrica</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="280"/>
         <source>Marine boundary</source>
-        <translation type="unfinished"></translation>
+        <translation>Límite marítimo</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="281"/>
         <source>Hazard boundary</source>
-        <translation type="unfinished"></translation>
+        <translation>Límite de peligro</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="346"/>
         <source>Large urban area (&gt;200K)</source>
-        <translation type="unfinished"></translation>
+        <translation>Área urbana grande (&gt;200K)</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="347"/>
         <source>Small urban area (&lt;200K)</source>
-        <translation type="unfinished"></translation>
+        <translation>Área urbana pequeña (&lt;200K)</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="348"/>
         <source>Rural housing area</source>
-        <translation type="unfinished"></translation>
+        <translation>Área de alojamienos rurales</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="349"/>
         <source>Military base</source>
-        <translation type="unfinished"></translation>
+        <translation>Base militar</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="350"/>
         <source>Parking lot</source>
-        <translation type="unfinished"></translation>
+        <translation>Aparcamiento</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="351"/>
         <source>Parking garage</source>
-        <translation type="unfinished"></translation>
+        <translation>Garaje</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="352"/>
         <source>Airport</source>
-        <translation type="unfinished"></translation>
+        <translation>Aeropuerto</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="353"/>
         <source>Shopping center</source>
-        <translation type="unfinished"></translation>
+        <translation>Centro comercial</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="354"/>
         <source>Marina</source>
-        <translation type="unfinished"></translation>
+        <translation>Puerto deportivo</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="355"/>
         <source>University/College</source>
-        <translation type="unfinished"></translation>
+        <translation>Universidad/Facultad</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="356"/>
         <source>Hospital</source>
-        <translation type="unfinished"></translation>
+        <translation>Hospital</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="357"/>
         <source>Industrial complex</source>
-        <translation type="unfinished"></translation>
+        <translation>Complejo industrial</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="358"/>
         <source>Reservation</source>
-        <translation type="unfinished"></translation>
+        <translation>Reserva natural</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="360"/>
         <source>Man-made area</source>
-        <translation type="unfinished"></translation>
+        <translation>Área creada por el hombre</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="361"/>
         <source>Sports complex</source>
-        <translation type="unfinished"></translation>
+        <translation>Complejo deportivo</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="362"/>
         <source>Golf course</source>
-        <translation type="unfinished"></translation>
+        <translation>Recorrido de golf</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="363"/>
         <source>Cemetery</source>
-        <translation type="unfinished"></translation>
+        <translation>Cementerio</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="364"/>
         <location filename="../map/CMapIMG.cpp" line="365"/>
         <location filename="../map/CMapIMG.cpp" line="366"/>
         <source>National park</source>
-        <translation type="unfinished"></translation>
+        <translation>Parque nacional</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="367"/>
         <source>City park</source>
-        <translation type="unfinished"></translation>
+        <translation>Parque urbano</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="368"/>
         <location filename="../map/CMapIMG.cpp" line="369"/>
         <location filename="../map/CMapIMG.cpp" line="370"/>
         <source>State park</source>
-        <translation type="unfinished"></translation>
+        <translation>Parque regional</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="371"/>
         <source>Forest</source>
-        <translation type="unfinished"></translation>
+        <translation>Bosque</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="372"/>
         <source>Ocean</source>
-        <translation type="unfinished"></translation>
+        <translation>Océano</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="373"/>
         <location filename="../map/CMapIMG.cpp" line="375"/>
         <location filename="../map/CMapIMG.cpp" line="385"/>
         <source>Blue (unknown)</source>
-        <translation type="unfinished"></translation>
+        <translation>Azul (desconocido)</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="374"/>
         <source>Sea</source>
-        <translation type="unfinished"></translation>
+        <translation>Mar</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="376"/>
         <location filename="../map/CMapIMG.cpp" line="377"/>
         <location filename="../map/CMapIMG.cpp" line="384"/>
         <source>Large lake</source>
-        <translation type="unfinished"></translation>
+        <translation>Lago grande</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="378"/>
         <location filename="../map/CMapIMG.cpp" line="379"/>
         <source>Medium lake</source>
-        <translation type="unfinished"></translation>
+        <translation>Lago mediano</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="380"/>
         <location filename="../map/CMapIMG.cpp" line="381"/>
         <source>Small lake</source>
-        <translation type="unfinished"></translation>
+        <translation>Lago pequeño</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="382"/>
         <location filename="../map/CMapIMG.cpp" line="383"/>
         <source>Major lake</source>
-        <translation type="unfinished"></translation>
+        <translation>Lago principal</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="386"/>
         <source>Major River</source>
-        <translation type="unfinished"></translation>
+        <translation>Río Principal</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="387"/>
         <source>Large River</source>
-        <translation type="unfinished"></translation>
+        <translation>Río Grande</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="388"/>
         <source>Medium River</source>
-        <translation type="unfinished"></translation>
+        <translation>Río Mediano</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="389"/>
         <source>Small River</source>
-        <translation type="unfinished"></translation>
+        <translation>Río Pequeño</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="392"/>
         <source>Intermittent water</source>
-        <translation type="unfinished"></translation>
+        <translation>Agua intermitente</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="393"/>
         <source>Wetland/Swamp</source>
-        <translation type="unfinished"></translation>
+        <translation>Marisma/Ciénaga</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="394"/>
         <source>Glacier</source>
-        <translation type="unfinished"></translation>
+        <translation>Glaciar</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="395"/>
         <source>Orchard/Plantation</source>
-        <translation type="unfinished"></translation>
+        <translation>Invernadero/Plantación</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="396"/>
         <source>Scrub</source>
-        <translation type="unfinished"></translation>
+        <translation>Monte bajo</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="397"/>
         <source>Tundra</source>
-        <translation type="unfinished"></translation>
+        <translation>Tundra</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="398"/>
         <source>Flat</source>
-        <translation type="unfinished"></translation>
+        <translation>Llanura</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="399"/>
         <source>???</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="437"/>
         <source>Failed to read: </source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al leer: </translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="481"/>
         <source>Failed to open: </source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al abrir: </translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="505"/>
         <location filename="../map/CMapIMG.cpp" line="509"/>
         <source>Bad file format: </source>
-        <translation type="unfinished"></translation>
+        <translation>Formato de archivo incorrecto: </translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="600"/>
         <source>Failed to read file structure: </source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al leer la estructura del archivo: </translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="633"/>
         <source>Loading %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Cargando %1</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="638"/>
         <source>User abort: </source>
-        <translation type="unfinished"></translation>
+        <translation>Abortado por el usuario: </translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="639"/>
         <source>File is NT format. QMapShack is unable to read map files with NT format: </source>
-        <translation type="unfinished"></translation>
+        <translation>El archivo está en formato NT. QMapShack no puede leer archivos en formato NT: </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="713"/>
+        <location filename="../map/CMapIMG.cpp" line="727"/>
         <source>File contains locked / encypted data. Garmin does not want you to use this file with any other software than the one supplied by Garmin.</source>
-        <translation type="unfinished"></translation>
+        <translation>El archivo contiene datos bloqueados/cifrados. Garmin no quiere que use este archivo con otros programas distintos a los que ellos proporcionan.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2363"/>
-        <location filename="../map/CMapIMG.cpp" line="2371"/>
-        <location filename="../map/CMapIMG.cpp" line="2375"/>
-        <location filename="../map/CMapIMG.cpp" line="2380"/>
-        <location filename="../map/CMapIMG.cpp" line="2427"/>
-        <location filename="../map/CMapIMG.cpp" line="2435"/>
-        <location filename="../map/CMapIMG.cpp" line="2439"/>
-        <location filename="../map/CMapIMG.cpp" line="2444"/>
+        <location filename="../map/CMapIMG.cpp" line="2377"/>
+        <location filename="../map/CMapIMG.cpp" line="2385"/>
+        <location filename="../map/CMapIMG.cpp" line="2389"/>
+        <location filename="../map/CMapIMG.cpp" line="2394"/>
+        <location filename="../map/CMapIMG.cpp" line="2441"/>
+        <location filename="../map/CMapIMG.cpp" line="2449"/>
+        <location filename="../map/CMapIMG.cpp" line="2453"/>
+        <location filename="../map/CMapIMG.cpp" line="2458"/>
         <source>Point of Interest</source>
-        <translation type="unfinished"></translation>
+        <translation>Punto de Interés</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2569"/>
+        <location filename="../map/CMapIMG.cpp" line="2583"/>
         <source>Unknown</source>
-        <translation type="unfinished"></translation>
+        <translation>Desconocido</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2616"/>
-        <location filename="../map/CMapIMG.cpp" line="2625"/>
-        <location filename="../map/CMapIMG.cpp" line="2632"/>
+        <location filename="../map/CMapIMG.cpp" line="2630"/>
+        <location filename="../map/CMapIMG.cpp" line="2639"/>
+        <location filename="../map/CMapIMG.cpp" line="2646"/>
         <source>Area</source>
-        <translation type="unfinished"></translation>
+        <translation>Área</translation>
     </message>
 </context>
 <context>
@@ -936,12 +1048,12 @@
     <message>
         <location filename="../map/CMapList.cpp" line="148"/>
         <source>Deactivate</source>
-        <translation type="unfinished"></translation>
+        <translation>Desactivar</translation>
     </message>
     <message>
         <location filename="../map/CMapList.cpp" line="148"/>
         <source>Activate</source>
-        <translation type="unfinished"></translation>
+        <translation>Activar</translation>
     </message>
 </context>
 <context>
@@ -949,17 +1061,17 @@
     <message>
         <location filename="../map/CMapMAP.cpp" line="46"/>
         <source>Failed ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Falló...</translation>
     </message>
     <message>
         <location filename="../map/CMapMAP.cpp" line="65"/>
         <source>Failed to open: </source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al abrir: </translation>
     </message>
     <message>
         <location filename="../map/CMapMAP.cpp" line="75"/>
         <source>Bad file format: </source>
-        <translation type="unfinished"></translation>
+        <translation>Formato de archivo incorrecto: </translation>
     </message>
 </context>
 <context>
@@ -967,12 +1079,12 @@
     <message>
         <location filename="../map/CMapPathSetup.cpp" line="39"/>
         <source>Add or remove paths containing maps. There can be multiple maps in a path but no sub-path is parsed. Supported formats are: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Añada o elimine rutas que contengan mapas. Puede haber múltiples mapas en una ruta, pero no se buscará en subdirectorios. Los formatos soportados son: %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapPathSetup.cpp" line="54"/>
+        <location filename="../map/CMapPathSetup.cpp" line="55"/>
         <source>Select map path...</source>
-        <translation type="unfinished"></translation>
+        <translation>Selecciona la ruta del mapa...</translation>
     </message>
 </context>
 <context>
@@ -980,7 +1092,7 @@
     <message>
         <location filename="../map/CMapPropSetup.cpp" line="151"/>
         <source>Cache path...</source>
-        <translation type="unfinished"></translation>
+        <translation>Ruta de la caché...</translation>
     </message>
 </context>
 <context>
@@ -995,22 +1107,22 @@
         <location filename="../map/CMapRMAP.cpp" line="208"/>
         <location filename="../map/CMapRMAP.cpp" line="236"/>
         <source>Error...</source>
-        <translation type="unfinished"></translation>
+        <translation>Error...</translation>
     </message>
     <message>
         <location filename="../map/CMapRMAP.cpp" line="47"/>
         <source>This is not a TwoNav RMAP file.</source>
-        <translation type="unfinished"></translation>
+        <translation>Éste no es un archivo en formato TwoNav RMAP.</translation>
     </message>
     <message>
         <location filename="../map/CMapRMAP.cpp" line="56"/>
         <source>Unknown sub-format.</source>
-        <translation type="unfinished"></translation>
+        <translation>Sub-formato desconocido.</translation>
     </message>
     <message>
         <location filename="../map/CMapRMAP.cpp" line="126"/>
         <source>Unknown version.</source>
-        <translation type="unfinished"></translation>
+        <translation>Versión desconocida.</translation>
     </message>
     <message>
         <location filename="../map/CMapRMAP.cpp" line="143"/>
@@ -1018,12 +1130,12 @@
         <location filename="../map/CMapRMAP.cpp" line="186"/>
         <location filename="../map/CMapRMAP.cpp" line="208"/>
         <source>Failed to read reference point.</source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al leer el punto de referencia.</translation>
     </message>
     <message>
         <location filename="../map/CMapRMAP.cpp" line="236"/>
         <source>Unknown projection and datum (%1%2).</source>
-        <translation type="unfinished"></translation>
+        <translation>Proyección y datum desconocidos (%1%2).</translation>
     </message>
 </context>
 <context>
@@ -1032,29 +1144,31 @@
         <location filename="../map/CMapTMS.cpp" line="69"/>
         <location filename="../map/CMapTMS.cpp" line="79"/>
         <source>Error...</source>
-        <translation type="unfinished"></translation>
+        <translation>Error...</translation>
     </message>
     <message>
         <location filename="../map/CMapTMS.cpp" line="69"/>
         <source>Failed to open %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al abrir %1</translation>
     </message>
     <message>
         <location filename="../map/CMapTMS.cpp" line="79"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al leer: %1
+línea %2, columna %3.
+ %4</translation>
     </message>
     <message>
         <location filename="../map/CMapTMS.cpp" line="117"/>
         <source>Layer %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Capa %1</translation>
     </message>
     <message>
         <location filename="../map/CMapTMS.cpp" line="288"/>
         <source><b>%1</b>: %2 tiles pending<br/></source>
-        <translation type="unfinished"></translation>
+        <translation><b>%1</b>: %2 teselas pendientes<br/></translation>
     </message>
 </context>
 <context>
@@ -1065,23 +1179,23 @@ line %2, column %3:
         <location filename="../map/CMapVRT.cpp" line="88"/>
         <location filename="../map/CMapVRT.cpp" line="123"/>
         <source>Error...</source>
-        <translation type="unfinished"></translation>
+        <translation>Error...</translation>
     </message>
     <message>
         <location filename="../map/CMapVRT.cpp" line="46"/>
         <location filename="../map/CMapVRT.cpp" line="60"/>
         <source>Failed to load file: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al leer el archivo: %1</translation>
     </message>
     <message>
         <location filename="../map/CMapVRT.cpp" line="88"/>
         <source>File must be 8 bit palette or gray indexed.</source>
-        <translation type="unfinished"></translation>
+        <translation>El archivo debe ser con paleta de 8 bits o escala de grises indexada.</translation>
     </message>
     <message>
         <location filename="../map/CMapVRT.cpp" line="123"/>
         <source>No georeference information found.</source>
-        <translation type="unfinished"></translation>
+        <translation>No se encontró información de georreferenciación.</translation>
     </message>
 </context>
 <context>
@@ -1093,40 +1207,43 @@ line %2, column %3:
         <location filename="../map/CMapWMTS.cpp" line="74"/>
         <location filename="../map/CMapWMTS.cpp" line="198"/>
         <source>Error...</source>
-        <translation type="unfinished"></translation>
+        <translation>Error...</translation>
     </message>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="45"/>
         <source>Failed to open %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al abrir %1</translation>
     </message>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="55"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al leer: %1
+línea %2, columna %3.
+ %4</translation>
     </message>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="65"/>
         <source>Failed to read: %1
 Unknown structure.</source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al leer: %1
+Estructura desconocida.</translation>
     </message>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="74"/>
         <source>Unexpexted service. '* WMTS 1.0.0' is expected. '%1 %2' is read.</source>
-        <translation type="unfinished"></translation>
+        <translation>Servicio no esperado. se esperaba'* WMTS 1.0.0'. Se leyó '%1 %2'.</translation>
     </message>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="198"/>
         <source>No georeference information found.</source>
-        <translation type="unfinished"></translation>
+        <translation>No se encontró información de georreferenciación.</translation>
     </message>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="385"/>
         <source><b>%1</b>: %2 tiles pending<br/></source>
-        <translation type="unfinished"></translation>
+        <translation><b>%1</b>: %2 teselas pendientes<br/></translation>
     </message>
 </context>
 <context>
@@ -1134,7 +1251,7 @@ Unknown structure.</source>
     <message>
         <location filename="../mouse/CMouseEditArea.cpp" line="38"/>
         <source><b>Edit Area</b><br/>Select a corner point for more options.<br/></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Editar Área</b><br/>Seleccione un punto de las esquinas para más información.<br/></translation>
     </message>
 </context>
 <context>
@@ -1142,7 +1259,7 @@ Unknown structure.</source>
     <message>
         <location filename="../mouse/CMouseEditTrk.cpp" line="46"/>
         <source><b>Edit Track Points</b><br/>Select a track point for more options.<br/></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Editar Puntos del Track</b><br/>Selecciones un punto del track para más opciones.<br/></translation>
     </message>
 </context>
 <context>
@@ -1150,22 +1267,22 @@ Unknown structure.</source>
     <message>
         <location filename="../mouse/CMouseNormal.cpp" line="42"/>
         <source>Add Waypoint</source>
-        <translation type="unfinished"></translation>
+        <translation>Añadir Waypoint</translation>
     </message>
     <message>
         <location filename="../mouse/CMouseNormal.cpp" line="43"/>
         <source>Add Track</source>
-        <translation type="unfinished"></translation>
+        <translation>Añadir Track</translation>
     </message>
     <message>
         <location filename="../mouse/CMouseNormal.cpp" line="44"/>
         <source>Add Area</source>
-        <translation type="unfinished"></translation>
+        <translation>Añadir Área</translation>
     </message>
     <message>
         <location filename="../mouse/CMouseNormal.cpp" line="46"/>
         <source>Copy position</source>
-        <translation type="unfinished"></translation>
+        <translation>Copiar posición</translation>
     </message>
 </context>
 <context>
@@ -1173,7 +1290,7 @@ Unknown structure.</source>
     <message>
         <location filename="../mouse/CMouseRangeTrk.cpp" line="48"/>
         <source><b>Select Range</b><br/>Select first track point. And then a second one.<br/></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Seleccione Rango</b><br/>En el track, seleccione el primer punto, y otro más a continuación.<br/></translation>
     </message>
 </context>
 <context>
@@ -1181,17 +1298,17 @@ Unknown structure.</source>
     <message>
         <location filename="../plot/CPlotDistance.cpp" line="55"/>
         <source>distance [%1]</source>
-        <translation type="unfinished"></translation>
+        <translation>distancia [%1]</translation>
     </message>
     <message>
         <location filename="../plot/CPlotDistance.cpp" line="59"/>
         <source>time [h]</source>
-        <translation type="unfinished"></translation>
+        <translation>tiempo [h]</translation>
     </message>
     <message>
         <location filename="../plot/CPlotDistance.cpp" line="61"/>
         <source>distance. [%1]</source>
-        <translation type="unfinished"></translation>
+        <translation>distancia. [%1]</translation>
     </message>
 </context>
 <context>
@@ -1199,17 +1316,17 @@ Unknown structure.</source>
     <message>
         <location filename="../plot/CPlotProfile.cpp" line="67"/>
         <source>distance [%1]</source>
-        <translation type="unfinished"></translation>
+        <translation>distancia [%1]</translation>
     </message>
     <message>
         <location filename="../plot/CPlotProfile.cpp" line="71"/>
         <source>time [h]</source>
-        <translation type="unfinished"></translation>
+        <translation>tiempo [h]</translation>
     </message>
     <message>
         <location filename="../plot/CPlotProfile.cpp" line="73"/>
         <source>alt. [%1]</source>
-        <translation type="unfinished"></translation>
+        <translation>alt. [%1]</translation>
     </message>
 </context>
 <context>
@@ -1217,17 +1334,17 @@ Unknown structure.</source>
     <message>
         <location filename="../plot/CPlotSpeed.cpp" line="54"/>
         <source>distance [%1]</source>
-        <translation type="unfinished"></translation>
+        <translation>distancia [%1]</translation>
     </message>
     <message>
         <location filename="../plot/CPlotSpeed.cpp" line="58"/>
         <source>time [h]</source>
-        <translation type="unfinished"></translation>
+        <translation>tiempo [h]</translation>
     </message>
     <message>
         <location filename="../plot/CPlotSpeed.cpp" line="60"/>
         <source>speed. [%1]</source>
-        <translation type="unfinished"></translation>
+        <translation>velocidad. [%1]</translation>
     </message>
 </context>
 <context>
@@ -1235,17 +1352,17 @@ Unknown structure.</source>
     <message>
         <location filename="../grid/CProjWizard.cpp" line="55"/>
         <source>north</source>
-        <translation type="unfinished"></translation>
+        <translation>norte</translation>
     </message>
     <message>
         <location filename="../grid/CProjWizard.cpp" line="56"/>
         <source>south</source>
-        <translation type="unfinished"></translation>
+        <translation>sur</translation>
     </message>
     <message>
         <location filename="../grid/CProjWizard.cpp" line="211"/>
         <source>Error...</source>
-        <translation type="unfinished"></translation>
+        <translation>Error...</translation>
     </message>
     <message>
         <location filename="../grid/CProjWizard.cpp" line="211"/>
@@ -1253,7 +1370,10 @@ Unknown structure.</source>
 '%1'
 is not a valid coordinate system definition:
 %2</source>
-        <translation type="unfinished"></translation>
+        <translation>El valor
+'%1'
+no es una definición de sistema de coordenadas válido:
+%2</translation>
     </message>
 </context>
 <context>
@@ -1261,11 +1381,158 @@ is not a valid coordinate system definition:
     <message>
         <location filename="../gis/wpt/CProjWpt.cpp" line="63"/>
         <source>Edit name...</source>
-        <translation type="unfinished"></translation>
+        <translation>Editar nombre...</translation>
     </message>
     <message>
         <location filename="../gis/wpt/CProjWpt.cpp" line="63"/>
         <source>Enter new waypoint name.</source>
+        <translation>Introduzca el nuevo nombre del waypoint.</translation>
+    </message>
+</context>
+<context>
+    <name>CQlgtDb</name>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="304"/>
+        <source>Migrating database from version 4 to 5.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="357"/>
+        <source>Migrating database from version 5 to 6.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="414"/>
+        <source>Migrating database from version 6 to 7.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="480"/>
+        <source>Migrating database from version 7 to 8.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="509"/>
+        <source>Migrating database from version 8 to 9.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="532"/>
+        <source>Open database: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="541"/>
+        <source>Folders:          %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="550"/>
+        <source>Tracks:           %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="558"/>
+        <source>Routes:           %1 (Only the basic route will be copied)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="566"/>
+        <source>Waypoints:        %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="574"/>
+        <source>Overlays:         %1 (only area overlays will be converted to QMapShack)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="581"/>
+        <source>Diaries:          %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="588"/>
+        <source>Map selections:   %1 (can't be converted to QMapShack)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="594"/>
+        <source>------ Start to convert database to %1------</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="598"/>
+        <source>Failed to create target database.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="599"/>
+        <source>------ Abort ------</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="627"/>
+        <source>------ Done ------</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="636"/>
+        <source>Restore folders...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="636"/>
+        <location filename="../qlgt/CQlgtDb.cpp" line="669"/>
+        <source>Abort</source>
+        <translation type="unfinished">Abortar</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="663"/>
+        <source>Imported %1 folders and %2 diaries</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="669"/>
+        <source>Copy items...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="694"/>
+        <source>Imported %1 tracks, %2 waypoints, %3 routes, %4 areas</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="695"/>
+        <source>Import folders...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="747"/>
+        <source>Overlay of type '%1' cant be converted</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CQmsDb</name>
+    <message>
+        <location filename="../qlgt/CQmsDb.cpp" line="46"/>
+        <source>Existing file...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQmsDb.cpp" line="46"/>
+        <source>Remove existing %1?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQmsDb.cpp" line="51"/>
+        <source>Remove existing file %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQmsDb.cpp" line="158"/>
+        <source>%1: drop item with QLGT DB ID %2</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1274,38 +1541,71 @@ is not a valid coordinate system definition:
     <message>
         <location filename="../gis/search/CSearchGoogle.cpp" line="120"/>
         <source>Unknown response</source>
-        <translation type="unfinished"></translation>
+        <translation>Respuesta desconocida</translation>
     </message>
     <message>
         <location filename="../gis/search/CSearchGoogle.cpp" line="130"/>
         <source>Error: </source>
-        <translation type="unfinished"></translation>
+        <translation>Error: </translation>
     </message>
 </context>
 <context>
     <name>CSetupDB</name>
     <message>
-        <location filename="../gis/db/CSetupDB.cpp" line="55"/>
         <source>Setup database...</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Configurar la base de datos...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDB.cpp" line="55"/>
         <source>Changes will become active after an application's restart.</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Los cambios surtirán efecto tras reiniciar la aplicación.</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDB.cpp" line="63"/>
         <source>Select database path...</source>
+        <translation type="obsolete">Seleccione la ruta a la base de datos...</translation>
+    </message>
+</context>
+<context>
+    <name>CSetupDatabase</name>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="71"/>
+        <source>Error...</source>
+        <translation type="unfinished">Error...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="71"/>
+        <source>There is already a database with name '%1'</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="85"/>
+        <source>New database...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="110"/>
+        <source>Open database...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
+    <name>CSetupWorkspace</name>
+    <message>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="52"/>
+        <source>Setup database...</source>
+        <translation type="unfinished">Configurar la base de datos...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="52"/>
+        <source>Changes will become active after an application's restart.</source>
+        <translation type="unfinished">Los cambios surtirán efecto tras reiniciar la aplicación.</translation>
+    </message>
+</context>
+<context>
     <name>CTextEditWidget</name>
     <message>
         <location filename="../helpers/CTextEditWidget.cpp" line="73"/>
         <source>&Color...</source>
-        <translation type="unfinished"></translation>
+        <translation>&Color...</translation>
     </message>
 </context>
 <context>
@@ -1313,12 +1613,12 @@ is not a valid coordinate system definition:
     <message>
         <location filename="../IAbout.ui" line="14"/>
         <source>About....</source>
-        <translation type="unfinished"></translation>
+        <translation>Acerca de...</translation>
     </message>
     <message>
         <location filename="../IAbout.ui" line="43"/>
         <source><b>QMapShack</b>, Version</source>
-        <translation type="unfinished"></translation>
+        <translation><b>QMapShack</b>, Versión</translation>
     </message>
     <message>
         <location filename="../IAbout.ui" line="50"/>
@@ -1331,17 +1631,17 @@ is not a valid coordinate system definition:
     <message>
         <location filename="../IAbout.ui" line="87"/>
         <source>Qt</source>
-        <translation type="unfinished"></translation>
+        <translation>Qt</translation>
     </message>
     <message>
         <location filename="../IAbout.ui" line="101"/>
         <source>GDAL</source>
-        <translation type="unfinished"></translation>
+        <translation>GDAL</translation>
     </message>
     <message>
         <location filename="../IAbout.ui" line="115"/>
         <source>Proj4</source>
-        <translation type="unfinished"></translation>
+        <translation>Proj4</translation>
     </message>
     <message>
         <location filename="../IAbout.ui" line="138"/>
@@ -1359,17 +1659,17 @@ is not a valid coordinate system definition:
     <message>
         <location filename="../canvas/ICanvasSetup.ui" line="14"/>
         <source>Setup Map Workspace...</source>
-        <translation type="unfinished"></translation>
+        <translation>Configurar Espacio de Trabajo del Mapa...</translation>
     </message>
     <message>
         <location filename="../canvas/ICanvasSetup.ui" line="22"/>
         <source>Projection & Datum</source>
-        <translation type="unfinished"></translation>
+        <translation>Proyección & Datum</translation>
     </message>
     <message>
         <location filename="../canvas/ICanvasSetup.ui" line="32"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -1377,7 +1677,7 @@ is not a valid coordinate system definition:
     <message>
         <location filename="../gis/trk/ICombineTrk.ui" line="14"/>
         <source>Combine Tracks...</source>
-        <translation type="unfinished"></translation>
+        <translation>Combinar Tracks...</translation>
     </message>
     <message>
         <location filename="../gis/trk/ICombineTrk.ui" line="43"/>
@@ -1385,7 +1685,7 @@ is not a valid coordinate system definition:
         <location filename="../gis/trk/ICombineTrk.ui" line="117"/>
         <location filename="../gis/trk/ICombineTrk.ui" line="144"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -1393,18 +1693,18 @@ is not a valid coordinate system definition:
     <message>
         <location filename="../dem/IDemPathSetup.ui" line="14"/>
         <source>Setup DEM file pathss</source>
-        <translation type="unfinished"></translation>
+        <translation>Configurar las rutas a los archivos DEM</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPathSetup.ui" line="38"/>
-        <location filename="../dem/IDemPathSetup.ui" line="58"/>
+        <location filename="../dem/IDemPathSetup.ui" line="31"/>
+        <location filename="../dem/IDemPathSetup.ui" line="51"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPathSetup.ui" line="107"/>
+        <location filename="../dem/IDemPathSetup.ui" line="112"/>
         <source>-</source>
-        <translation type="unfinished"></translation>
+        <translation>-</translation>
     </message>
 </context>
 <context>
@@ -1417,33 +1717,33 @@ is not a valid coordinate system definition:
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="20"/>
         <source><html><head/><body><p>Change opacity of map</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Cambiar la opacidad del mapa</p></body></html></translation>
     </message>
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="32"/>
         <source><html><head/><body><p>Click to use current scale as minimum scale to display the map.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Pulse para usar la escala actual como la escala mínima a la que mostrar el mapa.</p></body></html></translation>
     </message>
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="35"/>
         <location filename="../dem/IDemPropSetup.ui" line="72"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="56"/>
         <source><html><head/><body><p>Control the range of scale the map is displayed. Use the two buttons left and right to define the actual scale as either minimum or maximum scale.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Controle el rango de escalas para las cuales desea que se muestre el mapa. Use los dos botones a izquierda y derecha para definir la escala actual como bien la escala mínima o máxima para el mapa.</p></body></html></translation>
     </message>
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="69"/>
         <source><html><head/><body><p>Click to use current scale as maximum scale to display the map.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Pulse para usar la escala actual como la escala máxima a la que mostrar el mapa</p></body></html></translation>
     </message>
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="97"/>
         <source>Hillshading</source>
-        <translation type="unfinished"></translation>
+        <translation>Sombreado</translation>
     </message>
 </context>
 <context>
@@ -1456,17 +1756,17 @@ is not a valid coordinate system definition:
     <message>
         <location filename="../dem/IDemList.ui" line="118"/>
         <source>To add files with elevation data use File->Setup DEM Paths. </source>
-        <translation type="unfinished"></translation>
+        <translation>Para añadir archivos con información de elevación use Archivo->Configurar Rutas a los DEM. </translation>
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="131"/>
         <source>Use the context menu (right mouse button click on entry) to activate a file. Use drag-n-drop to move the activated file in the process order. </source>
-        <translation type="unfinished"></translation>
+        <translation>Use el menú contextual (botón derecho del ratón y seleccione) para activar un archivo. Use arrastrar y soltar para mover el archivo activado en el orden de procesamiento.</translation>
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="156"/>
         <source>Activate</source>
-        <translation type="unfinished"></translation>
+        <translation>Activar</translation>
     </message>
 </context>
 <context>
@@ -1490,37 +1790,37 @@ is not a valid coordinate system definition:
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="209"/>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="222"/>
         <source>-</source>
-        <translation type="unfinished"></translation>
+        <translation>-</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="43"/>
         <source>about:blank</source>
-        <translation type="unfinished"></translation>
+        <translation>about:blank</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="59"/>
         <source>Position:</source>
-        <translation type="unfinished"></translation>
+        <translation>Posición:</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="79"/>
         <source>Difficulty</source>
-        <translation type="unfinished"></translation>
+        <translation>Dificultad</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="157"/>
         <source>Terrain</source>
-        <translation type="unfinished"></translation>
+        <translation>Terreno</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="231"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsGeoCache.ui" line="249"/>
         <source>Hint:</source>
-        <translation type="unfinished"></translation>
+        <translation>Consejo:</translation>
     </message>
 </context>
 <context>
@@ -1531,48 +1831,68 @@ is not a valid coordinate system definition:
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="37"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="44"/>
         <source>-</source>
-        <translation type="unfinished"></translation>
+        <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="75"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="82"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="105"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="112"/>
         <source>Color</source>
-        <translation type="unfinished"></translation>
+        <translation>Color</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="126"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="133"/>
         <source>Border width</source>
-        <translation type="unfinished"></translation>
+        <translation>Ancho del borde</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="140"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="147"/>
         <source>Style</source>
-        <translation type="unfinished"></translation>
+        <translation>Estilo</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="159"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="166"/>
         <source>Opacity</source>
-        <translation type="unfinished"></translation>
+        <translation>Opacidad</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="179"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="186"/>
         <source>Points</source>
-        <translation type="unfinished"></translation>
+        <translation>Puntos</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="206"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="213"/>
         <source>Position</source>
-        <translation type="unfinished"></translation>
+        <translation>Posición</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="215"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="222"/>
         <source>Hist.</source>
+        <translation>Historial</translation>
+    </message>
+</context>
+<context>
+    <name>IDetailsPrj</name>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="44"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="51"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="75"/>
+        <source>-</source>
+        <translation type="unfinished">-</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="68"/>
+        <source>Keywords:</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1588,88 +1908,89 @@ is not a valid coordinate system definition:
         <location filename="../gis/trk/IDetailsTrk.ui" line="77"/>
         <source>-
 -</source>
-        <translation type="unfinished"></translation>
+        <translation>-
+-</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="237"/>
         <source>Profile</source>
-        <translation type="unfinished"></translation>
+        <translation>Perfil</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="244"/>
         <location filename="../gis/trk/IDetailsTrk.ui" line="370"/>
         <source>Speed</source>
-        <translation type="unfinished"></translation>
+        <translation>Velocidad</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="251"/>
         <source>Progress</source>
-        <translation type="unfinished"></translation>
+        <translation>Progreso</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="194"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="302"/>
         <source>Points</source>
-        <translation type="unfinished"></translation>
+        <translation>Puntos</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="350"/>
         <source>Time</source>
-        <translation type="unfinished"></translation>
+        <translation>Tiempo</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="355"/>
         <source>Ele.</source>
-        <translation type="unfinished"></translation>
+        <translation>Altitud</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="360"/>
         <source>Delta</source>
-        <translation type="unfinished"></translation>
+        <translation>Delta</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="365"/>
         <source>Dist.</source>
-        <translation type="unfinished"></translation>
+        <translation>Distancia</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="375"/>
         <source>Slope</source>
-        <translation type="unfinished"></translation>
+        <translation>Pendiente</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="380"/>
         <source>Ascend</source>
-        <translation type="unfinished"></translation>
+        <translation>Ascenso</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="385"/>
         <source>Descend</source>
-        <translation type="unfinished"></translation>
+        <translation>Descenso</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="390"/>
         <source>Position</source>
-        <translation type="unfinished"></translation>
+        <translation>Posición</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="156"/>
         <source>Info</source>
-        <translation type="unfinished"></translation>
+        <translation>Información</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="273"/>
         <source>-</source>
-        <translation type="unfinished"></translation>
+        <translation>-</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="399"/>
         <source>Hist.</source>
-        <translation type="unfinished"></translation>
+        <translation>Historial</translation>
     </message>
 </context>
 <context>
@@ -1680,49 +2001,49 @@ is not a valid coordinate system definition:
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="121"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="242"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="128"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="249"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="155"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="162"/>
         <source>Position:</source>
-        <translation type="unfinished"></translation>
+        <translation>Posición:</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="72"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="83"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="162"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="188"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="214"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="90"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="169"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="195"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="221"/>
         <source>-</source>
-        <translation type="unfinished"></translation>
+        <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="175"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="182"/>
         <source>Ele.</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="201"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="208"/>
         <source>Proximity:</source>
-        <translation type="unfinished"></translation>
+        <translation>Proximidad:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="102"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="109"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>El waypoint se importó en QMapShack y ha sido modificado, por lo que ya no muestra los datos originales. Por favor consulte  los cambios en el histórico. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="118"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="125"/>
         <source><html><head/><body><p>Read Only Mode</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Modo Sólo Lectura</p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="65"/>
         <source>Date/Time:</source>
-        <translation type="unfinished"></translation>
+        <translation>Fecha/Hora:</translation>
     </message>
 </context>
 <context>
@@ -1730,27 +2051,27 @@ is not a valid coordinate system definition:
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="14"/>
         <source>Edit elevation...</source>
-        <translation type="unfinished"></translation>
+        <translation>Editar altitud...</translation>
     </message>
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="22"/>
         <source>Elevation</source>
-        <translation type="unfinished"></translation>
+        <translation>Altitud</translation>
     </message>
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="32"/>
         <source>-</source>
-        <translation type="unfinished"></translation>
+        <translation>-</translation>
     </message>
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="39"/>
         <source>Get elevation from active digital elevation model.</source>
-        <translation type="unfinished"></translation>
+        <translation>Obtener la altitud desde el DEM activo.</translation>
     </message>
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="42"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -1761,27 +2082,37 @@ is not a valid coordinate system definition:
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisWidget.ui" line="59"/>
+        <location filename="../gis/IGisWidget.ui" line="62"/>
         <source>State</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../gis/IGisWidget.ui" line="94"/>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisWidget.ui" line="127"/>
+        <source>To add a database do a right click on the database list above.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IGridSetup</name>
     <message>
         <location filename="../grid/IGridSetup.ui" line="14"/>
         <source>Setup Grid...</source>
-        <translation type="unfinished"></translation>
+        <translation>Configurar Malla...</translation>
     </message>
     <message>
         <location filename="../grid/IGridSetup.ui" line="22"/>
         <source>Projection</source>
-        <translation type="unfinished"></translation>
+        <translation>Proyección</translation>
     </message>
     <message>
         <location filename="../grid/IGridSetup.ui" line="37"/>
         <source>restore default</source>
-        <translation type="unfinished"></translation>
+        <translation>restaurar predeterminado</translation>
     </message>
     <message>
         <location filename="../grid/IGridSetup.ui" line="40"/>
@@ -1789,235 +2120,328 @@ is not a valid coordinate system definition:
         <location filename="../grid/IGridSetup.ui" line="92"/>
         <location filename="../grid/IGridSetup.ui" line="146"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <location filename="../grid/IGridSetup.ui" line="63"/>
         <source>Get projection from current map.</source>
-        <translation type="unfinished"></translation>
+        <translation>Obtener la proyección desde el mapa actual.</translation>
     </message>
     <message>
         <location filename="../grid/IGridSetup.ui" line="89"/>
         <source>projection wizzard</source>
-        <translation type="unfinished"></translation>
+        <translation>asistente de proyección</translation>
     </message>
     <message>
         <location filename="../grid/IGridSetup.ui" line="130"/>
         <source>Grid color</source>
-        <translation type="unfinished"></translation>
+        <translation>Color de la malla</translation>
     </message>
     <message>
         <location filename="../grid/IGridSetup.ui" line="143"/>
         <source>setup grid color</source>
-        <translation type="unfinished"></translation>
+        <translation>configurar el color de la malla</translation>
     </message>
 </context>
 <context>
-    <name>IInputDialog</name>
+    <name>IImportDatabase</name>
     <message>
-        <location filename="../helpers/IInputDialog.ui" line="14"/>
-        <source>Edit...</source>
+        <location filename="../qlgt/IImportDatabase.ui" line="14"/>
+        <source>Form</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/IInputDialog.ui" line="20"/>
-        <source>TextLabel</source>
+        <location filename="../qlgt/IImportDatabase.ui" line="28"/>
+        <source>Source Database:</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IMainWindow</name>
     <message>
-        <location filename="../IMainWindow.ui" line="14"/>
-        <source>QMapShack</source>
-        <translation type="unfinished"></translation>
+        <location filename="../qlgt/IImportDatabase.ui" line="35"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="76"/>
+        <source>-</source>
+        <translation type="unfinished">-</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="60"/>
-        <source>File</source>
+        <location filename="../qlgt/IImportDatabase.ui" line="42"/>
+        <location filename="../qlgt/IImportDatabase.ui" line="83"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/IImportDatabase.ui" line="69"/>
+        <source>Target Database:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../qlgt/IImportDatabase.ui" line="102"/>
+        <source>Start</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>IInputDialog</name>
+    <message>
+        <location filename="../helpers/IInputDialog.ui" line="14"/>
+        <source>Edit...</source>
+        <translation>Editar...</translation>
+    </message>
+    <message>
+        <location filename="../helpers/IInputDialog.ui" line="20"/>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ILinksDialog</name>
+    <message>
+        <location filename="../helpers/ILinksDialog.ui" line="14"/>
+        <source>Links...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../helpers/ILinksDialog.ui" line="23"/>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../helpers/ILinksDialog.ui" line="28"/>
+        <source>Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../helpers/ILinksDialog.ui" line="33"/>
+        <source>Uri</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../helpers/ILinksDialog.ui" line="43"/>
+        <location filename="../helpers/ILinksDialog.ui" line="63"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+</context>
+<context>
+    <name>IMainWindow</name>
+    <message>
+        <location filename="../IMainWindow.ui" line="14"/>
+        <source>QMapShack</source>
+        <translation>QMapShack</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="60"/>
+        <source>File</source>
+        <translation>Archivo</translation>
+    </message>
+    <message>
         <location filename="../IMainWindow.ui" line="70"/>
         <source>View</source>
-        <translation type="unfinished"></translation>
+        <translation>Ver</translation>
     </message>
     <message>
         <location filename="../IMainWindow.ui" line="89"/>
         <source>Window</source>
-        <translation type="unfinished"></translation>
+        <translation>Ventana</translation>
     </message>
     <message>
         <location filename="../IMainWindow.ui" line="94"/>
         <source>?</source>
-        <translation type="unfinished"></translation>
+        <translation>?</translation>
     </message>
     <message>
         <location filename="../IMainWindow.ui" line="101"/>
         <source>Project</source>
+        <translation>Proyecto</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="111"/>
+        <source>Tool</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="121"/>
+        <location filename="../IMainWindow.ui" line="128"/>
         <source>Maps</source>
-        <translation type="unfinished"></translation>
+        <translation>Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="158"/>
+        <location filename="../IMainWindow.ui" line="165"/>
         <source>Dig. Elev. Model (DEM)</source>
-        <translation type="unfinished"></translation>
+        <translation>Modelo Digital del Terreno (DEM)</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="191"/>
+        <location filename="../IMainWindow.ui" line="198"/>
         <source>Data</source>
-        <translation type="unfinished"></translation>
+        <translation>Datos</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="204"/>
+        <location filename="../IMainWindow.ui" line="211"/>
         <source>Add Map Workspace</source>
-        <translation type="unfinished"></translation>
+        <translation>Añadir Espacio de Trabajo de Mapa</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="207"/>
+        <location filename="../IMainWindow.ui" line="214"/>
         <source>Ctrl+T</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+T</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="219"/>
+        <location filename="../IMainWindow.ui" line="226"/>
         <source>Show Scale</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar Escala</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="228"/>
+        <location filename="../IMainWindow.ui" line="235"/>
         <source>Setup Map Font</source>
-        <translation type="unfinished"></translation>
+        <translation>Configurar Fuente del Mapa</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="240"/>
+        <location filename="../IMainWindow.ui" line="247"/>
         <source>Show Grid</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar Malla</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="243"/>
+        <location filename="../IMainWindow.ui" line="250"/>
         <source>Ctrl+G</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="252"/>
+        <location filename="../IMainWindow.ui" line="259"/>
         <source>Setup Grid</source>
-        <translation type="unfinished"></translation>
+        <translation>Configurar Malla</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="255"/>
+        <location filename="../IMainWindow.ui" line="262"/>
         <source>Ctrl+Alt+G</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+Alt+G</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="267"/>
+        <location filename="../IMainWindow.ui" line="274"/>
         <source>Flip Mouse Wheel</source>
-        <translation type="unfinished"></translation>
+        <translation>Invertir la Rueda del Ratón</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="276"/>
-        <location filename="../IMainWindow.ui" line="279"/>
+        <location filename="../IMainWindow.ui" line="283"/>
+        <location filename="../IMainWindow.ui" line="286"/>
         <source>Setup Map Paths</source>
-        <translation type="unfinished"></translation>
+        <translation>Configurar Rutas de Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="291"/>
+        <location filename="../IMainWindow.ui" line="298"/>
         <source>POI Text</source>
-        <translation type="unfinished"></translation>
+        <translation>Texto del POI</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="303"/>
+        <location filename="../IMainWindow.ui" line="310"/>
         <source>Night / Day</source>
-        <translation type="unfinished"></translation>
+        <translation>Noche / Día</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="315"/>
+        <location filename="../IMainWindow.ui" line="322"/>
         <source>Map Tool Tip</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar Tooltips en los Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="324"/>
+        <location filename="../IMainWindow.ui" line="331"/>
         <source>Setup DEM Paths</source>
-        <translation type="unfinished"></translation>
+        <translation>Configurar Rutas a los DEM</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="333"/>
+        <location filename="../IMainWindow.ui" line="340"/>
         <source>About</source>
-        <translation type="unfinished"></translation>
+        <translation>Acerca de</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="342"/>
+        <location filename="../IMainWindow.ui" line="349"/>
         <source>Help</source>
-        <translation type="unfinished"></translation>
+        <translation>Ayuda</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="351"/>
+        <location filename="../IMainWindow.ui" line="358"/>
         <source>Setup Map Workspace</source>
-        <translation type="unfinished"></translation>
+        <translation>Configurar Espacio de Trabajo de Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="360"/>
+        <location filename="../IMainWindow.ui" line="367"/>
         <source>Load GIS Data</source>
-        <translation type="unfinished"></translation>
+        <translation>Cargar Datos GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="363"/>
+        <location filename="../IMainWindow.ui" line="370"/>
         <source>Load projects from file</source>
-        <translation type="unfinished"></translation>
+        <translation>Cargar proyectos desde archivo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="366"/>
+        <location filename="../IMainWindow.ui" line="373"/>
         <source>Ctrl+L</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+L</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="375"/>
+        <location filename="../IMainWindow.ui" line="382"/>
         <source>Save All GIS Data</source>
-        <translation type="unfinished"></translation>
+        <translation>Guardar Todos los Datos GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="378"/>
+        <location filename="../IMainWindow.ui" line="385"/>
         <source>Save all projects in the workspace</source>
-        <translation type="unfinished"></translation>
+        <translation>Guardar todos los proyectos del espacio de trabajo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="381"/>
+        <location filename="../IMainWindow.ui" line="388"/>
         <source>Ctrl+S</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+S</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="390"/>
+        <location filename="../IMainWindow.ui" line="397"/>
         <source>Setup Time Zone</source>
-        <translation type="unfinished"></translation>
+        <translation>Configurar Zona Horaria</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="399"/>
+        <location filename="../IMainWindow.ui" line="406"/>
         <source>Add empty project</source>
-        <translation type="unfinished"></translation>
+        <translation>Añadir proyecto vacío</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="411"/>
+        <location filename="../IMainWindow.ui" line="418"/>
         <source>Search Google</source>
-        <translation type="unfinished"></translation>
+        <translation>Buscar en Google</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="420"/>
+        <location filename="../IMainWindow.ui" line="427"/>
         <source>Close all projects</source>
+        <translation>Cerrar todos los proyectos</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="430"/>
+        <source>F8</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="429"/>
+        <location filename="../IMainWindow.ui" line="439"/>
         <source>Setup Units</source>
+        <translation>Configurar Unidades</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="448"/>
+        <source>Setup Workspace</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="438"/>
-        <source>Setup Database</source>
+        <location filename="../IMainWindow.ui" line="451"/>
+        <source>Setup save on exit.</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="460"/>
+        <source>Import Database from QLandkarte</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="463"/>
+        <source>Import QLandkarte GT database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Setup Database</source>
+        <translation type="obsolete">Configurar Base de Datos</translation>
+    </message>
 </context>
 <context>
     <name>IMapList</name>
@@ -2029,17 +2453,17 @@ is not a valid coordinate system definition:
     <message>
         <location filename="../map/IMapList.ui" line="103"/>
         <source>To add maps use File->Setup Map Paths. </source>
-        <translation type="unfinished"></translation>
+        <translation>Para añadir mapas use Archivo->Configurar Rutas de Mapas. </translation>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="116"/>
         <source>Use the context menu (right mouse button click on entry) to activate a map. Use drag-n-drop to move the activated map in the draw order. </source>
-        <translation type="unfinished"></translation>
+        <translation>Use el menú contextual (botón derecho del ratón, y seleccione) para activar un mapa. Use arrastrar y soltar para mover el mapa activado en el orden de dibujado. </translation>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="141"/>
         <source>Activate</source>
-        <translation type="unfinished"></translation>
+        <translation>Activar</translation>
     </message>
 </context>
 <context>
@@ -2047,18 +2471,18 @@ is not a valid coordinate system definition:
     <message>
         <location filename="../map/IMapPathSetup.ui" line="14"/>
         <source>Setup map paths</source>
-        <translation type="unfinished"></translation>
+        <translation>Configurar rutas de mapas</translation>
     </message>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="38"/>
-        <location filename="../map/IMapPathSetup.ui" line="58"/>
+        <location filename="../map/IMapPathSetup.ui" line="31"/>
+        <location filename="../map/IMapPathSetup.ui" line="51"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="107"/>
+        <location filename="../map/IMapPathSetup.ui" line="93"/>
         <source>-</source>
-        <translation type="unfinished"></translation>
+        <translation>-</translation>
     </message>
 </context>
 <context>
@@ -2071,59 +2495,59 @@ is not a valid coordinate system definition:
     <message>
         <location filename="../map/IMapPropSetup.ui" line="35"/>
         <source><html><head/><body><p>Change opacity of map</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Cambiar la opacidad del mapa</p></body></html></translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="47"/>
         <source><html><head/><body><p>Click to use current scale as minimum scale to display the map.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Pulse para usar la escala actual como la escala mínima a la que mostrar el mapa.</p></body></html></translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="50"/>
         <location filename="../map/IMapPropSetup.ui" line="87"/>
         <location filename="../map/IMapPropSetup.ui" line="194"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="71"/>
         <source><html><head/><body><p>Control the range of scale the map is displayed. Use the two buttons left and right to define the actual scale as either minimum or maximum scale.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Controle el rango de escalas para las cuales desea que se muestre el mapa. Use los dos botones a izquierda y derecha para definir la escala actual como bien la escala mínima o máxima para el mapa.</p></body></html></translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="84"/>
         <source><html><head/><body><p>Click to use current scale as maximum scale to display the map.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Pulse para usar la escala actual como la escala máxima a la que mostrar el mapa.</p></body></html></translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="134"/>
         <source>Areas</source>
-        <translation type="unfinished"></translation>
+        <translation>Áreas</translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="141"/>
         <source>Lines</source>
-        <translation type="unfinished"></translation>
+        <translation>Líneas</translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="148"/>
         <source>Points</source>
-        <translation type="unfinished"></translation>
+        <translation>Puntos</translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="184"/>
         <source>-</source>
-        <translation type="unfinished"></translation>
+        <translation>-</translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="208"/>
         <source>Cache Size (MB)</source>
-        <translation type="unfinished"></translation>
+        <translation>Tamaño de Caché (MiB)</translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="228"/>
         <source>Expiration (Days)</source>
-        <translation type="unfinished"></translation>
+        <translation>Caducidad (Días)</translation>
     </message>
 </context>
 <context>
@@ -2131,22 +2555,22 @@ is not a valid coordinate system definition:
     <message>
         <location filename="../mouse/IMouseEditLine.cpp" line="339"/>
         <source>Add points?</source>
-        <translation type="unfinished"></translation>
+        <translation>¿Añadir puntos?</translation>
     </message>
     <message>
         <location filename="../mouse/IMouseEditLine.cpp" line="339"/>
         <source>Add points to temporary line?</source>
-        <translation type="unfinished"></translation>
+        <translation>¿Añadir puntos a la línea temporal?</translation>
     </message>
     <message>
         <location filename="../mouse/IMouseEditLine.cpp" line="876"/>
         <source>Warning!</source>
-        <translation type="unfinished"></translation>
+        <translation>¡Cuidado!</translation>
     </message>
     <message>
         <location filename="../mouse/IMouseEditLine.cpp" line="876"/>
         <source>This will replace all data of the orignal by a simple line of coordinates. All other data will be lost permanently.</source>
-        <translation type="unfinished"></translation>
+        <translation>Esto sustituirá todos los datos del original con una simple línea de coordenadas. Todos los demás datos se perderán definitivamente.</translation>
     </message>
 </context>
 <context>
@@ -2154,7 +2578,7 @@ is not a valid coordinate system definition:
     <message>
         <location filename="../plot/IPlot.cpp" line="465"/>
         <source>No or bad data.</source>
-        <translation type="unfinished"></translation>
+        <translation>Datos incorrectos o inexistentes.</translation>
     </message>
 </context>
 <context>
@@ -2162,12 +2586,12 @@ is not a valid coordinate system definition:
     <message>
         <location filename="../helpers/IPositionDialog.ui" line="14"/>
         <source>Position ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Posición ...</translation>
     </message>
     <message>
         <location filename="../helpers/IPositionDialog.ui" line="20"/>
         <source>Enter new position</source>
-        <translation type="unfinished"></translation>
+        <translation>Introduzca la nueva posición</translation>
     </message>
     <message>
         <location filename="../helpers/IPositionDialog.ui" line="30"/>
@@ -2175,7 +2599,10 @@ is not a valid coordinate system definition:
 "[N|S] ddd mm.sss [W|E] ddd mm.sss"
 or
 "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
-        <translation type="unfinished"></translation>
+        <translation>Formato de posición incorrecto. Debe ser: 
+"[N|S] ggg mm.sss [W|E] ggg mm.sss"
+o
+"[N|S] ggg.ggg [W|E] ggg.ggg"</translation>
     </message>
 </context>
 <context>
@@ -2183,57 +2610,57 @@ or
     <message>
         <location filename="../grid/IProjWizard.ui" line="14"/>
         <source>Proj4 Wizzard</source>
-        <translation type="unfinished"></translation>
+        <translation>Asistente de Proj4</translation>
     </message>
     <message>
         <location filename="../grid/IProjWizard.ui" line="29"/>
         <source>Mercator</source>
-        <translation type="unfinished"></translation>
+        <translation>Mercator</translation>
     </message>
     <message>
         <location filename="../grid/IProjWizard.ui" line="38"/>
         <source>UTM</source>
-        <translation type="unfinished"></translation>
+        <translation>UTM</translation>
     </message>
     <message>
         <location filename="../grid/IProjWizard.ui" line="45"/>
         <source>zone</source>
-        <translation type="unfinished"></translation>
+        <translation>zona</translation>
     </message>
     <message>
         <location filename="../grid/IProjWizard.ui" line="82"/>
         <source>user defined</source>
-        <translation type="unfinished"></translation>
+        <translation>definido por el usuario</translation>
     </message>
     <message>
         <location filename="../grid/IProjWizard.ui" line="94"/>
         <source>Datum</source>
-        <translation type="unfinished"></translation>
+        <translation>Datum</translation>
     </message>
     <message>
         <location filename="../grid/IProjWizard.ui" line="104"/>
         <source>World Mercator (OSM)</source>
-        <translation type="unfinished"></translation>
+        <translation>World Mercator (OSM)</translation>
     </message>
     <message>
         <location filename="../grid/IProjWizard.ui" line="124"/>
         <source>Result:</source>
-        <translation type="unfinished"></translation>
+        <translation>Resultado:</translation>
     </message>
     <message>
         <location filename="../grid/IProjWizard.ui" line="138"/>
         <source>UPS North (North Pole)</source>
-        <translation type="unfinished"></translation>
+        <translation>UPS Norte (Polo Norte)</translation>
     </message>
     <message>
         <location filename="../grid/IProjWizard.ui" line="145"/>
         <source>UPS South (South Pole)</source>
-        <translation type="unfinished"></translation>
+        <translation>UPS Sur (Polo Sur)</translation>
     </message>
     <message>
         <location filename="../grid/IProjWizard.ui" line="152"/>
         <source>Projection</source>
-        <translation type="unfinished"></translation>
+        <translation>Proyección</translation>
     </message>
 </context>
 <context>
@@ -2241,32 +2668,32 @@ or
     <message>
         <location filename="../gis/wpt/IProjWpt.ui" line="14"/>
         <source>Waypoint Projection</source>
-        <translation type="unfinished"></translation>
+        <translation>Proyección del Waypoint</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IProjWpt.ui" line="22"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="38"/>
+        <location filename="../gis/wpt/IProjWpt.ui" line="45"/>
         <source>-</source>
-        <translation type="unfinished"></translation>
+        <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="47"/>
+        <location filename="../gis/wpt/IProjWpt.ui" line="54"/>
         <source>Clone waypoint and move by:</source>
-        <translation type="unfinished"></translation>
+        <translation>Clonar el waypoint y moverlo:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="59"/>
+        <location filename="../gis/wpt/IProjWpt.ui" line="66"/>
         <source>m</source>
-        <translation type="unfinished"></translation>
+        <translation>m</translation>
     </message>
     <message utf8="true">
-        <location filename="../gis/wpt/IProjWpt.ui" line="69"/>
+        <location filename="../gis/wpt/IProjWpt.ui" line="76"/>
         <source>°</source>
-        <translation type="unfinished"></translation>
+        <translation>º</translation>
     </message>
 </context>
 <context>
@@ -2277,19 +2704,19 @@ or
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptEditLine.ui" line="50"/>
+        <location filename="../mouse/IScrOptEditLine.ui" line="47"/>
         <source>Save to orignal</source>
-        <translation type="unfinished"></translation>
+        <translation>Guardar al original</translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptEditLine.ui" line="57"/>
+        <location filename="../mouse/IScrOptEditLine.ui" line="54"/>
         <source>Save as new</source>
-        <translation type="unfinished"></translation>
+        <translation>Guardar como nuevo</translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptEditLine.ui" line="64"/>
+        <location filename="../mouse/IScrOptEditLine.ui" line="61"/>
         <source>Abort</source>
-        <translation type="unfinished"></translation>
+        <translation>Abortar</translation>
     </message>
 </context>
 <context>
@@ -2304,7 +2731,7 @@ or
         <location filename="../gis/ovl/IScrOptOvlArea.ui" line="51"/>
         <location filename="../gis/ovl/IScrOptOvlArea.ui" line="69"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <location filename="../gis/ovl/IScrOptOvlArea.ui" line="98"/>
@@ -2322,27 +2749,27 @@ or
     <message>
         <location filename="../mouse/IScrOptPoint.ui" line="35"/>
         <source>Delete point.</source>
-        <translation type="unfinished"></translation>
+        <translation>Borrar punto.</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptPoint.ui" line="49"/>
         <source>Select a range of points.</source>
-        <translation type="unfinished"></translation>
+        <translation>Selecciones un rango de puntos.</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptPoint.ui" line="63"/>
         <source>Move selected point.</source>
-        <translation type="unfinished"></translation>
+        <translation>Mover el punto seleccionado.</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptPoint.ui" line="77"/>
         <source>Add points before the selected point.</source>
-        <translation type="unfinished"></translation>
+        <translation>Añadir puntos antes del seleccionado.</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptPoint.ui" line="91"/>
         <source>Add points after the selected point.</source>
-        <translation type="unfinished"></translation>
+        <translation>Añadir puntos después del seleccionado.</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptPoint.ui" line="38"/>
@@ -2351,7 +2778,7 @@ or
         <location filename="../mouse/IScrOptPoint.ui" line="80"/>
         <location filename="../mouse/IScrOptPoint.ui" line="94"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2364,12 +2791,12 @@ or
     <message>
         <location filename="../mouse/IScrOptRange.ui" line="32"/>
         <source>Delete selected range of points.</source>
-        <translation type="unfinished"></translation>
+        <translation>Borrar el rango de puntos seleccionado.</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptRange.ui" line="35"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2382,24 +2809,24 @@ or
     <message>
         <location filename="../mouse/IScrOptRangeTrk.ui" line="40"/>
         <source>Hide all points.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ocultar todos los puntos.</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptRangeTrk.ui" line="43"/>
         <location filename="../mouse/IScrOptRangeTrk.ui" line="57"/>
         <location filename="../mouse/IScrOptRangeTrk.ui" line="71"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptRangeTrk.ui" line="54"/>
         <source>Show all points.</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar todos los puntos.</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptRangeTrk.ui" line="68"/>
         <source>Copy track points as new track.</source>
-        <translation type="unfinished"></translation>
+        <translation>Copiar los puntos del track como un nuevo track.</translation>
     </message>
     <message>
         <location filename="../mouse/IScrOptRangeTrk.ui" line="103"/>
@@ -2417,18 +2844,18 @@ or
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="28"/>
         <source><html><head/><body><p>View details &amp; Edit</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Ver detalles &amp; Editar</p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="31"/>
         <location filename="../gis/rte/IScrOptRte.ui" line="45"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="42"/>
         <source><html><head/><body><p>Delete</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Borrar</p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="71"/>
@@ -2446,52 +2873,57 @@ or
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="40"/>
         <source>View details &amp; Edit properties of track.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ver detalles &amp; Editar las propiedades del track.</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="71"/>
         <source>Delete</source>
-        <translation type="unfinished"></translation>
+        <translation>Borrar.</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="54"/>
         <source>Show on-screen profile and detailed information about points.</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar el perfil en pantalla e información detallada de los puntos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="145"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="148"/>
         <source>Cut track at selected point into two tracks.</source>
-        <translation type="unfinished"></translation>
+        <translation>Partir el track en dos en el punto seleccionado.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="103"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="106"/>
         <source>Edit position of track points.</source>
-        <translation type="unfinished"></translation>
+        <translation>Editar la posición de los puntos del track.</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="43"/>
         <location filename="../gis/trk/IScrOptTrk.ui" line="57"/>
         <location filename="../gis/trk/IScrOptTrk.ui" line="74"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="92"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="106"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="120"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="134"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="148"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="95"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="109"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="123"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="137"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="151"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="92"/>
+        <source>Select a range of points.</source>
+        <translation type="unfinished">Selecciones un rango de puntos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="117"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="120"/>
         <source>Reverse track.</source>
-        <translation type="unfinished"></translation>
+        <translation>Invertir track.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="131"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="134"/>
         <source>Combine tracks.</source>
-        <translation type="unfinished"></translation>
+        <translation>Combinar tracks.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="174"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="177"/>
         <source>TextLabel</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2506,7 +2938,7 @@ or
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="49"/>
         <source><html><head/><body><p>View details &amp; Edit</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Ver detalles &amp; Editar</p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="52"/>
@@ -2514,22 +2946,22 @@ or
         <location filename="../gis/wpt/IScrOptWpt.ui" line="87"/>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="101"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="63"/>
         <source><html><head/><body><p>Delete</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Borrar</p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="84"/>
         <source><html><head/><body><p>Move waypoint to a new location.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Mover el waypoint a una nueva ubicación.</p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="98"/>
         <source><html><head/><body><p>Clone waypoint and move clone a given distance and angle.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Clonar el waypoibt y moverlo una cierta distancia y ángulo.</p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="145"/>
@@ -2542,68 +2974,147 @@ or
     <message>
         <location filename="../helpers/ISelectProjectDialog.ui" line="14"/>
         <source>Select a project...</source>
-        <translation type="unfinished"></translation>
+        <translation>Seleccionar un proyecto...</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectProjectDialog.ui" line="20"/>
         <source>Select project from list or enter new project name.</source>
-        <translation type="unfinished"></translation>
+        <translation>Seleccione un proyecto de la lista, o introduzca un nuevo nombre de proyecto.</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectProjectDialog.ui" line="36"/>
         <source>New project is created as:</source>
-        <translation type="unfinished"></translation>
+        <translation>El nuevo proyecto se creó como:</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectProjectDialog.ui" line="73"/>
         <source>*.qms</source>
-        <translation type="unfinished"></translation>
+        <translation>*.qms</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectProjectDialog.ui" line="83"/>
         <source>*.gpx</source>
-        <translation type="unfinished"></translation>
+        <translation>*.gpx</translation>
     </message>
 </context>
 <context>
     <name>ISetupDB</name>
     <message>
-        <location filename="../gis/db/ISetupDB.ui" line="14"/>
         <source>Setup database...</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Configurar la base de datos...</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDB.ui" line="35"/>
         <source>save workspace on exit, and every</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">guardar el espacio de trabajo al salir, y cada</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDB.ui" line="45"/>
         <source>minutes</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">minutos</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDB.ui" line="62"/>
         <source>Database path</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Ruta de la base de datos</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDB.ui" line="69"/>
         <source>...</source>
+        <translation type="obsolete">...</translation>
+    </message>
+    <message>
+        <source>-</source>
+        <translation type="obsolete">-</translation>
+    </message>
+</context>
+<context>
+    <name>ISetupDatabase</name>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="14"/>
+        <source>Add database...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDB.ui" line="92"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="25"/>
+        <source>File</source>
+        <translation type="unfinished">Archivo</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="32"/>
         <source>-</source>
+        <translation type="unfinished">-</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="39"/>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="46"/>
+        <source>Add new database.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="49"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="63"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="60"/>
+        <source>Open existing database.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
+    <name>ISetupFolder</name>
+    <message>
+        <location filename="../gis/db/ISetupFolder.ui" line="14"/>
+        <source>Folder...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupFolder.ui" line="22"/>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupFolder.ui" line="34"/>
+        <source>Group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupFolder.ui" line="45"/>
+        <source>Project</source>
+        <translation type="unfinished">Proyecto</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupFolder.ui" line="59"/>
+        <source>Other</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ISetupWorkspace</name>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="14"/>
+        <source>Setup database...</source>
+        <translation type="unfinished">Configurar la base de datos...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="35"/>
+        <source>save workspace on exit, and every</source>
+        <translation type="unfinished">guardar el espacio de trabajo al salir, y cada</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="45"/>
+        <source>minutes</source>
+        <translation type="unfinished">minutos</translation>
+    </message>
+</context>
+<context>
     <name>ITextEditWidget</name>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="14"/>
         <source>Edit text...</source>
-        <translation type="unfinished"></translation>
+        <translation>Editar texto...</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="25"/>
@@ -2620,127 +3131,127 @@ or
         <location filename="../helpers/ITextEditWidget.ui" line="195"/>
         <location filename="../helpers/ITextEditWidget.ui" line="208"/>
         <source>...</source>
-        <translation type="unfinished"></translation>
+        <translation>...</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="263"/>
         <source>Undo</source>
-        <translation type="unfinished"></translation>
+        <translation>Deshacer</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="266"/>
         <source>Ctrl+Z</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+Z</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="275"/>
         <source>Redo</source>
-        <translation type="unfinished"></translation>
+        <translation>Rehacer</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="278"/>
         <source>Ctrl+Shift+Z</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+Shift+Z</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="287"/>
         <source>Cut</source>
-        <translation type="unfinished"></translation>
+        <translation>Cortar</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="290"/>
         <source>Ctrl+X</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+X</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="299"/>
         <source>Copy</source>
-        <translation type="unfinished"></translation>
+        <translation>Copiar</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="302"/>
         <source>Ctrl+C</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+C</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="311"/>
         <source>Paste</source>
-        <translation type="unfinished"></translation>
+        <translation>Pegar</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="314"/>
         <source>Ctrl+V</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+V</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="326"/>
         <source>Align Left</source>
-        <translation type="unfinished"></translation>
+        <translation>Alinear a la Izquierda</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="329"/>
         <source>Ctrl+L</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+L</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="341"/>
         <source>Align Right</source>
-        <translation type="unfinished"></translation>
+        <translation>Alinear a la Derecha</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="344"/>
         <source>Ctrl+R</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+R</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="356"/>
         <source>Align Center</source>
-        <translation type="unfinished"></translation>
+        <translation>Alinear al Centro</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="359"/>
         <source>Ctrl+E</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+E</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="371"/>
         <source>Align Block</source>
-        <translation type="unfinished"></translation>
+        <translation>Alinear Bloque</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="374"/>
         <source>Ctrl+J</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+J</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="386"/>
         <source>Underline</source>
-        <translation type="unfinished"></translation>
+        <translation>Subrayar</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="389"/>
         <source>Ctrl+U</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+U</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="401"/>
         <source>Bold</source>
-        <translation type="unfinished"></translation>
+        <translation>Negrita</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="404"/>
         <source>Ctrl+B</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+B</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="416"/>
         <source>Italic</source>
-        <translation type="unfinished"></translation>
+        <translation>Cursiva</translation>
     </message>
     <message>
         <location filename="../helpers/ITextEditWidget.ui" line="419"/>
         <source>Ctrl+I</source>
-        <translation type="unfinished"></translation>
+        <translation>Ctrl+I</translation>
     </message>
 </context>
 <context>
@@ -2748,22 +3259,22 @@ or
     <message>
         <location filename="../units/ITimeZoneSetup.ui" line="14"/>
         <source>Setup Time Zone ...</source>
-        <translation type="unfinished"></translation>
+        <translation>Configurar la Zona Horaria...</translation>
     </message>
     <message>
         <location filename="../units/ITimeZoneSetup.ui" line="22"/>
         <source>UTC</source>
-        <translation type="unfinished"></translation>
+        <translation>UTC</translation>
     </message>
     <message>
         <location filename="../units/ITimeZoneSetup.ui" line="29"/>
         <source>Local</source>
-        <translation type="unfinished"></translation>
+        <translation>Local</translation>
     </message>
     <message>
         <location filename="../units/ITimeZoneSetup.ui" line="36"/>
         <source>Automatic</source>
-        <translation type="unfinished"></translation>
+        <translation>Automático</translation>
     </message>
 </context>
 <context>
@@ -2771,22 +3282,22 @@ or
     <message>
         <location filename="../units/IUnitsSetup.ui" line="14"/>
         <source>Setup units...</source>
-        <translation type="unfinished"></translation>
+        <translation>Configurar unidades...</translation>
     </message>
     <message>
         <location filename="../units/IUnitsSetup.ui" line="22"/>
         <source>Metric</source>
-        <translation type="unfinished"></translation>
+        <translation>Métrico</translation>
     </message>
     <message>
         <location filename="../units/IUnitsSetup.ui" line="29"/>
         <source>Imperial</source>
-        <translation type="unfinished"></translation>
+        <translation>Imperial</translation>
     </message>
     <message>
         <location filename="../units/IUnitsSetup.ui" line="36"/>
         <source>Nautic</source>
-        <translation type="unfinished"></translation>
+        <translation>Naútico</translation>
     </message>
 </context>
 <context>
@@ -2794,7 +3305,7 @@ or
     <message>
         <location filename="../helpers/IWptIconDialog.ui" line="14"/>
         <source>Icons...</source>
-        <translation type="unfinished"></translation>
+        <translation>Iconos...</translation>
     </message>
 </context>
 <context>
@@ -2802,413 +3313,544 @@ or
     <message>
         <location filename="../GeoMath.cpp" line="89"/>
         <source>Error</source>
-        <translation type="unfinished"></translation>
+        <translation>Error</translation>
     </message>
     <message>
         <location filename="../GeoMath.cpp" line="89"/>
         <source>Bad position format. Must be: [N|S] ddd mm.sss [W|E] ddd mm.sss</source>
-        <translation type="unfinished"></translation>
+        <translation>Formato de posición incorrecto. Debe ser: "[N|S] ggg mm.sss [W|E] ggg mm.sss"</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="66"/>
         <location filename="../gis/gpx/CGpxProject.cpp" line="75"/>
         <source>Failed to read...</source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al leer...</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="66"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al leer: %1
+línea %2, columna %3.
+ %4</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="75"/>
         <source>Not a GPX file: </source>
-        <translation type="unfinished"></translation>
+        <translation>No es un archivo GPX: </translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="112"/>
         <source>
 Filename: %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">
+Nombre del archivo: %1</translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="128"/>
         <source>
 Waypoints: %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">
+Waypoints: %1</translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="132"/>
         <source>
 Tracks: %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">
+Tracks: %1</translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="136"/>
         <source>
 Routes: %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">
+Rutas: %1</translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="140"/>
         <source>
 Areas: %1</source>
+        <translation type="obsolete">
+Áreas: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="163"/>
+        <source><br/>
+Filename: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="197"/>
-        <source>Are you sure you want to delete '%1' from project '%2'?</source>
+        <location filename="../gis/prj/IGisProject.cpp" line="180"/>
+        <source>Waypoints: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisProject.cpp" line="198"/>
-        <source>Delete...</source>
+        <location filename="../gis/prj/IGisProject.cpp" line="184"/>
+        <source>Tracks: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="188"/>
+        <source>Routes: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="192"/>
+        <source>Areas: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="250"/>
+        <source>Are you sure you want to delete '%1' from project '%2'?</source>
+        <translation>¿Está seguro de que quiere borrar '%1' del proyecto '%2'?</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="251"/>
+        <source>Delete...</source>
+        <translation>Borrar...</translation>
+    </message>
+    <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="53"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="47"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="135"/>
         <source>Failed to open...</source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al abrir...</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="53"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="47"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="135"/>
         <source>Failed to open %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al abrir %1</translation>
     </message>
     <message>
+        <location filename="../gis/db/CDBProject.cpp" line="124"/>
         <location filename="../gis/gpx/CGpxProject.cpp" line="151"/>
         <location filename="../gis/qms/CQmsProject.cpp" line="90"/>
         <source>Save GIS data to...</source>
+        <translation>Guardar los datos GIS en...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="153"/>
+        <source>Save ...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="153"/>
+        <source>Abort save</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="222"/>
         <source>File exists ...</source>
-        <translation type="unfinished"></translation>
+        <translation>El archivo ya existe ...</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="223"/>
         <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
-        <translation type="unfinished"></translation>
+        <translation>El archivo ya existe y no lo ha creado QMapShack. Si pulsa 'sí' todos los datos de este archivo se perderán. Incluso si el archivo contiene datos GPX y QMapShack lo ha leído, QMapShack podría no ser capaz de leer y almacenar todos los elementos en el archivo, y aquellos que no haya leído se perderán. Se le recomienda usar otro archivo distinto. <b>¿Quiere realmente sobrescribir el archivo</b></translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="289"/>
         <source>Failed to create file '%1'</source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al crear el archivo '%1'</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="289"/>
         <location filename="../gis/gpx/CGpxProject.cpp" line="299"/>
         <source>Saveing GIS data failed...</source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al guardar los datos GIS...</translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="299"/>
         <source>Failed to write file '%1'</source>
-        <translation type="unfinished"></translation>
+        <translation>Fallo al escribir en el archivo '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="319"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="328"/>
         <source>Length: %1 %2</source>
-        <translation type="unfinished"></translation>
+        <translation>Longitud: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="326"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="335"/>
         <source>, %1%2 %3, %4%5 %6</source>
-        <translation type="unfinished"></translation>
+        <translation>, %1%2 %3, %4%5 %6</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="334"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="343"/>
         <source>Time: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Tiempo: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="337"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="347"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="346"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="356"/>
         <source>, Speed: %1 %2</source>
-        <translation type="unfinished"></translation>
+        <translation>, Velocidad: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="344"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="353"/>
         <source>Moving: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>En movimiento: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="353"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="362"/>
         <source>Start: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Comienzo: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="358"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="367"/>
         <source>End: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Final: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="362"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="371"/>
         <source>Points: %1 (%2)</source>
-        <translation type="unfinished"></translation>
+        <translation>Puntos: %1 (%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="427"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="436"/>
         <source>Ele.: %1 %2</source>
-        <translation type="unfinished"></translation>
+        <translation>Altitud: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="430"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="439"/>
         <source> slope: %1%3 (%2%)</source>
-        <translation type="unfinished"></translation>
+        <translation> pendiente: %1%3 (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="435"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="444"/>
         <source> speed: %1%2</source>
-        <translation type="unfinished"></translation>
+        <translation> velocidad: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="447"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="456"/>
         <source>Ascend: %1%2 (%3%)</source>
-        <translation type="unfinished"></translation>
+        <translation>Ascenso: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="451"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="460"/>
         <source>Ascend: - (-)</source>
-        <translation type="unfinished"></translation>
+        <translation>Ascenso: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="461"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="470"/>
         <source> Descend: - (-) </source>
-        <translation type="unfinished"></translation>
+        <translation> Descenso: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="482"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="491"/>
         <source> Moving: - (-) </source>
-        <translation type="unfinished"></translation>
+        <translation> En movimiento: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="940"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="950"/>
         <source>Hide points.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ocultar puntos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="974"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="984"/>
         <source>Show points.</source>
-        <translation type="unfinished"></translation>
+        <translation>Mostrar puntos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="457"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="466"/>
         <source> Descend: %1%2 (%3%)</source>
-        <translation type="unfinished"></translation>
+        <translation> Descenso: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="253"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="261"/>
         <source>Changed trackpoints, sacrificed all previous data.</source>
-        <translation type="unfinished"></translation>
+        <translation>Se cambiaron los puntos del track, y descartados todos los datos previos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="468"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="477"/>
         <source>Dist.: %1%2 (%3%)</source>
-        <translation type="unfinished"></translation>
+        <translation>Distancia: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="472"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="481"/>
         <source>Dist.: - (-)</source>
-        <translation type="unfinished"></translation>
+        <translation>Dist.: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="478"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="487"/>
         <source> Moving: %1%2 (%3%)</source>
-        <translation type="unfinished"></translation>
+        <translation> En movimiento: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="94"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="95"/>
         <source>thin</source>
-        <translation type="unfinished"></translation>
+        <translation>fino</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="95"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="96"/>
         <source>normal</source>
-        <translation type="unfinished"></translation>
+        <translation>normal</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="96"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="97"/>
         <source>wide</source>
-        <translation type="unfinished"></translation>
+        <translation>ancho</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="97"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="98"/>
         <source>strong</source>
+        <translation>intenso</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="400"/>
+        <source>Area: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="418"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="452"/>
         <source>Changed area shape.</source>
-        <translation type="unfinished"></translation>
+        <translation>Se cambió la forma del área.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="426"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="460"/>
         <source>Changed name.</source>
-        <translation type="unfinished"></translation>
+        <translation>Se cambió el nombre.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="432"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="466"/>
         <source>Changed border width.</source>
-        <translation type="unfinished"></translation>
+        <translation>Se cambió la anchura del borde.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="438"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="472"/>
         <source>Changed fill pattern.</source>
-        <translation type="unfinished"></translation>
+        <translation>Se cambió el patró de relleno.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="444"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="478"/>
         <source>Changed opacity.</source>
-        <translation type="unfinished"></translation>
+        <translation>Se cambió la opacidad.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="450"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="484"/>
         <source>Changed comment.</source>
-        <translation type="unfinished"></translation>
+        <translation>Se cambió el comentario.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="456"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="490"/>
         <source>Changed description.</source>
+        <translation>Se cambió la descripción.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="496"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1289"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="341"/>
+        <source>Changed links</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="468"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1284"/>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="508"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1301"/>
         <source>Changed color</source>
-        <translation type="unfinished"></translation>
+        <translation>Se cambió el color</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="211"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="219"/>
         <source>Elevation: %1 %2</source>
-        <translation type="unfinished"></translation>
+        <translation>Altitud: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="219"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="227"/>
         <source>Proximity: %1 %2</source>
-        <translation type="unfinished"></translation>
+        <translation>Proximidad: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1261"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="284"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1271"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="292"/>
         <source>Changed name</source>
-        <translation type="unfinished"></translation>
+        <translation>Se cambió el nombre</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="803"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="811"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="829"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="872"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="999"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="165"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="813"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="821"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="839"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="882"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1009"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="173"/>
         <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
         <source>Edit name...</source>
-        <translation type="unfinished"></translation>
+        <translation>Editar nombre...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="165"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="173"/>
         <source>Enter new waypoint name.</source>
-        <translation type="unfinished"></translation>
+        <translation>Introduzca el nuevo nombre del waypoint.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="291"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="299"/>
         <source>Changed position</source>
-        <translation type="unfinished"></translation>
+        <translation>Se cambió la posición</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="297"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="305"/>
         <source>Changed elevation</source>
-        <translation type="unfinished"></translation>
+        <translation>Se cambió la altitud</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="303"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="311"/>
         <source>Changed proximity</source>
-        <translation type="unfinished"></translation>
+        <translation>Se cambió la proximidad</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="315"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="323"/>
         <source>Changed icon</source>
-        <translation type="unfinished"></translation>
+        <translation>Se cambió el icono</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1267"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="321"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1277"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="329"/>
         <source>Changed comment</source>
-        <translation type="unfinished"></translation>
+        <translation>Se cambió el comentario</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1273"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="327"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1283"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="335"/>
         <source>Changed description</source>
-        <translation type="unfinished"></translation>
+        <translation>Se cambió la descripción</translation>
     </message>
     <message>
         <location filename="../gis/gpx/serialization.cpp" line="515"/>
         <source>Archived</source>
-        <translation type="unfinished"></translation>
+        <translation>Archivado</translation>
     </message>
     <message>
         <location filename="../gis/gpx/serialization.cpp" line="519"/>
         <source>Available</source>
-        <translation type="unfinished"></translation>
+        <translation>Disponible</translation>
     </message>
     <message>
         <location filename="../gis/gpx/serialization.cpp" line="523"/>
         <source>Not Available</source>
-        <translation type="unfinished"></translation>
+        <translation>No Disponible</translation>
     </message>
     <message>
         <location filename="../map/garmin/CGarminTyp.cpp" line="459"/>
         <location filename="../map/garmin/CGarminTyp.cpp" line="834"/>
         <source>Warning...</source>
-        <translation type="unfinished"></translation>
+        <translation>Aviso...</translation>
     </message>
     <message>
         <location filename="../map/garmin/CGarminTyp.cpp" line="459"/>
         <source>This is a typ file with unknown polygon encoding. Please report!</source>
-        <translation type="unfinished"></translation>
+        <translation>Este es un fichero TYP con una codificación de polígonos desconocida. ¡Por favor repórtelo!</translation>
     </message>
     <message>
         <location filename="../map/garmin/CGarminTyp.cpp" line="834"/>
         <source>This is a typ file with unknown polyline encoding. Please report!</source>
-        <translation type="unfinished"></translation>
+        <translation>Este es un fichero TYP con una codificación de polilíneas desconocida. ¡Por favor repórtelo!</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="239"/>
+        <location filename="../gis/IGisItem.cpp" line="284"/>
         <source>Initial version.</source>
-        <translation type="unfinished"></translation>
+        <translation>Versión inicial</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="319"/>
+        <location filename="../gis/IGisItem.cpp" line="368"/>
         <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 type="unfinished"></translation>
+        <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="320"/>
+        <location filename="../gis/IGisItem.cpp" line="369"/>
         <source>Read Only Mode...</source>
+        <translation>Modo Sólo Lectura...</translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="558"/>
+        <source><h4>Comment:</h4></source>
+        <translation type="unfinished"><h4>Comentario:</h4></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="561"/>
+        <source><p>--- no comment ---</p></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="568"/>
+        <location filename="../gis/IGisItem.cpp" line="598"/>
+        <source><h4>Description:</h4></source>
+        <translation type="unfinished"><h4>Descripción:</h4></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="571"/>
+        <location filename="../gis/IGisItem.cpp" line="601"/>
+        <source><p>--- no description ---</p></source>
+        <translation type="unfinished"><p>---sin descripción---</p></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="578"/>
+        <location filename="../gis/IGisItem.cpp" line="608"/>
+        <source><h4>Links:</h4></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="581"/>
+        <location filename="../gis/IGisItem.cpp" line="611"/>
+        <source><p>--- no links ---</p></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="803"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="811"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="829"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="872"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="999"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="813"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="821"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="839"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="882"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1009"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="106"/>
         <source>Enter new track name.</source>
-        <translation type="unfinished"></translation>
+        <translation>Introduzca el nombre del nuevo track.</translation>
     </message>
     <message>
         <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
         <source>Enter new area name.</source>
+        <translation>Introduzca el nombre del nuevo área.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderDatabase.cpp" line="26"/>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="28"/>
+        <source>All your data grouped by folders.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="29"/>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="63"/>
+        <source>Lost & Found</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="58"/>
+        <source>Lost & Found (%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/converter.cpp" line="196"/>
+        <source>Copy flag information from QLandkarte GT track</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="158"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="212"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="259"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="285"/>
+        <source>Corrupt track ...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="158"/>
+        <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="212"/>
+        <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="259"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="285"/>
+        <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/main.cpp b/src/main.cpp
index 6130522..b5e4711 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -30,11 +30,11 @@ CAppOpts *qlOpts;
 
 static void usage(std::ostream &s)
 {
-    s << "usage: qlandkartegt [-d | --debug]\n"
-         "                    [-h | --help]\n"
-         "                    [-n | --no-splash]\n"
-         "                    [-c | --config=file]\n"
-         "                    [files...]\n"
+    s << "usage: qmapshack [-d | --debug]\n"
+         "                 [-h | --help]\n"
+         "                 [-n | --no-splash]\n"
+         "                 [-c | --config=file]\n"
+         "                 [files...]\n"
          "\n";
 }
 
diff --git a/src/map/IMapPathSetup.ui b/src/map/IMapPathSetup.ui
index 13557c6..eb22d17 100644
--- a/src/map/IMapPathSetup.ui
+++ b/src/map/IMapPathSetup.ui
@@ -13,89 +13,75 @@
   <property name="windowTitle">
    <string>Setup map paths</string>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
+  <layout class="QVBoxLayout" name="verticalLayout_2">
    <item>
-    <widget class="QFrame" name="frame">
-     <property name="frameShape">
-      <enum>QFrame::StyledPanel</enum>
-     </property>
-     <property name="frameShadow">
-      <enum>QFrame::Raised</enum>
-     </property>
-     <layout class="QHBoxLayout" name="horizontalLayout_2">
-      <item>
-       <widget class="QListWidget" name="listWidget">
-        <property name="selectionMode">
-         <enum>QAbstractItemView::ExtendedSelection</enum>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <layout class="QVBoxLayout" name="verticalLayout_2">
-        <item>
-         <widget class="QToolButton" name="toolAdd">
-          <property name="text">
-           <string>...</string>
-          </property>
-          <property name="icon">
-           <iconset resource="../resources.qrc">
-            <normaloff>:/icons/32x32/Add.png</normaloff>:/icons/32x32/Add.png</iconset>
-          </property>
-          <property name="iconSize">
-           <size>
-            <width>32</width>
-            <height>32</height>
-           </size>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QToolButton" name="toolDelete">
-          <property name="enabled">
-           <bool>false</bool>
-          </property>
-          <property name="text">
-           <string>...</string>
-          </property>
-          <property name="icon">
-           <iconset resource="../resources.qrc">
-            <normaloff>:/icons/32x32/DeleteMultiple.png</normaloff>:/icons/32x32/DeleteMultiple.png</iconset>
-          </property>
-          <property name="iconSize">
-           <size>
-            <width>32</width>
-            <height>32</height>
-           </size>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout">
+    <layout class="QHBoxLayout" name="horizontalLayout_3">
      <item>
-      <widget class="QLabel" name="label_3">
-       <property name="maximumSize">
-        <size>
-         <width>64</width>
-         <height>16777215</height>
-        </size>
-       </property>
-       <property name="text">
-        <string/>
-       </property>
-       <property name="pixmap">
-        <pixmap resource="../resources.qrc">:/icons/48x48/Help.png</pixmap>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignCenter</set>
+      <widget class="QListWidget" name="listWidget">
+       <property name="selectionMode">
+        <enum>QAbstractItemView::ExtendedSelection</enum>
        </property>
       </widget>
      </item>
      <item>
+      <layout class="QVBoxLayout" name="verticalLayout">
+       <item>
+        <widget class="QToolButton" name="toolAdd">
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset resource="../resources.qrc">
+           <normaloff>:/icons/32x32/Add.png</normaloff>:/icons/32x32/Add.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="toolDelete">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset resource="../resources.qrc">
+           <normaloff>:/icons/32x32/DeleteMultiple.png</normaloff>:/icons/32x32/DeleteMultiple.png</iconset>
+         </property>
+         <property name="iconSize">
+          <size>
+           <width>22</width>
+           <height>22</height>
+          </size>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
       <widget class="QLabel" name="labelHelp">
        <property name="sizePolicy">
         <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
@@ -115,6 +101,25 @@
       </widget>
      </item>
      <item>
+      <widget class="QLabel" name="label_3">
+       <property name="maximumSize">
+        <size>
+         <width>64</width>
+         <height>16777215</height>
+        </size>
+       </property>
+       <property name="text">
+        <string/>
+       </property>
+       <property name="pixmap">
+        <pixmap resource="../resources.qrc">:/icons/48x48/Help.png</pixmap>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignCenter</set>
+       </property>
+      </widget>
+     </item>
+     <item>
       <widget class="QDialogButtonBox" name="buttonBox">
        <property name="sizePolicy">
         <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
diff --git a/src/mouse/CMouseNormal.cpp b/src/mouse/CMouseNormal.cpp
index 908c51a..49adba5 100644
--- a/src/mouse/CMouseNormal.cpp
+++ b/src/mouse/CMouseNormal.cpp
@@ -196,6 +196,15 @@ void CMouseNormal::mouseReleaseEvent(QMouseEvent *e)
     }
 }
 
+void CMouseNormal::mouseDoubleClickEvent(QMouseEvent *e)
+{
+    if(stateItemSel == eStateIdle)
+    {
+        const IGisItem::key_t& key = CGisItemTrk::getKeyUserFocus();
+        CGisWidget::self().focusTrkByKey(false, key);
+    }
+}
+
 void CMouseNormal::wheelEvent(QWheelEvent * e)
 {
     screenUnclutter->clear();
diff --git a/src/mouse/CMouseNormal.h b/src/mouse/CMouseNormal.h
index 2736b3d..eefb9d2 100644
--- a/src/mouse/CMouseNormal.h
+++ b/src/mouse/CMouseNormal.h
@@ -42,6 +42,7 @@ class CMouseNormal : public IMouse
         void mousePressEvent(QMouseEvent * e);
         void mouseMoveEvent(QMouseEvent * e);
         void mouseReleaseEvent(QMouseEvent *e);
+        void mouseDoubleClickEvent(QMouseEvent *e);
         void wheelEvent(QWheelEvent * e);
 
     private slots:
diff --git a/src/mouse/CScrOptUnclutter.cpp b/src/mouse/CScrOptUnclutter.cpp
index 47286d1..09837f7 100644
--- a/src/mouse/CScrOptUnclutter.cpp
+++ b/src/mouse/CScrOptUnclutter.cpp
@@ -142,12 +142,13 @@ void CScrOptUnclutter::mouseMoveEvent(QMouseEvent * e)
 void CScrOptUnclutter::addItem(IGisItem * gisItem)
 {
     items << item_t();
-    item_t& item    = items.last();
-    item.name       = gisItem->getNameEx();
-    item.key        = gisItem->getKey();
-    item.icon       = gisItem->getIcon();
-    item.area       = item.icon.rect();
-    item.active     = item.area.adjusted(-10,-10,10,10);
+    item_t& item        = items.last();
+    item.hasUserFocus   = gisItem->hasUserFocus();
+    item.name           = gisItem->getNameEx();
+    item.key            = gisItem->getKey();
+    item.icon           = gisItem->getIcon();
+    item.area           = item.icon.rect();
+    item.active         = item.area.adjusted(-10,-10,10,10);
 }
 
 IGisItem::key_t CScrOptUnclutter::getItemKey(int index)
@@ -200,14 +201,12 @@ void CScrOptUnclutter::draw(QPainter& p)
 
     foreach(const item_t& item, items)
     {
-
-
         p.setPen(Qt::NoPen);
         p.setBrush(QColor(255,255,255,255));
         p.drawEllipse(item.area.center(), 20,20);        
         p.drawRoundedRect(item.text, 3, 3);
 
-        p.setPen(QPen(Qt::lightGray,2));
+        p.setPen(QPen(item.hasUserFocus ? Qt::red : Qt::lightGray,2));
         p.setBrush(Qt::NoBrush);
         p.drawRoundedRect(item.text, 3, 3);
         p.drawEllipse(item.area.center(), 18,18);
diff --git a/src/mouse/CScrOptUnclutter.h b/src/mouse/CScrOptUnclutter.h
index 286fd88..bcfcdee 100644
--- a/src/mouse/CScrOptUnclutter.h
+++ b/src/mouse/CScrOptUnclutter.h
@@ -31,6 +31,7 @@ class CScrOptUnclutter : public IScrOpt
 
         struct item_t
         {
+            bool    hasUserFocus;
             QString name;
             IGisItem::key_t key;
             QPixmap icon;
diff --git a/src/mouse/IMouse.h b/src/mouse/IMouse.h
index 6124322..9349619 100644
--- a/src/mouse/IMouse.h
+++ b/src/mouse/IMouse.h
@@ -46,6 +46,7 @@ class IMouse : public QObject
         virtual void mousePressEvent(QMouseEvent * e) = 0;
         virtual void mouseMoveEvent(QMouseEvent * e) = 0;
         virtual void mouseReleaseEvent(QMouseEvent *e) = 0;
+        virtual void mouseDoubleClickEvent(QMouseEvent *e){}
         virtual void wheelEvent(QWheelEvent * e) = 0;
         /// the current mouse cursor
         /**
diff --git a/src/qlgt/CImportDatabase.cpp b/src/qlgt/CImportDatabase.cpp
new file mode 100644
index 0000000..a67cf75
--- /dev/null
+++ b/src/qlgt/CImportDatabase.cpp
@@ -0,0 +1,117 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "qlgt/CImportDatabase.h"
+#include "qlgt/CQlgtDb.h"
+#include "helpers/CSettings.h"
+
+#include <QtWidgets>
+
+CImportDatabase::CImportDatabase(QWidget *parent)
+    : QWidget(parent)
+{
+    setupUi(this);
+    setObjectName(tr("Import QLandkarte Database"));
+
+    SETTINGS;
+
+    labelSource->setText(cfg.value("ConvertDB/source","-").toString());
+    labelTarget->setText(cfg.value("ConvertDB/target","-").toString());
+
+    textBrowser->setFont(QFont("Courier",10));
+
+    connect(toolSelectSource, SIGNAL(clicked()), this, SLOT(slotSelectSource()));
+    connect(toolSelectTarget, SIGNAL(clicked()), this, SLOT(slotSelectTarget()));
+    connect(pushStart, SIGNAL(clicked()), this, SLOT(slotStart()));
+
+    if(QFile::exists(labelSource->text()))
+    {
+        dbQlgt = new CQlgtDb(labelSource->text(), this);
+    }
+}
+
+CImportDatabase::~CImportDatabase()
+{
+    SETTINGS;
+    cfg.setValue("ConvertDB/source", labelSource->text());
+    cfg.setValue("ConvertDB/target", labelTarget->text());
+
+}
+
+void CImportDatabase::stdOut(const QString& str)
+{
+    textBrowser->setTextColor(Qt::black);
+    textBrowser->append(str);
+}
+
+
+void CImportDatabase::stdErr(const QString& str)
+{
+    textBrowser->setTextColor(Qt::red);
+    textBrowser->append(str);
+}
+
+
+void CImportDatabase::slotSelectSource()
+{
+    SETTINGS;
+    QString path = cfg.value("Path/source",QDir::homePath()).toString();
+    QString filename = QFileDialog::getOpenFileName(this, tr("Select source database..."), path, "*.db");
+    if(filename.isEmpty())
+    {
+        return;
+    }
+
+    QFileInfo fi(filename);
+    cfg.setValue("Path/source", fi.absolutePath());
+
+    labelSource->setText(filename);
+
+    delete dbQlgt;
+    textBrowser->clear();
+    dbQlgt = new CQlgtDb(filename, this);
+
+}
+
+void CImportDatabase::slotSelectTarget()
+{
+    SETTINGS;
+    QString path = cfg.value("Path/target",QDir::homePath()).toString();
+    QString filename = QFileDialog::getSaveFileName(this, tr("Select target database..."), path, "*.db");
+    if(filename.isEmpty())
+    {
+        return;
+    }
+
+    QFileInfo fi(filename);
+    cfg.setValue("Path/target", fi.absolutePath());
+    if(fi.suffix().toLower() != "db")
+    {
+        filename += ".db";
+    }
+
+    labelTarget->setText(filename);
+}
+
+void CImportDatabase::slotStart()
+{
+    pushStart->setEnabled(false);
+    dbQlgt->start(labelTarget->text());
+    pushStart->setEnabled(true);
+}
+
diff --git a/src/gis/rte/CScrOptRte.h b/src/qlgt/CImportDatabase.h
similarity index 66%
copy from src/gis/rte/CScrOptRte.h
copy to src/qlgt/CImportDatabase.h
index 43c9286..38faf8f 100644
--- a/src/gis/rte/CScrOptRte.h
+++ b/src/qlgt/CImportDatabase.h
@@ -16,34 +16,35 @@
 
 **********************************************************************************************/
 
-#ifndef CSCROPTRTE_H
-#define CSCROPTRTE_H
-
-#include "mouse/IScrOpt.h"
-#include "gis/IGisItem.h"
+#ifndef CIMPORTDATABASE_H
+#define CIMPORTDATABASE_H
 
 #include <QWidget>
-#include "ui_IScrOptRte.h"
+#include <QPointer>
+#include "ui_IImportDatabase.h"
 
-class CGisItemRte;
-class IMouse;
+class CQlgtDb;
 
-class CScrOptRte : public IScrOpt, private Ui::IScrOptRte
+class CImportDatabase : public QWidget, private Ui::IImportDatabase
 {
     Q_OBJECT
     public:
-        CScrOptRte(CGisItemRte * rte, const QPoint &point, IMouse *parent);
-        virtual ~CScrOptRte();
+        CImportDatabase(QWidget * parent);
+        virtual ~CImportDatabase();
 
-        void draw(QPainter& p);
+        void stdOut(const QString& str);
+        void stdErr(const QString& str);
 
     private slots:
-        void slotDelete();
+        void slotSelectSource();
+        void slotSelectTarget();
+        void slotStart();
+
 
     private:
-        IGisItem::key_t key;
-        QPointF anchor;
+        QPointer<CQlgtDb> dbQlgt;
+
 };
 
-#endif //CSCROPTRTE_H
+#endif //CIMPORTDATABASE_H
 
diff --git a/src/qlgt/CQlb.cpp b/src/qlgt/CQlb.cpp
new file mode 100644
index 0000000..995eca0
--- /dev/null
+++ b/src/qlgt/CQlb.cpp
@@ -0,0 +1,174 @@
+/**********************************************************************************************
+    Copyright (C) 2007 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CQlb.h"
+#include "qlgt/CQlgtWpt.h"
+#include "qlgt/CQlgtTrack.h"
+#include "qlgt/CQlgtRoute.h"
+#include "qlgt/CQlgtDiary.h"
+#include "qlgt/IQlgtOverlay.h"
+
+
+#include <QtCore>
+
+CQlb::CQlb(QObject * parent)
+: QObject(parent)
+{
+
+}
+
+
+CQlb::~CQlb()
+{
+
+}
+
+
+CQlb& CQlb::operator <<(CQlgtWpt& wpt)
+{
+    QDataStream stream(&wpts, QIODevice::Append);
+    stream.setVersion(QDataStream::Qt_4_5);
+    stream << wpt;
+
+    return *this;
+}
+
+
+CQlb& CQlb::operator <<(CQlgtTrack& trk)
+{
+    QDataStream stream(&trks, QIODevice::Append);
+    stream.setVersion(QDataStream::Qt_4_5);
+    stream << trk;
+
+    return *this;
+}
+
+
+CQlb& CQlb::operator <<(CQlgtRoute& rte)
+{
+    QDataStream stream(&rtes, QIODevice::Append);
+    stream.setVersion(QDataStream::Qt_4_5);
+    stream << rte;
+
+    return *this;
+}
+
+
+CQlb& CQlb::operator <<(CQlgtDiary& dry)
+{
+    QDataStream stream(&drys, QIODevice::Append);
+    stream.setVersion(QDataStream::Qt_4_5);
+    stream << dry;
+
+    return *this;
+}
+
+
+CQlb& CQlb::operator <<(IQlgtOverlay& ovl)
+{
+    QDataStream stream(&ovls, QIODevice::Append);
+    stream.setVersion(QDataStream::Qt_4_5);
+    stream << ovl;
+
+    return *this;
+}
+
+
+
+
+void CQlb::load(const QString& filename)
+{
+    QFile file(filename);
+    load(&file);
+}
+
+
+void CQlb::load(QIODevice* ioDevice)
+{
+    qint32 type;
+
+    ioDevice->open(QIODevice::ReadOnly);
+    QDataStream stream(ioDevice);
+    stream.setVersion(QDataStream::Qt_4_5);
+
+    stream >> type;
+    while(type != eEnd)
+    {
+
+        switch(type)
+        {
+
+            case eWpt:
+                stream >> wpts;
+                break;
+
+            case eTrack:
+                stream >> trks;
+                break;
+
+            case eDiary:
+                stream >> drys;
+                break;
+
+            case eOverlay:
+                stream >> ovls;
+                break;
+
+            case eRoute:
+                stream >> rtes;
+                break;
+
+            case eMapSel:
+                stream >> sels;
+                break;
+
+            default:
+                ioDevice->close();
+                return;
+        }
+
+        stream >> type;
+    }
+
+    ioDevice->close();
+}
+
+
+void CQlb::save(const QString& filename)
+{
+    QFile file(filename);
+    save(&file);
+}
+
+
+void CQlb::save(QIODevice* ioDevice)
+{
+    ioDevice->open(QIODevice::WriteOnly);
+    QDataStream stream(ioDevice);
+    stream.setVersion(QDataStream::Qt_4_5);
+
+    stream << (qint32)eWpt << wpts;
+    stream << (qint32)eTrack << trks;
+    stream << (qint32)eRoute << rtes;
+    stream << (qint32)eDiary << drys;
+    stream << (qint32)eOverlay << ovls;
+    stream << (qint32)eMapSel << sels;
+    stream << (qint32)eEnd;
+
+    ioDevice->close();
+}
diff --git a/src/qlgt/CQlb.h b/src/qlgt/CQlb.h
new file mode 100644
index 0000000..4f61d9e
--- /dev/null
+++ b/src/qlgt/CQlb.h
@@ -0,0 +1,99 @@
+/**********************************************************************************************
+    Copyright (C) 2007 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+#ifndef CQLB_H
+#define CQLB_H
+
+#include <QObject>
+#include <QIODevice>
+#include <QByteArray>
+
+class CQlgtWpt;
+class CQlgtTrack;
+class CQlgtRoute;
+class CQlgtDiary;
+class IQlgtOverlay;
+/// qlandkarte binary to store privat geo data
+/**
+    The file will store data like waypoints, tracks, map selections. These elements will
+    be collected in a dedicated byte arra, e.g. all waypoints are serialized in wpts and so on.
+    These byte arrays a stored like:
+
+    qint32 eWpt, QByteArray wpts
+    ...
+    qint32 eEnd
+
+*/
+class CQlb : public QObject
+{
+    Q_OBJECT
+    public:
+        CQlb(QObject * parent);
+        virtual ~CQlb();
+
+        enum type_e {eEnd, eWpt, eTrack, eDiary, eOverlay, eRoute, eMapSel};
+
+        /// collect wapoint data
+        /**
+            This will serialize the waypoint object to wpts
+        */
+        CQlb& operator <<(CQlgtWpt &wpt);
+
+        CQlb& operator <<(CQlgtTrack &trk);
+
+        CQlb& operator <<(CQlgtDiary &dry);
+
+        CQlb& operator <<(IQlgtOverlay &ovl);
+
+        CQlb& operator <<(CQlgtRoute &rte);
+
+
+        /// get access to stored waypoint data
+        QByteArray& waypoints(){return wpts;}
+        /// get access to stored track data
+        QByteArray& tracks(){return trks;}
+        /// get access to stored diary data
+        QByteArray& diary(){return drys;}
+        /// get access to stored overlay data
+        QByteArray& overlays(){return ovls;}
+        /// get access to stored route data
+        QByteArray& routes(){return rtes;}
+        /// get access to stored map selection data
+        QByteArray& mapsels(){return sels;}
+        /// write collected data to file
+        void save(const QString& filename);
+        void save(QIODevice *ioDevice);
+        /// read file and store elements in their designated byte arrays
+        void load(const QString& filename);
+        void load(QIODevice *ioDevice);
+
+    private:
+        /// byte array to hold all waypoints
+        QByteArray wpts;
+        /// byte array to hold all tracks
+        QByteArray trks;
+        /// byte array to hold all routes
+        QByteArray rtes;
+        /// byte array to hold diary
+        QByteArray drys;
+        /// byte array to hold overlays
+        QByteArray ovls;
+        /// byte array to hold map selections
+        QByteArray sels;
+
+};
+#endif                           //CQLB_H
diff --git a/src/qlgt/CQlgtDb.cpp b/src/qlgt/CQlgtDb.cpp
new file mode 100644
index 0000000..bc4f8ea
--- /dev/null
+++ b/src/qlgt/CQlgtDb.cpp
@@ -0,0 +1,757 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Softwareation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "qlgt/CQlgtDb.h"
+#include "qlgt/CQmsDb.h"
+#include "qlgt/CQlb.h"
+#include "qlgt/CQlgtFolder.h"
+#include "qlgt/CQlgtWpt.h"
+#include "qlgt/CQlgtTrack.h"
+#include "qlgt/CQlgtRoute.h"
+#include "qlgt/IQlgtOverlay.h"
+#include "qlgt/CImportDatabase.h"
+
+#include "gis/db/macros.h"
+#include "gis/WptIcons.h"
+#include "gis/wpt/CGisItemWpt.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/ovl/CGisItemOvlArea.h"
+
+#include <QtSql>
+#include <QtWidgets>
+
+#define DB_QLGT_VERSION 9
+
+CQlgtDb::CQlgtDb(const QString &filename, CImportDatabase *parent)
+    : gui(parent)
+    , nItems(0)
+    , nFolders(0)
+    , nWpt(0)
+    , nTrk(0)
+    , nRte(0)
+    , nOvl(0)
+    , nDiary(0)
+{
+    db = QSqlDatabase::addDatabase("QSQLITE","qlandkarte");
+    db.setDatabaseName(filename);
+    db.open();
+
+    QFileInfo fi(filename);
+    path = fi.absoluteDir();
+    name = fi.fileName();
+
+    QSqlQuery query(db);
+
+    if(!query.exec("PRAGMA locking_mode=EXCLUSIVE"))
+    {
+        return;
+    }
+
+    if(!query.exec("PRAGMA synchronous=OFF"))
+    {
+        return;
+    }
+
+    if(!query.exec("PRAGMA temp_store=MEMORY"))
+    {
+        return;
+    }
+
+    if(!query.exec("PRAGMA default_cache_size=1000"))
+    {
+        return;
+    }
+
+    if(!query.exec("PRAGMA page_size=8192"))
+    {
+        return;
+    }
+
+    if(!query.exec("SELECT version FROM versioninfo"))
+    {
+        initDB();
+    }
+    else if(query.next())
+    {
+        int version = query.value(0).toInt();
+        if(version != DB_QLGT_VERSION)
+        {
+            migrateDB(version);
+        }
+    }
+    else
+    {
+        initDB();
+    }
+
+    printStatistic();
+}
+
+CQlgtDb::~CQlgtDb()
+{
+}
+
+void CQlgtDb::initDB()
+{
+    qDebug() << "void CGeoDB::initDB()";
+    QSqlQuery query(db);
+
+    if(query.exec( "CREATE TABLE versioninfo ( version TEXT )"))
+    {
+        query.prepare( "INSERT INTO versioninfo (version) VALUES(:version)");
+        query.bindValue(":version", DB_QLGT_VERSION);
+        QUERY_EXEC(; );
+    }
+
+    if(!query.exec( "CREATE TABLE folders ("
+                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+                    "type           INTEGER,"
+                    "date           DATETIME DEFAULT CURRENT_TIMESTAMP,"
+                    "icon           TEXT NOT NULL,"
+                    "name           TEXT NOT NULL,"
+                    "comment        TEXT,"
+                    "locked       BOOLEAN DEFAULT FALSE"
+                    ")"))
+    {
+        qDebug() << query.lastQuery();
+        qDebug() << query.lastError();
+    }
+
+    if(!query.exec( "CREATE TABLE items ("
+                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+                    "type           INTEGER,"
+                    "key            TEXT NOT NULL,"
+                    "date           DATETIME DEFAULT CURRENT_TIMESTAMP,"
+                    "icon           TEXT NOT NULL,"
+                    "name           TEXT NOT NULL,"
+                    "comment        TEXT,"
+                    "data           BLOB NOT NULL"
+                    ")"))
+    {
+        qDebug() << query.lastQuery();
+        qDebug() << query.lastError();
+    }
+
+    if(!query.exec( "CREATE TABLE workspace ("
+                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+                    "type           INTEGER NOT NULL,"
+                    "changed        BOOLEAN DEFAULT FALSE,"
+                    "data           BLOB NOT NULL,"
+                    "key            TEXT NOT NULL"
+                    ")"))
+    {
+        qDebug() << query.lastQuery();
+        qDebug() << query.lastError();
+    }
+
+    if(!query.exec("INSERT INTO folders (icon, name, comment) VALUES ('', 'database', '')"))
+    {
+        qDebug() << query.lastQuery();
+        qDebug() << query.lastError();
+    }
+
+    if(!query.exec( "CREATE TABLE folder2folder ("
+                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+                    "parent         INTEGER NOT NULL,"
+                    "child          INTEGER NOT NULL,"
+                    "FOREIGN KEY(parent) REFERENCES folders(id),"
+                    "FOREIGN KEY(child) REFERENCES folders(id)"
+                    ")"))
+    {
+        qDebug() << query.lastQuery();
+        qDebug() << query.lastError();
+    }
+
+    if(!query.exec( "CREATE TABLE folder2item ("
+                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+                    "parent         INTEGER NOT NULL,"
+                    "child          INTEGER NOT NULL,"
+                    "FOREIGN KEY(parent) REFERENCES folders(id),"
+                    "FOREIGN KEY(child) REFERENCES items(id)"
+                    ")"))
+    {
+        qDebug() << query.lastQuery();
+        qDebug() << query.lastError();
+    }
+
+    if(!query.exec( "CREATE TABLE diarys ("
+                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+                    "parent         INTEGER NOT NULL,"
+                    "key            TEXT NOT NULL,"
+                    "date           DATETIME DEFAULT CURRENT_TIMESTAMP,"
+                    "data           BLOB NOT NULL,"
+                    "FOREIGN KEY(parent) REFERENCES folders(id)"
+                    ")"))
+    {
+        qDebug() << query.lastQuery();
+        qDebug() << query.lastError();
+    }
+}
+
+
+void CQlgtDb::migrateDB(int version)
+{
+    qDebug() << "void CGeoDB::migrateDB(int version)" << version;
+    QSqlQuery query(db);
+
+    for(version++; version <= DB_QLGT_VERSION; version++)
+    {
+        switch(version)
+        {
+        case 1:
+            break;
+
+        case 2:
+        {
+            if(!query.exec( "CREATE TABLE workspace ("
+                            "id             INTEGER PRIMARY KEY NOT NULL,"
+                            "changed        BOOLEAN DEFAULT FALSE,"
+                            "data           BLOB NOT NULL"
+                            ")"))
+            {
+                qDebug() << query.lastQuery();
+                qDebug() << query.lastError();
+                return;
+            }
+
+            break;
+        }
+
+        case 3:
+        {
+            if(!query.exec("ALTER TABLE workspace ADD COLUMN key TEXT"))
+            {
+                qDebug() << query.lastQuery();
+                qDebug() << query.lastError();
+                return;
+            }
+            if(!query.exec("ALTER TABLE workspace ADD COLUMN type INTEGER"))
+            {
+                qDebug() << query.lastQuery();
+                qDebug() << query.lastError();
+                return;
+            }
+            break;
+        }
+
+        case 4:
+        {
+            if(!query.exec("ALTER TABLE folders ADD COLUMN type INTEGER"))
+            {
+                qDebug() << query.lastQuery();
+                qDebug() << query.lastError();
+                return;
+            }
+
+            query.prepare("UPDATE folders SET type=:type WHERE icon=:icon");
+            query.bindValue("type", eFolder1);
+            query.bindValue("icon", ":/icons/iconFolderBlue16x16.png");
+            if(!query.exec())
+            {
+                qDebug() << query.lastQuery();
+                qDebug() << query.lastError();
+                return;
+            }
+
+            query.prepare("UPDATE folders SET type=:type WHERE icon=:icon");
+            query.bindValue(":type", eFolder2);
+            query.bindValue(":icon", ":/icons/iconFolderGreen16x16.png");
+            if(!query.exec())
+            {
+                qDebug() << query.lastQuery();
+                qDebug() << query.lastError();
+                return;
+            }
+
+            break;
+        }
+
+        case 5:
+        {
+            if (QFile::exists(path.absoluteFilePath("qlgt_save_v4.db")))
+            {
+                QFile::remove(path.absoluteFilePath("qlgt_save_v4.db"));
+            }
+            QFile f(path.absoluteFilePath(name));
+            f.copy(path.absoluteFilePath("qlgt_save_v4.db"));
+
+            QSqlQuery query2(db);
+
+            if(!query.exec("SELECT id, type, icon FROM items"))
+            {
+                qDebug() << query.lastQuery();
+                qDebug() << query.lastError();
+                return;
+            }
+
+            quint32 progCnt = 0;
+            PROGRESS_SETUP(tr("Migrating database from version 4 to 5."), query.size());
+
+            while(query.next())
+            {
+                QPixmap pixmap;
+
+                if(query.value(1).toInt() == eWpt || query.value(1).toInt() == eRte)
+                {
+                    QPointF focus;
+                    pixmap = getWptIconByName(query.value(2).toString(), focus);
+                }
+                else if(query.value(1).toInt() == eTrk)
+                {
+                    pixmap = QPixmap(16,16);
+                    pixmap.fill(query.value(2).toString());
+                }
+                else
+                {
+                    pixmap = QPixmap(query.value(2).toString());
+                }
+
+                QByteArray bytes;
+                QBuffer buffer(&bytes);
+                buffer.open(QIODevice::WriteOnly);
+                pixmap.save(&buffer, "XPM");
+
+                query2.prepare("UPDATE items SET icon=:icon WHERE id=:id");
+                query2.bindValue(":id", query.value(0).toULongLong());
+                query2.bindValue(":icon", bytes);
+                if(!query2.exec())
+                {
+                    qDebug() << query.lastQuery();
+                    qDebug() << query.lastError();
+                    return;
+                }
+
+                PROGRESS(progCnt++, continue);
+            }
+            break;
+        }
+
+        case 6:
+        {
+            QSqlQuery query2(db);
+
+            if(!query.exec("SELECT id, data, type FROM items"))
+            {
+                qDebug() << query.lastQuery();
+                qDebug() << query.lastError();
+                return;
+            }
+
+            quint32 progCnt = 0;
+            PROGRESS_SETUP(tr("Migrating database from version 5 to 6."), query.size());
+
+            while(query.next())
+            {
+                QByteArray array = query.value(1).toByteArray();
+                QBuffer buffer(&array);
+                CQlb qlb(this);
+                qlb.load(&buffer);
+
+                switch(query.value(2).toInt())
+                {
+                case eWpt:
+                    array = qlb.waypoints();
+                    break;
+
+                case eTrk:
+                    array = qlb.tracks();
+                    break;
+
+                case eRte:
+                    array = qlb.routes();
+                    break;
+
+                case eOvl:
+                    array = qlb.overlays();
+                    break;
+                }
+
+                query2.prepare("UPDATE items SET data=:data WHERE id=:id");
+                query2.bindValue(":data", array);
+                query2.bindValue(":id", query.value(0));
+
+                if(!query2.exec())
+                {
+                    qDebug() << query.lastQuery();
+                    qDebug() << query.lastError();
+                    return;
+                }
+
+                PROGRESS(progCnt++, continue);
+            }
+
+            break;
+        }
+
+        case 7:
+        {
+            QSqlQuery query2(db);
+
+            if(!query.exec("SELECT id, data, type FROM items"))
+            {
+                qDebug() << query.lastQuery();
+                qDebug() << query.lastError();
+                return;
+            }
+
+            quint32 progCnt = 0;
+            PROGRESS_SETUP(tr("Migrating database from version 6 to 7."), query.size());
+
+            while(query.next())
+            {
+                QString comment;
+                QByteArray array = query.value(1).toByteArray();
+                QDataStream stream(&array, QIODevice::ReadOnly);
+                stream.setVersion(QDataStream::Qt_4_5);
+
+                quint64 id = query.value(0).toULongLong();
+
+                switch(query.value(2).toInt())
+                {
+                case eWpt:
+                {
+                    CQlgtWpt wpt(id, 0);
+                    stream >> wpt;
+                    comment = wpt.getInfo();
+                }
+                break;
+
+                case eTrk:
+                {
+                    CQlgtTrack trk(id, 0);
+                    stream >> trk;
+                    comment = trk.getInfo();
+                }
+                break;
+
+                case eRte:
+                {
+                    CQlgtRoute rte(id, 0);
+                    stream >> rte;
+                    comment = rte.getInfo();
+                }
+                break;
+
+                case eOvl:
+                {
+                    //                            IOverlay ovl(0);
+                    //                            stream >> ovl;
+                    //                            comment = ovl.getInfo();
+                    continue;
+                }
+                break;
+                }
+
+                query2.prepare("UPDATE items SET comment=:comment WHERE id=:id");
+                query2.bindValue(":comment", comment);
+                query2.bindValue(":id", query.value(0));
+
+                if(!query2.exec())
+                {
+                    qDebug() << query.lastQuery();
+                    qDebug() << query.lastError();
+                    return;
+                }
+
+                PROGRESS(progCnt++, continue);
+            }
+
+            break;
+        }
+
+        case 8:
+        {
+            PROGRESS_SETUP(tr("Migrating database from version 7 to 8."), 1);
+
+            if(!query.exec( "CREATE TABLE diarys ("
+                            "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+                            "parent         INTEGER NOT NULL,"
+                            "key            TEXT NOT NULL,"
+                            "date           DATETIME DEFAULT CURRENT_TIMESTAMP,"
+                            "data           BLOB NOT NULL,"
+                            "FOREIGN KEY(parent) REFERENCES folders(id)"
+                            ")"))
+            {
+                qDebug() << query.lastQuery();
+                qDebug() << query.lastError();
+                return;
+            }
+
+            PROGRESS(1, return );
+            break;
+        }
+
+        case 9:
+        {
+            if (QFile::exists(path.absoluteFilePath(name)))
+            {
+                QFile::remove(path.absoluteFilePath("qlgt_save_v8.db"));
+            }
+            QFile f(path.absoluteFilePath(name));
+            f.copy(path.absoluteFilePath("qlgt_save_v4.db"));
+
+            PROGRESS_SETUP(tr("Migrating database from version 8 to 9."), 1);
+
+            if(!query.exec("ALTER TABLE folders ADD COLUMN locked BOOLEAN DEFAULT FALSE"))
+            {
+                qDebug() << query.lastQuery();
+                qDebug() << query.lastError();
+                return;
+            }
+
+            PROGRESS(1, return );
+            break;
+        }
+        }
+    }
+    query.prepare( "UPDATE versioninfo set version=:version");
+    query.bindValue(":version", version - 1);
+    QUERY_EXEC(; );
+}
+
+void CQlgtDb::printStatistic()
+{
+    QSqlQuery query(db);
+
+    gui->stdOut(tr("Open database: %1").arg(db.databaseName()));
+
+    nItems = 0;
+
+    query.prepare("SELECT COUNT() FROM folders");
+    QUERY_EXEC(; );
+    if(query.next())
+    {
+        nFolders = query.value(0).toInt();
+        gui->stdOut(tr("Folders:          %1").arg(nFolders));
+    }
+
+    query.prepare("SELECT COUNT() FROM items WHERE type=:type");
+    query.bindValue(":type", eTrk);
+    QUERY_EXEC(; );
+    if(query.next())
+    {
+        nItems += query.value(0).toInt();
+        gui->stdOut(tr("Tracks:           %1").arg(query.value(0).toInt()));
+    }
+    query.prepare("SELECT COUNT() FROM items WHERE type=:type");
+    query.bindValue(":type", eRte);
+    QUERY_EXEC(; );
+    if(query.next())
+    {
+        nItems += query.value(0).toInt();
+        gui->stdErr(tr("Routes:           %1 (Only the basic route will be copied)").arg(query.value(0).toInt()));
+    }
+    query.prepare("SELECT COUNT() FROM items WHERE type=:type");
+    query.bindValue(":type", eWpt);
+    QUERY_EXEC(; );
+    if(query.next())
+    {
+        nItems += query.value(0).toInt();
+        gui->stdOut(tr("Waypoints:        %1").arg(query.value(0).toInt()));
+    }
+    query.prepare("SELECT COUNT() FROM items WHERE type=:type");
+    query.bindValue(":type", eOvl);
+    QUERY_EXEC(; );
+    if(query.next())
+    {
+        nItems += query.value(0).toInt();
+        gui->stdErr(tr("Overlays:         %1 (only area overlays will be converted to QMapShack)").arg(query.value(0).toInt()));
+    }
+    query.prepare("SELECT COUNT() FROM diarys");
+    query.bindValue(":type", eDry);
+    QUERY_EXEC(; );
+    if(query.next())
+    {
+        gui->stdOut(tr("Diaries:          %1").arg(query.value(0).toInt()));
+    }
+    query.prepare("SELECT COUNT() FROM items WHERE type=:type");
+    query.bindValue(":type", eMap);
+    QUERY_EXEC(; );
+    if(query.next())
+    {
+        gui->stdErr(tr("Map selections:   %1 (can't be converted to QMapShack)").arg(query.value(0).toInt()));
+    }
+}
+
+void CQlgtDb::start(const QString& filename)
+{
+    gui->stdOut(tr("------ Start to convert database to %1------").arg(filename));
+    dbQms = new CQmsDb(filename, gui);
+    if(!dbQms->isValid())
+    {
+        gui->stdErr(tr("Failed to create target database."));
+        gui->stdOut(tr("------ Abort ------"));
+        return;
+    }
+
+
+    xferItems();
+    xferFolders();
+
+    QSqlQuery query(db);
+    query.prepare("Select parent, child FROM folder2folder");
+    QUERY_EXEC(return;);
+    while(query.next())
+    {
+        quint64 idParent    = query.value(0).toULongLong();
+        quint64 idChild     = query.value(1).toULongLong();
+        dbQms->addFolder2FolderRelation(idParent, idChild);
+    }
+
+    query.prepare("Select parent, child FROM folder2item");
+    QUERY_EXEC(return;);
+    while(query.next())
+    {
+        quint64 idParent    = query.value(0).toULongLong();
+        quint64 idChild     = query.value(1).toULongLong();
+        dbQms->addFolder2ItemRelation(idParent, idChild);
+    }
+
+    delete dbQms;
+    gui->stdOut(tr("------ Done ------"));
+
+}
+
+void CQlgtDb::xferFolders()
+{
+    nDiary = 0;
+
+    quint32 cnt = 1;
+    QProgressDialog progress(tr("Restore folders..."),tr("Abort"), 0, 100, gui);
+    progress.setWindowModality(Qt::WindowModal);
+
+    QSqlQuery query(db);
+    query.prepare("SELECT id FROM folders");
+    QUERY_EXEC(return;);
+    while(query.next())
+    {
+        progress.setValue(cnt++ * 100 / nFolders);
+        if (progress.wasCanceled())
+        {
+            break;
+        }
+
+        quint64 idFolder = query.value(0).toULongLong();
+
+        CQlgtFolder folder1(idFolder, db);
+        if(folder1.diary)
+        {
+            nDiary++;
+        }
+
+        dbQms->addFolder(folder1);
+
+        qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
+    }
+    progress.setValue(100);
+    gui->stdOut(tr("Imported %1 folders and %2 diaries").arg(nFolders).arg(nDiary));
+}
+
+void CQlgtDb::xferItems()
+{
+    quint32 cnt = 1;
+    QProgressDialog progress(tr("Copy items..."),tr("Abort"), 0, 100, gui);
+    progress.setWindowModality(Qt::WindowModal);
+
+    nWpt = 0;
+    nTrk = 0;
+    nRte = 0;
+    nOvl = 0;
+
+
+    QSqlQuery query(db);
+    query.prepare("SELECT id FROM items");
+    QUERY_EXEC(return;);
+    while(query.next())
+    {
+
+        progress.setValue(cnt++ * 100 / nItems);
+        if (progress.wasCanceled())
+        {
+            break;
+        }
+        qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
+        xferItem(query.value(0).toULongLong());
+    }
+    progress.setValue(100);
+
+    gui->stdOut(tr("Imported %1 tracks, %2 waypoints, %3 routes, %4 areas").arg(nTrk).arg(nWpt).arg(nRte).arg(nOvl));
+    gui->stdOut(tr("Import folders..."));
+
+    query.prepare("SELECT id FROM folders");
+    QUERY_EXEC(return;);
+}
+
+void CQlgtDb::xferItem(quint64 id)
+{
+    QSqlQuery query(db);
+    query.prepare("SELECT type, data FROM items WHERE id=:id");
+    query.bindValue(":id", id);
+    QUERY_EXEC(return;);
+
+    if(query.next())
+    {
+        QByteArray data = query.value(1).toByteArray();
+        QDataStream stream(&data, QIODevice::ReadOnly);
+        stream.setVersion(QDataStream::Qt_4_5);
+
+
+        switch(query.value(0).toInt())
+        {
+        case eWpt:
+        {
+            CQlgtWpt wpt1(id, 0);
+            stream >> wpt1;
+            dbQms->addWpt(wpt1);
+            nWpt++;
+            break;
+        }
+        case eTrk:
+        {
+            CQlgtTrack trk1(id, 0);
+            stream >> trk1;
+            dbQms->addTrk(trk1);
+            nTrk++;
+            break;
+        }
+        case eRte:
+        {
+            CQlgtRoute rte1(id, 0);
+            stream >> rte1;
+            dbQms->addRte(rte1);
+            nRte++;
+            break;
+        }
+        case eOvl:
+        {
+            IQlgtOverlay ovl1(id, 0);
+            stream >> ovl1;
+            if(ovl1.type != "Area")
+            {
+                gui->stdErr(tr("Overlay of type '%1' cant be converted").arg(ovl1.type));
+                break;
+            }
+            dbQms->addArea(ovl1);
+            nOvl++;
+            break;
+        }
+        }
+
+    }
+}
diff --git a/src/qlgt/CQlgtDb.h b/src/qlgt/CQlgtDb.h
new file mode 100644
index 0000000..deb55f6
--- /dev/null
+++ b/src/qlgt/CQlgtDb.h
@@ -0,0 +1,80 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CQLGTDB_H
+#define CQLGTDB_H
+
+#include <QObject>
+#include <QSqlDatabase>
+#include <QTreeWidgetItem>
+#include <QDir>
+#include <QPointer>
+
+class CImportDatabase;
+class CQmsDb;
+
+class CQlgtDb : public QObject
+{
+    public:
+        enum EntryType_e
+        {
+            eWpt        = QTreeWidgetItem::UserType + 3,
+            eTrk        = QTreeWidgetItem::UserType + 4,
+            eRte        = QTreeWidgetItem::UserType + 5,
+            eOvl        = QTreeWidgetItem::UserType + 6,
+            eMap        = QTreeWidgetItem::UserType + 7,
+            eDry        = QTreeWidgetItem::UserType + 8,
+
+            eFolder0    = QTreeWidgetItem::UserType + 100,
+            eFolderT    = QTreeWidgetItem::UserType + 101,
+            eFolder1    = QTreeWidgetItem::UserType + 102,
+            eFolder2    = QTreeWidgetItem::UserType + 103,
+            eFolderN    = QTreeWidgetItem::UserType + 104
+        };
+
+        CQlgtDb(const QString& filename, CImportDatabase * parent);
+        virtual ~CQlgtDb();
+
+        void start(const QString& filename);
+
+    private:
+        void initDB();
+        void migrateDB(int version);
+        void printStatistic();
+        void xferFolders();
+        void xferItems();
+        void xferItem(quint64 id);
+        QSqlDatabase db;
+        QDir        path;
+        QString     name;
+
+        CImportDatabase * gui;
+
+        QPointer<CQmsDb> dbQms;
+
+        quint32 nItems;
+        quint32 nFolders;
+        quint32 nWpt;
+        quint32 nTrk;
+        quint32 nRte;
+        quint32 nOvl;
+        quint32 nDiary;
+};
+
+#endif //CQLGTDB_H
+
diff --git a/src/qlgt/CQlgtDiary.cpp b/src/qlgt/CQlgtDiary.cpp
new file mode 100644
index 0000000..89409cb
--- /dev/null
+++ b/src/qlgt/CQlgtDiary.cpp
@@ -0,0 +1,258 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CQlgtDiary.h"
+
+struct diary_head_entry_t
+{
+    diary_head_entry_t() : type(CQlgtDiary::eEnd), offset(0) {}
+    qint32      type;
+    quint32     offset;
+    QByteArray  data;
+};
+
+
+QDataStream& operator >>(QDataStream& s, CQlgtDiary& diary)
+{
+    QIODevice * dev = s.device();
+    qint64      pos = dev->pos();
+
+    char magic[9];
+    s.readRawData(magic,9);
+
+    if(strncmp(magic,"QLDry   ",9))
+    {
+        dev->seek(pos);
+        return s;
+    }
+
+    QList<diary_head_entry_t> entries;
+
+    while(1)
+    {
+        diary_head_entry_t entry;
+        s >> entry.type >> entry.offset;
+        entries << entry;
+        if(entry.type == CQlgtDiary::eEnd) break;
+    }
+
+    QList<diary_head_entry_t>::iterator entry = entries.begin();
+    while(entry != entries.end())
+    {
+        qint64 o = pos + entry->offset;
+        dev->seek(o);
+        s >> entry->data;
+        switch(entry->type)
+        {
+            case CQlgtDiary::eBase:
+            {
+                QString comment, name,key;
+                QDataStream s1(&entry->data, QIODevice::ReadOnly);
+                s1.setVersion(QDataStream::Qt_4_5);
+
+                s1 >> diary.timestamp;
+                s1 >> diary.comment;
+                s1 >> diary.name;
+                s1 >> diary.keyProjectGeoDB;
+                s1 >> diary.key;
+
+                break;
+            }
+//            case CQlgtDiary::eWpt:
+//            {
+//                int cnt;
+//                QDataStream s1(&entry->data, QIODevice::ReadOnly);
+//                s1.setVersion(QDataStream::Qt_4_5);
+
+//                s1 >> cnt;
+//                for(int i=0; i < cnt; i++)
+//                {
+//                    CWpt * wpt = new CWpt(&diary);
+//                    s1 >> *wpt;
+//                    diary.wpts << wpt;
+//                }
+//                break;
+
+//            }
+//            case CQlgtDiary::eTrk:
+//            {
+//                int cnt;
+//                QDataStream s1(&entry->data, QIODevice::ReadOnly);
+//                s1.setVersion(QDataStream::Qt_4_5);
+
+//                s1 >> cnt;
+//                for(int i=0; i < cnt; i++)
+//                {
+//                    CTrack * trk = new CTrack(&diary);
+//                    s1 >> *trk;
+//                    trk->rebuild(true);
+//                    diary.trks << trk;
+//                }
+//                break;
+
+//            }
+//            case CQlgtDiary::eRte:
+//            {
+//                int cnt;
+//                QDataStream s1(&entry->data, QIODevice::ReadOnly);
+//                s1.setVersion(QDataStream::Qt_4_5);
+
+//                s1 >> cnt;
+//                for(int i=0; i < cnt; i++)
+//                {
+//                    CRoute * rte = new CRoute(&diary);
+//                    s1 >> *rte;
+//                    diary.rtes << rte;
+//                }
+//                break;
+
+//            }
+            default:;
+        }
+
+        ++entry;
+    }
+
+    return s;
+}
+
+QDataStream& operator <<(QDataStream& s, CQlgtDiary& diary)
+{
+    QList<diary_head_entry_t> entries;
+
+
+    //---------------------------------------
+    // prepare base data
+    //---------------------------------------
+    diary_head_entry_t entryBase;
+    entryBase.type = CQlgtDiary::eBase;
+    QDataStream s1(&entryBase.data, QIODevice::WriteOnly);
+    s1.setVersion(QDataStream::Qt_4_5);
+
+    s1 << diary.timestamp;
+    s1 << diary.comment;
+    s1 << diary.name;
+    s1 << diary.keyProjectGeoDB;
+    s1 << diary.key;
+    entries << entryBase;
+
+//    //---------------------------------------
+//    // prepare waypoint data
+//    //---------------------------------------
+//    diary_head_entry_t entryWpt;
+//    entryWpt.type = CQlgtDiary::eWpt;
+//    QDataStream s2(&entryWpt.data, QIODevice::WriteOnly);
+//    s2.setVersion(QDataStream::Qt_4_5);
+
+//    s2 << diary.wpts.count();
+//    foreach(CWpt * wpt, diary.wpts)
+//    {
+//        s2 << *wpt;
+//    }
+
+//    entries << entryWpt;
+
+//    //---------------------------------------
+//    // prepare track data
+//    //---------------------------------------
+//    diary_head_entry_t entryTrk;
+//    entryTrk.type = CQlgtDiary::eTrk;
+//    QDataStream s3(&entryTrk.data, QIODevice::WriteOnly);
+//    s3.setVersion(QDataStream::Qt_4_5);
+
+//    s3 << diary.trks.count();
+//    foreach(CTrack * trk, diary.trks)
+//    {
+//        s3 << *trk;
+//    }
+
+//    entries << entryTrk;
+
+//    //---------------------------------------
+//    // prepare route data
+//    //---------------------------------------
+//    diary_head_entry_t entryRte;
+//    entryRte.type = CQlgtDiary::eRte;
+//    QDataStream s4(&entryRte.data, QIODevice::WriteOnly);
+//    s4.setVersion(QDataStream::Qt_4_5);
+
+//    s4 << diary.rtes.count();
+//    foreach(CRoute * rte, diary.rtes)
+//    {
+//        s4 << *rte;
+//    }
+
+//    entries << entryRte;
+
+    //---------------------------------------
+    // prepare terminator
+    //---------------------------------------
+    diary_head_entry_t entryEnd;
+    entryEnd.type = CQlgtDiary::eEnd;
+    entries << entryEnd;
+
+    //---------------------------------------
+    //---------------------------------------
+    // now start to actually write data;
+    //---------------------------------------
+    //---------------------------------------
+    // write magic key
+    s.writeRawData("QLDry   ",9);
+
+    // calculate offset table
+    quint32 offset = entries.count() * 8 + 9;
+
+    QList<diary_head_entry_t>::iterator entry = entries.begin();
+    while(entry != entries.end())
+    {
+        entry->offset = offset;
+        offset += entry->data.size() + sizeof(quint32);
+        ++entry;
+    }
+
+    // write offset table
+    entry = entries.begin();
+    while(entry != entries.end())
+    {
+        s << entry->type << entry->offset;
+        ++entry;
+    }
+
+    // write entry data
+    entry = entries.begin();
+    while(entry != entries.end())
+    {
+        s << entry->data;
+        ++entry;
+    }
+
+    return s;
+}
+
+CQlgtDiary::CQlgtDiary(quint64 id, QObject *parent)
+    : QObject(parent)
+    , IItem(id)
+{
+
+}
+
+CQlgtDiary::~CQlgtDiary()
+{
+
+}
+
diff --git a/src/gis/db/CSetupDB.h b/src/qlgt/CQlgtDiary.h
similarity index 67%
copy from src/gis/db/CSetupDB.h
copy to src/qlgt/CQlgtDiary.h
index 976eacc..dae7045 100644
--- a/src/gis/db/CSetupDB.h
+++ b/src/qlgt/CQlgtDiary.h
@@ -16,27 +16,25 @@
 
 **********************************************************************************************/
 
-#ifndef CSETUPDB_H
-#define CSETUPDB_H
+#ifndef CQLGTDIARY_H
+#define CQLGTDIARY_H
 
-#include <QDialog>
-#include "ui_ISetupDB.h"
+#include <QObject>
+#include "qlgt/IItem.h"
 
-
-class CSetupDB : public QDialog, private Ui::ISetupDB
+class CQlgtDiary : public QObject, public IItem
 {
-    Q_OBJECT
     public:
-        CSetupDB(QWidget * parent);
-        virtual ~CSetupDB();
-
-    public slots:
-        void accept();
+        CQlgtDiary(quint64 id, QObject * parent);
+        virtual ~CQlgtDiary();
 
+        enum type_e {eEnd,eBase, eWpt, eTrk, eRte};
 
-    private slots:
-        void slotSetupPath();
+        quint64 keyProjectGeoDB;
 };
 
-#endif //CSETUPDB_H
+QDataStream& operator >>(QDataStream& s, CQlgtDiary& diary);
+QDataStream& operator <<(QDataStream& s, CQlgtDiary& diary);
+
+#endif //CQLGTDIARY_H
 
diff --git a/src/qlgt/CQlgtFolder.cpp b/src/qlgt/CQlgtFolder.cpp
new file mode 100644
index 0000000..67244e9
--- /dev/null
+++ b/src/qlgt/CQlgtFolder.cpp
@@ -0,0 +1,74 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "qlgt/CQlgtFolder.h"
+#include "qlgt/CQlgtDb.h"
+#include "qlgt/CQlgtDiary.h"
+#include "gis/db/macros.h"
+
+#include <QtSql>
+
+CQlgtFolder::CQlgtFolder(quint64 id, QSqlDatabase &db)
+    : type(0)
+    , locked(false)
+    , diary(0)
+    , id(id)
+{
+    QSqlQuery query(db);
+
+    query.prepare("SELECT type, name, comment, locked FROM folders WHERE id=:id");
+    query.bindValue(":id", id);
+    QUERY_EXEC(return;);
+
+    if(query.next())
+    {
+        type = query.value(0).toInt();
+        name = query.value(1).toString();
+        comment = query.value(2).toString();
+        locked = query.value(3).toBool();
+    }
+
+    query.prepare("SELECT id, data FROM diarys WHERE parent=:id");
+    query.bindValue(":id", id);
+    QUERY_EXEC(return;);
+
+    if(query.next())
+    {
+        quint64 idDiary = query.value(0).toULongLong();
+        QByteArray data = query.value(1).toByteArray();
+        QDataStream stream(&data, QIODevice::ReadOnly);
+        stream.setVersion(QDataStream::Qt_4_5);
+
+        diary = new CQlgtDiary(idDiary, this);
+        stream >> *diary;
+    }
+
+    query.prepare("SELECT child FROM folder2item WHERE parent=:folder");
+    query.bindValue(":folder", id);
+    QUERY_EXEC(return;);
+    while(query.next())
+    {
+        items << query.value(0).toULongLong();
+    }
+}
+
+CQlgtFolder::~CQlgtFolder()
+{
+
+}
+
diff --git a/src/gis/db/CSetupDB.h b/src/qlgt/CQlgtFolder.h
similarity index 68%
copy from src/gis/db/CSetupDB.h
copy to src/qlgt/CQlgtFolder.h
index 976eacc..e0489f4 100644
--- a/src/gis/db/CSetupDB.h
+++ b/src/qlgt/CQlgtFolder.h
@@ -16,27 +16,31 @@
 
 **********************************************************************************************/
 
-#ifndef CSETUPDB_H
-#define CSETUPDB_H
+#ifndef CQLGTFOLDER_H
+#define CQLGTFOLDER_H
 
-#include <QDialog>
-#include "ui_ISetupDB.h"
+#include <QObject>
+#include <QSet>
 
+class QSqlDatabase;
+class CQlgtDiary;
 
-class CSetupDB : public QDialog, private Ui::ISetupDB
+class CQlgtFolder : public QObject
 {
-    Q_OBJECT
     public:
-        CSetupDB(QWidget * parent);
-        virtual ~CSetupDB();
+        CQlgtFolder(quint64 id, QSqlDatabase& db);
+        virtual ~CQlgtFolder();
 
-    public slots:
-        void accept();
+        qint32 type;
+        QString name;
+        QString comment;
+        bool locked;
 
+        CQlgtDiary * diary;
 
-    private slots:
-        void slotSetupPath();
+        quint64 id;
+        QSet<quint64> items;
 };
 
-#endif //CSETUPDB_H
+#endif //CQLGTFOLDER_H
 
diff --git a/src/qlgt/CQlgtRoute.cpp b/src/qlgt/CQlgtRoute.cpp
new file mode 100644
index 0000000..622fbcc
--- /dev/null
+++ b/src/qlgt/CQlgtRoute.cpp
@@ -0,0 +1,270 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CQlgtRoute.h"
+
+struct rte_head_entry_t
+{
+    rte_head_entry_t() : type(CQlgtRoute::eEnd), offset(0) {}
+    qint32      type;
+    quint32     offset;
+    QByteArray  data;
+};
+
+
+QDataStream& operator >>(QDataStream& s, CQlgtRoute& route)
+{
+    quint32 nRtePts = 0;
+    QIODevice * dev = s.device();
+    qint64      pos = dev->pos();
+
+    char magic[9];
+    s.readRawData(magic,9);
+
+    if(strncmp(magic,"QLRte   ",9))
+    {
+        dev->seek(pos);
+        return s;
+    }
+
+    QList<rte_head_entry_t> entries;
+
+    while(1)
+    {
+        rte_head_entry_t entry;
+        s >> entry.type >> entry.offset;
+        entries << entry;
+        if(entry.type == CQlgtRoute::eEnd) break;
+    }
+
+    QList<rte_head_entry_t>::iterator entry = entries.begin();
+    while(entry != entries.end())
+    {
+        qint64 o = pos + entry->offset;
+        dev->seek(o);
+        s >> entry->data;
+
+        switch(entry->type)
+        {
+            case CQlgtRoute::eBase:
+            {
+
+                QDataStream s1(&entry->data, QIODevice::ReadOnly);
+                s1.setVersion(QDataStream::Qt_4_5);
+
+                s1 >> route.key;
+                s1 >> route.timestamp;
+                s1 >> route.name;
+                s1 >> route.iconString;
+                s1 >> route.ttime;
+                s1 >> route.parentWpt;
+
+                break;
+            }
+
+            case CQlgtRoute::eRtePts:
+            {
+                QDataStream s1(&entry->data, QIODevice::ReadOnly);
+                s1.setVersion(QDataStream::Qt_4_5);
+                quint32 n;
+
+                route.priRoute.clear();
+                s1 >> nRtePts;
+
+                for(n = 0; n < nRtePts; ++n)
+                {
+                    CQlgtRoute::pt_t rtept;
+                    float u, v;
+                    QString action;
+
+                    s1 >> u;
+                    s1 >> v;
+                    s1 >> action;
+
+                    rtept.lon = u;
+                    rtept.lat = v;
+                    rtept.action = action;
+                    route.priRoute << rtept;
+                }
+                break;
+            }
+//            case CQlgtRoute::eRteSec:
+//            {
+//                QDataStream s1(&entry->data, QIODevice::ReadOnly);
+//                s1.setVersion(QDataStream::Qt_4_5);
+//                quint32 n;
+
+//                route.secRoute.clear();
+//                s1 >> nRtePts;
+
+//                for(n = 0; n < nRtePts; ++n)
+//                {
+//                    CQlgtRoute::pt_t rtept;
+//                    float u, v;
+//                    QString action;
+
+//                    s1 >> u;
+//                    s1 >> v;
+//                    s1 >> action;
+
+//                    rtept.lon = u;
+//                    rtept.lat = v;
+//                    rtept.action = action;
+//                    route.secRoute << rtept;
+//                }
+//                break;
+//            }
+            default:;
+        }
+
+        ++entry;
+    }
+
+
+    return s;
+}
+
+QDataStream& operator <<(QDataStream& s, CQlgtRoute& route)
+{
+    QList<rte_head_entry_t> entries;
+
+    //---------------------------------------
+    // prepare base data
+    //---------------------------------------
+    rte_head_entry_t entryBase;
+    entryBase.type = CQlgtRoute::eBase;
+    QDataStream s1(&entryBase.data, QIODevice::WriteOnly);
+    s1.setVersion(QDataStream::Qt_4_5);
+
+    s1 << route.key;
+    s1 << route.timestamp;
+    s1 << route.name;
+    s1 << route.iconString;
+    s1 << route.ttime;
+    s1 << route.parentWpt;
+
+    entries << entryBase;
+
+    //---------------------------------------
+    // prepare primary routepoint data
+    //---------------------------------------
+    rte_head_entry_t entryPriRtePts;
+    entryPriRtePts.type = CQlgtRoute::eRtePts;
+    QDataStream s2(&entryPriRtePts.data, QIODevice::WriteOnly);
+    s2.setVersion(QDataStream::Qt_4_5);
+
+    {
+        QVector<CQlgtRoute::pt_t>& rtepts           = route.priRoute;
+        QVector<CQlgtRoute::pt_t>::iterator rtept   = rtepts.begin();
+
+        s2 << (quint32)rtepts.size();
+        while(rtept != rtepts.end())
+        {
+            s2 << (float)rtept->lon;
+            s2 << (float)rtept->lat;
+            s2 << rtept->action;
+            ++rtept;
+        }
+    }
+    entries << entryPriRtePts;
+
+//    //---------------------------------------
+//    // prepare secondary routepoint data
+//    //---------------------------------------
+//    rte_head_entry_t entrySecRtePts;
+//    entrySecRtePts.type = CQlgtRoute::eRteSec;
+//    QDataStream s3(&entrySecRtePts.data, QIODevice::WriteOnly);
+//    s3.setVersion(QDataStream::Qt_4_5);
+
+//    {
+//        QVector<CQlgtRoute::pt_t>& rtepts           = route.getSecRtePoints();
+//        QVector<CQlgtRoute::pt_t>::iterator rtept   = rtepts.begin();
+
+//        if(!rtepts.isEmpty())
+//        {
+//            s3 << (quint32)rtepts.size();
+//            while(rtept != rtepts.end())
+//            {
+//                s3 << (float)rtept->lon;
+//                s3 << (float)rtept->lat;
+//                s3 << rtept->action;
+//                ++rtept;
+//            }
+//            entries << entrySecRtePts;
+//        }
+
+//    }
+
+    //---------------------------------------
+    // prepare terminator
+    //---------------------------------------
+    rte_head_entry_t entryEnd;
+    entryEnd.type = CQlgtRoute::eEnd;
+    entries << entryEnd;
+
+    //---------------------------------------
+    //---------------------------------------
+    // now start to actually write data;
+    //---------------------------------------
+    //---------------------------------------
+    // write magic key
+    s.writeRawData("QLRte   ",9);
+
+    // calculate offset table
+    quint32 offset = entries.count() * 8 + 9;
+
+    QList<rte_head_entry_t>::iterator entry = entries.begin();
+    while(entry != entries.end())
+    {
+        entry->offset = offset;
+        offset += entry->data.size() + sizeof(quint32);
+        ++entry;
+    }
+
+    // write offset table
+    entry = entries.begin();
+    while(entry != entries.end())
+    {
+        s << entry->type << entry->offset;
+        ++entry;
+    }
+
+    // write entry data
+    entry = entries.begin();
+    while(entry != entries.end())
+    {
+        s << entry->data;
+        ++entry;
+    }
+
+
+    return s;
+}
+
+CQlgtRoute::CQlgtRoute(quint64 id, QObject *parent)
+    : QObject(parent)
+    , IItem(id)
+{
+
+}
+
+CQlgtRoute::~CQlgtRoute()
+{
+
+}
+
diff --git a/src/gis/db/IDBFolder.h b/src/qlgt/CQlgtRoute.h
similarity index 53%
copy from src/gis/db/IDBFolder.h
copy to src/qlgt/CQlgtRoute.h
index 9f1c1dc..30b2758 100644
--- a/src/gis/db/IDBFolder.h
+++ b/src/qlgt/CQlgtRoute.h
@@ -16,44 +16,48 @@
 
 **********************************************************************************************/
 
-#ifndef IDBFOLDER_H
-#define IDBFOLDER_H
+#ifndef CQLGTROUTE_H
+#define CQLGTROUTE_H
 
-#include <QTreeWidgetItem>
-#include <QSqlDatabase>
+#include <QObject>
+#include <proj_api.h>
+#include "qlgt/IItem.h"
 
-class IDBFolder : public QTreeWidgetItem
+class CQlgtRoute : public QObject, public IItem
 {
     public:
-        enum type_e
+        CQlgtRoute(quint64 id, QObject * parent);
+        virtual ~CQlgtRoute();
+
+        enum type_e {eEnd, eBase, eRtePts, eRteSec};
+        struct pt_t
         {
-             eTypeLostFound = 1
-            ,eTypeDatabase = 2
-            ,eTypeGroup = 3
-            ,eTypeProject = 4
-            ,eTypeOther = 5
+            float lon;
+            float lat;
+
+            QString action;
+
+            operator const projXY ()
+            {
+                projXY p;
+                p.u = lon;
+                p.v = lat;
+                return p;
+            }
         };
 
+        /// primary route, just the basic points like A to B via C
+        QVector<pt_t> priRoute;
 
-        IDBFolder(type_e type, quint64 id, QTreeWidgetItem * parent);
-        IDBFolder(type_e type, quint64 id, QTreeWidget * parent);
-        virtual ~IDBFolder();
-
-        quint64 getId(){return id;}
-
-        virtual void expanding();
+        quint32 ttime;
 
-        static IDBFolder * createFolderByType(int type, quint64 id, QTreeWidgetItem *parent);
-
-    protected:
-        void setupFromDB();
+        QString iconString;
 
+};
 
-    private:
-        QSqlDatabase db;
-        quint64 id;
 
-};
+QDataStream& operator >>(QDataStream& s, CQlgtRoute& rte);
+QDataStream& operator <<(QDataStream& s, CQlgtRoute& rte);
 
-#endif //IDBFOLDER_H
+#endif //CQLGTROUTE_H
 
diff --git a/src/qlgt/CQlgtTrack.cpp b/src/qlgt/CQlgtTrack.cpp
new file mode 100644
index 0000000..30d9841
--- /dev/null
+++ b/src/qlgt/CQlgtTrack.cpp
@@ -0,0 +1,344 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CQlgtTrack.h"
+
+#include <QtWidgets>
+
+QDataStream& operator >>(QDataStream& s, CFlags& flag)
+{
+    quint32 f;
+    s >> f;
+    flag.setFlags(f);
+    flag.setChanged(true);
+    return s;
+}
+
+
+QDataStream& operator <<(QDataStream& s, CFlags& flag)
+{
+    s << flag.flag();
+    return s;
+}
+
+
+struct trk_head_entry_t
+{
+    trk_head_entry_t() : type(CQlgtTrack::eEnd), offset(0) {}
+    qint32      type;
+    quint32     offset;
+    QByteArray  data;
+};
+
+
+QDataStream& operator >>(QDataStream& s, CQlgtTrack& track)
+{
+    quint32 nTrkPts = 0;
+    QIODevice * dev = s.device();
+    qint64      pos = dev->pos();
+
+    char magic[9];
+    s.readRawData(magic,9);
+
+    if(strncmp(magic,"QLTrk   ",9))
+    {
+        dev->seek(pos);
+        return s;
+    }
+
+    QList<trk_head_entry_t> entries;
+
+    while(1)
+    {
+        trk_head_entry_t entry;
+        s >> entry.type >> entry.offset;
+        entries << entry;
+        if(entry.type == CQlgtTrack::eEnd) break;
+    }
+
+    QList<trk_head_entry_t>::iterator entry = entries.begin();
+    while(entry != entries.end())
+    {
+        qint64 o = pos + entry->offset;
+        dev->seek(o);
+        s >> entry->data;
+
+        switch(entry->type)
+        {
+            case CQlgtTrack::eBase:
+            {
+
+                QString key;
+
+                QDataStream s1(&entry->data, QIODevice::ReadOnly);
+                s1.setVersion(QDataStream::Qt_4_5);
+
+                s1 >> track.key;
+                s1 >> track.timestamp;
+                s1 >> track.name;
+                s1 >> track.comment;
+                s1 >> track.colorIdx;
+                s1 >> track.parentWpt;
+                if(!s1.atEnd())
+                {
+                    s1 >> track.doScaleWpt2Track;
+                }
+                if(!s1.atEnd())
+                {
+                    s1 >> track.cntMedianFilterApplied;
+                }
+                if(!s1.atEnd())
+                {
+                    s1 >> track.useMultiColor;
+                }
+                if(!s1.atEnd())
+                {
+                    s1 >> track.idMultiColor;
+                }
+
+                //track.setColor(track.colorIdx);
+
+                break;
+            }
+
+            case CQlgtTrack::eTrkPts:
+            {
+                QDataStream s1(&entry->data, QIODevice::ReadOnly);
+                s1.setVersion(QDataStream::Qt_4_5);
+                quint32 n;
+
+                track.track.clear();
+                s1 >> nTrkPts;
+
+                for(n = 0; n < nTrkPts; ++n)
+                {
+                    CQlgtTrack::pt_t trkpt;
+                    s1 >> trkpt.lon;
+                    s1 >> trkpt.lat;
+                    s1 >> trkpt.ele;
+                    s1 >> trkpt.timestamp;
+                    s1 >> trkpt.flags;
+
+                    trkpt._lon = trkpt.lon;
+                    trkpt._lat = trkpt.lat;
+                    trkpt._ele = trkpt.ele;
+                    trkpt._timestamp = trkpt.timestamp;
+                    trkpt._timestamp_msec = trkpt.timestamp_msec;
+
+                    track << trkpt;
+                }
+                break;
+            }
+
+            case CQlgtTrack::eTrkPts2:
+            {
+                QDataStream s1(&entry->data, QIODevice::ReadOnly);
+                s1.setVersion(QDataStream::Qt_4_5);
+
+                quint32 nTrkPts1 = 0;
+
+                s1 >> nTrkPts1;
+                if(nTrkPts1 != nTrkPts)
+                {
+                    QMessageBox::warning(0, QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of training data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
+                    break;
+                }
+
+                QList<CQlgtTrack::pt_t>::iterator pt1 = track.track.begin();
+                while (pt1 != track.track.end())
+                {
+                    quint32 dummy;
+                    s1 >> pt1->timestamp_msec;
+                    s1 >> dummy;
+                    s1 >> dummy;
+                    s1 >> dummy;
+                    s1 >> dummy;
+                    s1 >> dummy;
+
+                    pt1++;
+                }
+                break;
+            }
+
+//            case CQlgtTrack::eTrain:
+//            {
+//                QDataStream s1(&entry->data, QIODevice::ReadOnly);
+//                s1.setVersion(QDataStream::Qt_4_5);
+
+//                quint32 nTrkPts1 = 0;
+
+//                s1 >> nTrkPts1;
+//                if(nTrkPts1 != nTrkPts)
+//                {
+//                    QMessageBox::warning(0, QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of training data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
+//                    break;
+//                }
+
+//                QList<CQlgtTrack::pt_t>::iterator pt1 = track.track.begin();
+//                while (pt1 != track.track.end())
+//                {
+//                    s1 >> pt1->heartReateBpm;
+//                    s1 >> pt1->cadenceRpm;
+//                    pt1++;
+//                }
+
+//                track.setTraineeData();
+//                break;
+//            }
+            case CQlgtTrack::eTrkExt1:
+            {
+                QDataStream s1(&entry->data, QIODevice::ReadOnly);
+                s1.setVersion(QDataStream::Qt_4_5);
+                quint32 nTrkPts1 = 0;
+
+                s1 >> nTrkPts1;
+                if(nTrkPts1 != nTrkPts)
+                {
+                    QMessageBox::warning(0, QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of extended data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
+                    break;
+                }
+
+                QList<CQlgtTrack::pt_t>::iterator pt1 = track.track.begin();
+                while (pt1 != track.track.end())
+                {
+                                 ///< [m]
+                    s1 >> pt1->altitude;
+                                 ///< [m]
+                    s1 >> pt1->height;
+                                 ///< [m/s]
+                    s1 >> pt1->velocity;
+                                 ///< [deg]
+                    s1 >> pt1->heading;
+                                 ///< [deg]
+                    s1 >> pt1->magnetic;
+                    s1 >> pt1->vdop;
+                    s1 >> pt1->hdop;
+                    s1 >> pt1->pdop;
+                    s1 >> pt1->x;///< [m] cartesian gps coordinate
+                    s1 >> pt1->y;///< [m] cartesian gps coordinate
+                    s1 >> pt1->z;///< [m] cartesian gps coordinate
+                                 ///< [m/s] velocity
+                    s1 >> pt1->vx;
+                                 ///< [m/s] velocity
+                    s1 >> pt1->vy;
+                                 ///< [m/s] velocity
+                    s1 >> pt1->vz;
+                    pt1++;
+                }
+
+                track.setExt1Data();
+                break;
+            }
+
+            case CQlgtTrack::eTrkShdw:
+            {
+                QDataStream s1(&entry->data, QIODevice::ReadOnly);
+                s1.setVersion(QDataStream::Qt_4_5);
+                quint32 n;
+
+                quint32 nTrkPts1 = 0;
+
+                s1 >> nTrkPts1;
+                if(nTrkPts1 != nTrkPts)
+                {
+                    QMessageBox::warning(0, QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of shadow data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
+                    break;
+                }
+
+                for(n = 0; n < nTrkPts; ++n)
+                {
+                    CQlgtTrack::pt_t& trkpt = track.track[n];
+                    s1 >> trkpt._lon;
+                    s1 >> trkpt._lat;
+                    s1 >> trkpt._ele;
+                }
+                track.hasShadow1 = true;
+                break;
+            }
+
+            case CQlgtTrack::eTrkShdw2:
+            {
+                QDataStream s1(&entry->data, QIODevice::ReadOnly);
+                s1.setVersion(QDataStream::Qt_4_5);
+                quint32 n;
+
+                quint32 nTrkPts1 = 0;
+
+                s1 >> nTrkPts1;
+                if(nTrkPts1 != nTrkPts)
+                {
+                    QMessageBox::warning(0, QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of shadow data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
+                    break;
+                }
+
+                for(n = 0; n < nTrkPts; ++n)
+                {
+                    quint32 dummy;
+                    CQlgtTrack::pt_t& trkpt = track.track[n];
+                    s1 >> trkpt._timestamp;
+                    s1 >> trkpt._timestamp_msec;
+                    s1 >> dummy;
+                    s1 >> dummy;
+                    s1 >> dummy;
+                    s1 >> dummy;
+                    s1 >> dummy;
+                }
+                track.hasShadow2 = true;
+                break;
+            }
+
+            default:;
+        }
+
+        ++entry;
+    }
+
+    return s;
+}
+
+QDataStream& operator <<(QDataStream& s, CQlgtTrack& trk)
+{
+
+    return s;
+}
+
+CQlgtTrack::CQlgtTrack(quint64 id, QObject *parent)
+    : QObject(parent)
+    , IItem(id)
+    , ext1Data(false)
+    , hasShadow1(false)
+    , hasShadow2(false)
+{
+
+}
+
+CQlgtTrack::~CQlgtTrack()
+{
+
+}
+
+CQlgtTrack& CQlgtTrack::operator<<(const pt_t& pt)
+{
+    track.push_back(pt);
+    track.last().idx     = track.size() - 1;
+    track.last().flags  &= ~pt_t::eCursor;
+    track.last().flags  &= ~pt_t::eFocus;
+    track.last().flags  &= ~pt_t::eSelected;
+
+    return *this;
+}
diff --git a/src/qlgt/CQlgtTrack.h b/src/qlgt/CQlgtTrack.h
new file mode 100644
index 0000000..015fccb
--- /dev/null
+++ b/src/qlgt/CQlgtTrack.h
@@ -0,0 +1,261 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CQLGTTRACK_H
+#define CQLGTTRACK_H
+
+#include <QObject>
+#include "qlgt/IItem.h"
+
+class CQlgtWpt;
+
+class CFlags
+{
+    public:
+        CFlags(quint32 f=0) { flags = f; changed = true; }
+        virtual ~CFlags() {}
+        const quint32 flag() const { return flags; }
+        void setFlags( quint32 f ) { if ( flags != f ) changed = true; flags = f; }
+        quint32 operator  & (quint32 f) const { return flags&f; }
+        quint32 operator |= (quint32 f) { if ( flags != (flags|f) ) changed = true; flags|=f; return flags; }
+        quint32 operator &= (quint32 f) { if ( flags != (flags&f) ) changed = true; flags&=f; return flags; }
+        quint32 operator >> (quint32 & f) { if ( flags != f ) changed = true; flags = f; return flags; }
+        const bool isChanged() const { return changed; }
+        void setChanged(bool b) { changed = b; }
+    protected:
+        /// display flags
+        quint32 flags;
+        bool changed;
+};
+
+QDataStream& operator >>(QDataStream& s, CFlags& flag);
+QDataStream& operator <<(QDataStream& s, CFlags& flag);
+
+
+
+class CQlgtTrack : public QObject, public IItem
+{
+    public:
+        CQlgtTrack(quint64 id, QObject * parent);
+        virtual ~CQlgtTrack();
+
+
+        enum type_e {eEnd,eBase,eTrkPts,eTrain,eTrkExt1,eTrkGpxExt,eTrkShdw, eTrkShdw2, eTrkPts2};
+
+        struct pt_t
+        {
+            enum flag_e
+            {
+                eSelected  = 1   ///< selected by track info view
+                ,eCursor    = 2  ///< selected by cursor
+                ,eDeleted   = 4  ///< mark point as deleted
+                ,eFocus     = 8  ///< mark current point of user focus
+            };
+
+            pt_t() : idx(-1), lon(WPT_NOFLOAT), lat(WPT_NOFLOAT), ele(WPT_NOFLOAT), timestamp(0), timestamp_msec(0),
+                speed(WPT_NOFLOAT), avgspeed(0), delta(WPT_NOFLOAT), azimuth(WPT_NOFLOAT), distance(WPT_NOFLOAT),
+                ascend(0), descend(0), heartReateBpm(-1), cadenceRpm(-1), slope(0), slope2(WPT_NOFLOAT), timeSinceStart(0),
+                fix(""), sat(0), velocity(WPT_NOFLOAT), heading(WPT_NOFLOAT),
+                vdop(WPT_NOFLOAT), hdop(WPT_NOFLOAT), pdop(WPT_NOFLOAT),
+                _lon(WPT_NOFLOAT),_lat(WPT_NOFLOAT),_ele(WPT_NOFLOAT), _timestamp(0), _timestamp_msec(0),
+                flags(0), px_valid(false), dem(WPT_NOFLOAT), editItem(NULL){}
+
+            bool operator==(const pt_t& pt) const {return pt.idx == idx;}
+
+            /// index counter for easy QVector access
+            qint32  idx;
+            /// longitude [deg]
+            float   lon;
+            /// latitude [deg]
+            float   lat;
+            /// elevation [m]
+            float   ele;
+            /// timestamp for track creation
+            quint32 timestamp;
+            quint32 timestamp_msec;
+
+            /// secondary data: the speed between this and the previous point
+            float speed;
+            /// secondary data: the short term average speed
+            float avgspeed;
+            /// secondary data: the distance between this and the previous point
+            float delta;
+            /// secondary data: the azimuth to the next point
+            double azimuth;
+            /// secondary data: the total distance of all visible points up to this point
+            float distance;
+            /// secondary data: the total ascend of all visible points up to this point
+            float ascend;
+            /// secondary data: the total descend of all visible points up to this point
+            float descend;
+            /// secondary data: the heart rate in bpm
+            int heartReateBpm;
+            /// secondary data: cadence in rpm
+            int cadenceRpm;
+            /// secondary data: slope in %
+            float slope;
+            /// secondary data: slope in %
+            float slope2;
+
+            quint32 timeSinceStart;
+
+            // extended data 1
+            QString fix;
+            qint32  sat;
+            float   altitude;    ///< [m] Altitude, Meters, above mean sea level
+            float   height;      ///< [m] Height of geoid (mean sea level) above WGS84 ellipsoid
+            float   velocity;    ///< [m/s] Ground speed, meters per hour
+            float   heading;     ///< [] Track angle in degrees True
+            float   magnetic;    ///< [] Magnetic Variation
+            float   vdop;        ///< Vertical dilution of precision (VDOP)
+            float   hdop;        ///< Horizontal dilution of precision (HDOP)
+            float   pdop;        ///< PDOP (dilution of precision)
+            float   x;           ///< [m] cartesian gps coordinate
+            float   y;           ///< [m] cartesian gps coordinate
+            float   z;           ///< [m] cartesian gps coordinate
+            float   vx;          ///< [m/s] velocity
+            float   vy;          ///< [m/s] velocity
+            float   vz;          ///< [m/s] velocity
+
+#ifdef GPX_EXTENSIONS
+            CGpxExtPt gpx_exts;
+#endif
+
+            // track shadow data (copy of original data)
+            /// longitude [deg]
+            float   _lon;
+            /// latitude [deg]
+            float   _lat;
+            /// elevation [m]
+            float   _ele;
+            quint32 _timestamp;
+            quint32 _timestamp_msec;
+
+            /// display flags
+            CFlags flags;
+            /// the current location in pixel
+            QPoint px;
+            bool px_valid;
+
+            float  dem;
+
+            /// QTreeWidgetItem
+            QPointer<QObject> editItem;
+
+            QColor color;
+        };
+
+
+        struct wpt_t
+        {
+            wpt_t() : wpt(0), d(1e25f), x(0), y(0) {}
+            CQlgtWpt * wpt;
+            double d;
+            double x;
+            double y;
+            pt_t trkpt;
+        };
+
+        CQlgtTrack& operator<<(const pt_t& pt);
+
+        /// a track URL
+        QString url;
+        /// the track line color
+        QColor  color;
+
+        QPixmap bullet;
+        /// the track line color by index
+        unsigned colorIdx;
+        /// the track points
+        QList<pt_t> track;
+
+        /// set true to draw track highlighted
+        bool highlight;
+
+        /// total time covered by all track points
+        double totalTime;
+        /// total time moving
+        double totalTimeMoving;
+        /// total distance of track [m]
+        double  totalDistance;
+
+        /// total ascend in [m]
+        double totalAscend;
+        /// total descend in [m]
+        double totalDescend;
+
+        /// the Qt polyline for faster processing
+        QPolygon polyline;
+        /// the color attached to each point in polyline (only used in multicolor mode)
+        QVector<QColor> polylineColor;
+
+        float avgspeed0;
+        float avgspeed1;
+
+        pt_t ptMaxEle;
+        pt_t ptMinEle;
+        pt_t ptMaxSpeed;
+        pt_t ptMinSpeed;
+
+        bool traineeData;
+        bool ext1Data;
+        bool firstTime;
+        bool m_hide;
+
+        quint32 doScaleWpt2Track;
+
+
+        quint32 visiblePointCount;
+
+        quint32 cntMedianFilterApplied;
+
+        QList<wpt_t> waypoints;
+
+        bool replaceOrigData;
+
+        enum state_select_e {eNoSel, e1stSel, e2ndSel};
+        state_select_e stateSelect;
+
+        QString timezone;
+
+        enum multi_color_item_e
+        {
+            eMultiColorNone
+            , eMultiColorSlope
+            , eMultiColorEle
+            , eMultiColorSpeed
+            , eMultiColorMax
+        };
+
+        quint32 useMultiColor;
+        qint32  idMultiColor;
+
+        bool hasExt1Data() const { return ext1Data;}
+        void setExt1Data() { ext1Data = true;}
+
+        bool hasShadow1;
+        bool hasShadow2;
+
+};
+
+QDataStream& operator >>(QDataStream& s, CQlgtTrack& trk);
+QDataStream& operator <<(QDataStream& s, CQlgtTrack& trk);
+
+
+#endif //CQLGTTRACK_H
+
diff --git a/src/qlgt/CQlgtWpt.cpp b/src/qlgt/CQlgtWpt.cpp
new file mode 100644
index 0000000..42cdb34
--- /dev/null
+++ b/src/qlgt/CQlgtWpt.cpp
@@ -0,0 +1,374 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CQlgtWpt.h"
+#include "gis/WptIcons.h"
+
+struct wpt_head_entry_t
+{
+    wpt_head_entry_t() : type(CQlgtWpt::eEnd), offset(0) {}
+    qint32      type;
+    quint32     offset;
+    QByteArray  data;
+};
+
+
+QDataStream& operator >>(QDataStream& s, CQlgtWpt& wpt)
+{
+    QIODevice * dev = s.device();
+    qint64      pos = dev->pos();
+
+    char magic[9];
+    s.readRawData(magic,9);
+
+    if(strncmp(magic,"QLWpt   ",9))
+    {
+        dev->seek(pos);
+        //         throw(QObject::tr("This is not waypoint data."));
+        return s;
+    }
+
+    QList<wpt_head_entry_t> entries;
+
+    while(1)
+    {
+        wpt_head_entry_t entry;
+        s >> entry.type >> entry.offset;
+        entries << entry;
+        if(entry.type == CQlgtWpt::eEnd) break;
+    }
+
+    QList<wpt_head_entry_t>::iterator entry = entries.begin();
+    while(entry != entries.end())
+    {
+        qint64 o = pos + entry->offset;
+        dev->seek(o);
+        s >> entry->data;
+
+        switch(entry->type)
+        {
+            case CQlgtWpt::eBase:
+            {
+                QString icon;
+                QString key;
+
+                QDataStream s1(&entry->data, QIODevice::ReadOnly);
+                s1.setVersion(QDataStream::Qt_4_5);
+
+                s1 >> wpt.key;
+                s1 >> wpt.sticky;
+                s1 >> wpt.timestamp;
+                s1 >> icon;
+                s1 >> wpt.name;
+                s1 >> wpt.comment;
+                s1 >> wpt.lat;
+                s1 >> wpt.lon;
+                s1 >> wpt.ele;
+                s1 >> wpt.prx;
+                s1 >> wpt.link;
+                s1 >> wpt.description;
+                s1 >> wpt.urlname;
+                s1 >> wpt.type;
+                s1 >> wpt.parentWpt;
+                s1 >> wpt.selected;
+
+                if(!s1.atEnd())
+                {
+                    s1 >> wpt.dir;
+                }
+                else
+                {
+                    wpt.dir = WPT_NOFLOAT;
+                }
+
+                wpt.setIcon(icon);
+                break;
+            }
+
+            case CQlgtWpt::eImage:
+            {
+                QDataStream s1(&entry->data, QIODevice::ReadOnly);
+                s1.setVersion(QDataStream::Qt_4_5);
+                CQlgtWpt::image_t img;
+
+                wpt.images.clear();
+
+                s1 >> img.offset;
+                while(img.offset)
+                {
+                    wpt.images << img;
+                    s1 >> img.offset;
+                }
+
+                QList<CQlgtWpt::image_t>::iterator image = wpt.images.begin();
+                while(image != wpt.images.end())
+                {
+                    s1.device()->seek(image->offset);
+                    s1 >> image->filePath;
+                    s1 >> image->info;
+                    s1 >> image->pixmap;
+                    ++image;
+                }
+                break;
+            }
+
+            case CQlgtWpt::eGeoCache:
+            {
+                quint32 N, n;
+                QDataStream s1(&entry->data, QIODevice::ReadOnly);
+                s1.setVersion(QDataStream::Qt_4_5);
+                wpt.geocache = CQlgtWpt::geocache_t();
+                CQlgtWpt::geocache_t& cache = wpt.geocache;
+
+                s1 >> (quint8&)cache.service;
+                s1 >> cache.hasData;
+                s1 >> cache.id;
+                s1 >> cache.available;
+                s1 >> cache.archived;
+                s1 >> cache.difficulty;
+                s1 >> cache.terrain;
+                s1 >> cache.status;
+                s1 >> cache.name;
+                s1 >> cache.owner;
+                s1 >> cache.ownerId;
+                s1 >> cache.type;
+                s1 >> cache.container;
+                s1 >> cache.shortDesc;
+                s1 >> cache.longDesc;
+                s1 >> cache.hint;
+                s1 >> cache.country;
+                s1 >> cache.state;
+                s1 >> cache.locale;
+
+                s1 >> N;
+
+                for(n = 0; n < N; n++)
+                {
+                    CQlgtWpt::geocachelog_t log;
+
+                    s1 >> log.id;
+                    s1 >> log.date;
+                    s1 >> log.type;
+                    s1 >> log.finderId;
+                    s1 >> log.finder;
+                    s1 >> log.text;
+
+                    cache.logs << log;
+                }
+
+                s1 >> cache.exportBuddies;
+
+                cache.hasData = true;
+
+                break;
+            }
+
+            default:;
+        }
+
+        ++entry;
+    }
+
+    return s;
+}
+
+QDataStream& operator <<(QDataStream& s, CQlgtWpt& wpt)
+{
+    QList<wpt_head_entry_t> entries;
+
+    //---------------------------------------
+    // prepare base data
+    //---------------------------------------
+    wpt_head_entry_t entryBase;
+    entryBase.type = CQlgtWpt::eBase;
+    QDataStream s1(&entryBase.data, QIODevice::WriteOnly);
+    s1.setVersion(QDataStream::Qt_4_5);
+
+    s1 << wpt.key;
+    s1 << wpt.sticky;
+    s1 << wpt.timestamp;
+    s1 << wpt.iconString;
+    s1 << wpt.name;
+    s1 << wpt.comment;
+    s1 << wpt.lat;
+    s1 << wpt.lon;
+    s1 << wpt.ele;
+    s1 << wpt.prx;
+    s1 << wpt.link;
+    s1 << wpt.description;
+    s1 << wpt.urlname;
+    s1 << wpt.type;
+    s1 << QString("");
+    s1 << wpt.selected;
+    s1 << wpt.dir;
+
+    entries << entryBase;
+
+    //---------------------------------------
+    // prepare image data
+    //---------------------------------------
+    wpt_head_entry_t entryImage;
+    entryImage.type = CQlgtWpt::eImage;
+    QDataStream s2(&entryImage.data, QIODevice::WriteOnly);
+    s2.setVersion(QDataStream::Qt_4_5);
+
+    // write place holder for image offset
+    QList<CQlgtWpt::image_t>::iterator image = wpt.images.begin();
+    while(image != wpt.images.end())
+    {
+        s2 << (quint32)0;
+        ++image;
+    }
+    // offset terminator
+    s2 << (quint32)0;
+
+    // write image data and store the actual offset
+    image = wpt.images.begin();
+    while(image != wpt.images.end())
+    {
+        image->offset = (quint32)s2.device()->pos();
+        s2 << image->filePath;
+        s2 << image->info;
+        s2 << image->pixmap;
+        ++image;
+    }
+
+    // finally write image offset table
+    (quint32)s2.device()->seek(0);
+    image = wpt.images.begin();
+    while(image != wpt.images.end())
+    {
+        s2 << image->offset;
+        ++image;
+    }
+
+    entries << entryImage;
+
+    //---------------------------------------
+    // prepare geocache data
+    //---------------------------------------
+    if(wpt.geocache.hasData)
+    {
+
+        wpt_head_entry_t entryGeoCache;
+        entryGeoCache.type = CQlgtWpt::eGeoCache;
+        QDataStream s3(&entryGeoCache.data, QIODevice::WriteOnly);
+        s3.setVersion(QDataStream::Qt_4_5);
+
+        CQlgtWpt::geocache_t& cache = wpt.geocache;
+
+        s3 << (quint8)cache.service;
+        s3 << cache.hasData;
+        s3 << cache.id;
+        s3 << cache.available;
+        s3 << cache.archived;
+        s3 << cache.difficulty;
+        s3 << cache.terrain;
+        s3 << cache.status;
+        s3 << cache.name;
+        s3 << cache.owner;
+        s3 << cache.ownerId;
+        s3 << cache.type;
+        s3 << cache.container;
+        s3 << cache.shortDesc;
+        s3 << cache.longDesc;
+        s3 << cache.hint;
+        s3 << cache.country;
+        s3 << cache.state;
+        s3 << cache.locale;
+
+        s3 << cache.logs.count();
+
+        foreach(const CQlgtWpt::geocachelog_t& log, cache.logs)
+        {
+            s3 << log.id;
+            s3 << log.date;
+            s3 << log.type;
+            s3 << log.finderId;
+            s3 << log.finder;
+            s3 << log.text;
+        }
+
+        s3 << cache.exportBuddies;
+
+        entries << entryGeoCache;
+    }
+    //---------------------------------------
+    // prepare terminator
+    //---------------------------------------
+    wpt_head_entry_t entryEnd;
+    entryEnd.type = CQlgtWpt::eEnd;
+    entries << entryEnd;
+
+    //---------------------------------------
+    //---------------------------------------
+    // now start to actually write data;
+    //---------------------------------------
+    //---------------------------------------
+    // write magic key
+    s.writeRawData("QLWpt   ",9);
+
+    // calculate offset table
+    quint32 offset = entries.count() * 8 + 9;
+
+    QList<wpt_head_entry_t>::iterator entry = entries.begin();
+    while(entry != entries.end())
+    {
+        entry->offset = offset;
+        offset += entry->data.size() + sizeof(quint32);
+        ++entry;
+    }
+
+    // write offset table
+    entry = entries.begin();
+    while(entry != entries.end())
+    {
+        s << entry->type << entry->offset;
+        ++entry;
+    }
+
+    // write entry data
+    entry = entries.begin();
+    while(entry != entries.end())
+    {
+        s << entry->data;
+        ++entry;
+    }
+
+    return s;
+}
+
+
+CQlgtWpt::CQlgtWpt(quint64 id, QObject *parent)
+    : QObject(parent)
+    , IItem(id)
+{
+
+}
+
+CQlgtWpt::~CQlgtWpt()
+{
+
+}
+
+void CQlgtWpt::setIcon(const QString& str)
+{
+    QPointF focus;
+    iconString = str;
+    iconPixmap = getWptIconByName(str, focus);
+}
diff --git a/src/qlgt/CQlgtWpt.h b/src/qlgt/CQlgtWpt.h
new file mode 100644
index 0000000..b3928b0
--- /dev/null
+++ b/src/qlgt/CQlgtWpt.h
@@ -0,0 +1,114 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CQLGTWPT_H
+#define CQLGTWPT_H
+
+#include "qlgt/IItem.h"
+
+class CQlgtWpt : public QObject, public IItem
+{
+    public:
+        CQlgtWpt(quint64 id, QObject * parent);
+        virtual ~CQlgtWpt();
+
+        void setIcon(const QString& str);
+
+        enum geocacheservice_e {eGC, eOC, eTC};
+        enum type_e {eEnd,eBase,eImage,eGeoCache};
+
+        struct geocachelog_t
+        {
+            geocachelog_t() : id(0){}
+            quint32 id;
+            QString date;
+            QString type;
+            QString finderId;
+            QString finder;
+            QString text;
+        };
+
+        struct geocache_t
+        {
+            geocache_t() : service(eOC), hasData(false), id(0), available(true), archived(false), difficulty(0), terrain(0), exportBuddies(false){}
+            geocacheservice_e service;
+            bool hasData;
+            quint32 id;
+            bool available;
+            bool archived;
+            float difficulty;
+            float terrain;
+            QString status;
+            QString name;
+            QString owner;
+            QString ownerId;
+            QString type;
+            QString container;
+            QString shortDesc;
+            QString longDesc;
+            QString hint;
+            QString country;
+            QString state;
+            QString locale;
+            QList<geocachelog_t> logs;
+            bool exportBuddies;
+
+        };
+
+
+        geocache_t geocache;
+
+        quint32 selected;
+        quint32 sticky;
+        float   lat;             ///< [deg]
+        float   lon;             ///< [deg]
+        float   ele;             ///< [m]
+        float   prx;             ///< [m]
+        float   dir;             ///< [deg]
+        QString link;
+        QString urlname;
+        QString type;
+
+        struct image_t
+        {
+            quint32 offset;
+            QString info;
+            QPixmap pixmap;
+            QString filePath;
+            QString fileName;
+        };
+        QList<image_t> images;
+
+        struct buddy_t
+        {
+            QString name;
+            QSet<QString> pos;
+            float lon;
+            float lat;
+        };
+
+        QList<buddy_t> buddies;
+
+};
+
+QDataStream& operator >>(QDataStream& s, CQlgtWpt& wpt);
+QDataStream& operator <<(QDataStream& s, CQlgtWpt& wpt);
+
+
+#endif //CQLGTWPT_H
+
diff --git a/src/qlgt/CQmsDb.cpp b/src/qlgt/CQmsDb.cpp
new file mode 100644
index 0000000..cf1b56b
--- /dev/null
+++ b/src/qlgt/CQmsDb.cpp
@@ -0,0 +1,263 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/db/macros.h"
+#include "gis/db/IDBFolder.h"
+#include "qlgt/CQlgtDb.h"
+#include "qlgt/CQmsDb.h"
+#include "qlgt/CImportDatabase.h"
+#include "qlgt/CQlgtFolder.h"
+#include "qlgt/CQlgtWpt.h"
+#include "qlgt/CQlgtTrack.h"
+#include "qlgt/CQlgtRoute.h"
+#include "qlgt/IQlgtOverlay.h"
+#include "gis/db/CDBProject.h"
+#include "gis/wpt/CGisItemWpt.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/ovl/CGisItemOvlArea.h"
+
+#include <QtSql>
+#include <QtWidgets>
+
+CQmsDb::CQmsDb(const QString &filename, CImportDatabase *parent)
+    : QObject(parent)
+    , valid(false)
+    , gui(parent)
+
+{
+    if(QFile::exists(filename))
+    {
+        int res = QMessageBox::question(0, tr("Existing file..."), tr("Remove existing %1?").arg(filename), QMessageBox::Ok|QMessageBox::Abort, QMessageBox::Ok);
+        if(res != QMessageBox::Ok)
+        {
+            return;
+        }
+        gui->stdErr(tr("Remove existing file %1").arg(filename));
+        QFile::remove(filename);
+    }
+    valid = setupDB(filename, "qlgt2qms");
+    if(!valid)
+    {
+        return;
+    }
+
+    mapFolderTypes[CQlgtDb::eFolder1] = IDBFolder::eTypeGroup;
+    mapFolderTypes[CQlgtDb::eFolder2] = IDBFolder::eTypeProject;
+    mapFolderTypes[CQlgtDb::eFolderN] = IDBFolder::eTypeOther;
+
+    mapFolderIDs[1] = 1;
+    mapFolderIDs[0] = 1;
+}
+
+CQmsDb::~CQmsDb()
+{
+
+}
+
+
+void CQmsDb::addFolder2FolderRelation(quint64 parent, quint64 child)
+{
+    QSqlQuery query(db);
+    query.prepare("INSERT INTO folder2folder (parent, child) VALUES (:parent, :child)");
+    query.bindValue(":parent", mapFolderIDs[parent]);
+    query.bindValue(":child", mapFolderIDs[child]);
+    QUERY_EXEC(return);
+}
+
+void CQmsDb::addFolder2ItemRelation(quint64 parent, quint64 child)
+{
+    QSqlQuery query(db);
+    query.prepare("INSERT INTO folder2item (parent, child) VALUES (:parent, :child)");
+    query.bindValue(":parent", mapFolderIDs[parent]);
+    query.bindValue(":child", mapItemIDs[child]);
+    QUERY_EXEC(return);
+}
+
+
+void CQmsDb::addFolder(CQlgtFolder& folder)
+{
+    if(folder.id < 2)
+    {
+        return;
+    }
+
+    QSqlQuery query(db);
+
+    // folders without child items
+    if(folder.items.isEmpty())
+    {
+
+        query.prepare("INSERT INTO folders (type, name, locked) VALUES (:type, :name, :locked)");
+        query.bindValue(":type", mapFolderTypes[folder.type]);
+        query.bindValue(":name", folder.name);
+        query.bindValue(":locked", folder.locked);
+        QUERY_EXEC(return);
+
+        query.prepare("SELECT last_insert_rowid() from folders");
+        QUERY_EXEC(return);
+        query.next();
+        quint64 id = query.value(0).toULongLong();
+        if(id == 0)
+        {
+            qDebug() << "CGisListDB::slotAddFolder(): childId equals 0. bad.";
+            return;
+        }
+        mapFolderIDs[folder.id] = id;
+        return;
+    }
+
+    /*
+        Folders with child items will be loaded as complete CDBProject first, to
+        generate key and info text properly
+    */
+    CDBProject project(folder);
+    foreach(quint64 id, folder.items)
+    {
+        quint64 idChild = mapItemIDs[id];
+        query.prepare("SELECT type FROM items WHERE id=:id");
+        query.bindValue(":id", idChild);
+        QUERY_EXEC(continue);
+        if(query.next())
+        {
+            int type = query.value(0).toInt();
+            switch(type)
+            {
+                case IGisItem::eTypeWpt:
+                    new CGisItemWpt(idChild, db, &project);
+                    break;
+                case IGisItem::eTypeTrk:
+                    new CGisItemTrk(idChild, db, &project);
+                    break;
+                case IGisItem::eTypeRte:
+                    new CGisItemRte(idChild, db, &project);
+                    break;
+                case IGisItem::eTypeOvl:
+                    new CGisItemOvlArea(idChild, db, &project);
+                    break;
+                default:;
+            }
+        }
+        else
+        {
+            gui->stdErr(tr("%1: drop item with QLGT DB ID %2").arg(folder.name).arg(id));
+        }
+    }
+
+    // serialize metadata of project
+    QByteArray data;
+    QDataStream in(&data, QIODevice::WriteOnly);
+    in.setByteOrder(QDataStream::LittleEndian);
+    in.setVersion(QDataStream::Qt_5_2);
+    project >> in;
+
+    query.prepare("INSERT INTO folders (type, key, name, comment, locked, data) VALUES (:type, :key, :name, :comment, :locked, :data)");
+    query.bindValue(":type",    mapFolderTypes[folder.type]);
+    query.bindValue(":key",     project.getKey());
+    query.bindValue(":name",    project.getName());
+    query.bindValue(":comment", project.getInfo());
+    query.bindValue(":locked",  folder.locked);
+    query.bindValue(":data",    data);
+    QUERY_EXEC(return);
+
+    query.prepare("SELECT last_insert_rowid() from folders");
+    QUERY_EXEC(return);
+    query.next();
+    quint64 id = query.value(0).toULongLong();
+    if(id == 0)
+    {
+        qDebug() << "CGisListDB::slotAddFolder(): childId equals 0. bad.";
+        return;
+    }
+    mapFolderIDs[folder.id] = id;
+}
+
+void CQmsDb::addWpt(CQlgtWpt& wpt1)
+{
+    CGisItemWpt wpt(wpt1);
+    quint64 id = store(wpt);
+    if(id != 0)
+    {
+        mapItemIDs[wpt1.id] = id;
+    }
+}
+
+void CQmsDb::addTrk(CQlgtTrack &trk1)
+{
+    CGisItemTrk trk(trk1);
+    quint64 id = store(trk);
+    if(id != 0)
+    {
+        mapItemIDs[trk1.id] = id;
+    }
+}
+
+void CQmsDb::addRte(CQlgtRoute& rte1)
+{
+    CGisItemRte rte(rte1);
+    quint64 id = store(rte);
+    if(id != 0)
+    {
+        mapItemIDs[rte1.id] = id;
+    }
+}
+
+void CQmsDb::addArea(IQlgtOverlay& ovl1)
+{
+    CGisItemOvlArea ovl(ovl1);
+    quint64 id = store(ovl);
+    if(id != 0)
+    {
+        mapItemIDs[ovl1.id] = id;
+    }
+}
+
+quint64 CQmsDb::store(IGisItem& item)
+{
+    // serialize complete history of item
+    QByteArray data;
+    QDataStream in(&data, QIODevice::WriteOnly);
+    in.setByteOrder(QDataStream::LittleEndian);
+    in.setVersion(QDataStream::Qt_5_2);
+    in << item.getHistory();
+
+    QBuffer buffer;
+    buffer.open(QIODevice::ReadWrite);
+    QPixmap pixmap = item.getIcon();
+    pixmap.save(&buffer, "PNG");
+    buffer.seek(0);
+
+    QSqlQuery query(db);
+    // item is unknown to database -> create item in database
+    query.prepare("INSERT INTO items (type, key, icon, name, comment, data) VALUES (:type, :key, :icon, :name, :comment, :data)");
+    query.bindValue(":type",    item.type());
+    query.bindValue(":key",     item.getKey().item);
+    query.bindValue(":icon",    buffer.data());
+    query.bindValue(":name",    item.getName());
+    query.bindValue(":comment", item.getInfo());
+    query.bindValue(":data", data);
+    QUERY_EXEC(return 0);
+
+    query.prepare("SELECT last_insert_rowid() from items");
+    QUERY_EXEC(return 0);
+    query.next();
+    quint64 idItem = query.value(0).toULongLong();
+
+    return idItem;
+
+}
diff --git a/src/qlgt/CQmsDb.h b/src/qlgt/CQmsDb.h
new file mode 100644
index 0000000..8c13404
--- /dev/null
+++ b/src/qlgt/CQmsDb.h
@@ -0,0 +1,64 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CQMSDB_H
+#define CQMSDB_H
+
+#include <QObject>
+#include <QMap>
+#include "gis/db/IDB.h"
+
+class CImportDatabase;
+class IGisItem;
+class CQlgtFolder;
+class CQlgtWpt;
+class CQlgtTrack;
+class CQlgtRoute;
+class IQlgtOverlay;
+
+class CQmsDb : public QObject, private IDB
+{
+    public:
+        CQmsDb(const QString& filename, CImportDatabase * parent);
+        virtual ~CQmsDb();
+
+        void addFolder2FolderRelation(quint64 parent, quint64 child);
+        void addFolder2ItemRelation(quint64 parent, quint64 child);
+
+        void addFolder(CQlgtFolder &folder);
+        void addWpt(CQlgtWpt &wpt1);
+        void addTrk(CQlgtTrack &trk1);
+        void addRte(CQlgtRoute& rte1);
+        void addArea(IQlgtOverlay& ovl1);
+
+        bool isValid(){return valid;}
+    private:
+        bool valid;
+
+        quint64 store(IGisItem &item);
+
+        CImportDatabase * gui;
+
+        QMap<int, int> mapFolderTypes;
+
+        QMap<quint64, quint64> mapFolderIDs;
+        QMap<quint64, quint64> mapItemIDs;
+};
+
+#endif //CQMSDB_H
+
diff --git a/src/qlgt/IImportDatabase.ui b/src/qlgt/IImportDatabase.ui
new file mode 100644
index 0000000..8e1e5c9
--- /dev/null
+++ b/src/qlgt/IImportDatabase.ui
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>IImportDatabase</class>
+ <widget class="QWidget" name="IImportDatabase">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QLabel" name="label">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text">
+        <string>Source Database:</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLabel" name="labelSource">
+       <property name="text">
+        <string>-</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="toolSelectSource">
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset resource="../resources.qrc">
+         <normaloff>:/icons/32x32/PathBlue.png</normaloff>:/icons/32x32/PathBlue.png</iconset>
+       </property>
+       <property name="iconSize">
+        <size>
+         <width>22</width>
+         <height>22</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout_2">
+     <item>
+      <widget class="QLabel" name="label_3">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text">
+        <string>Target Database:</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLabel" name="labelTarget">
+       <property name="text">
+        <string>-</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="toolSelectTarget">
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset resource="../resources.qrc">
+         <normaloff>:/icons/32x32/PathBlue.png</normaloff>:/icons/32x32/PathBlue.png</iconset>
+       </property>
+       <property name="iconSize">
+        <size>
+         <width>22</width>
+         <height>22</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QPushButton" name="pushStart">
+     <property name="text">
+      <string>Start</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QTextBrowser" name="textBrowser"/>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="../resources.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/src/gis/db/CDBItem.cpp b/src/qlgt/IItem.cpp
similarity index 92%
copy from src/gis/db/CDBItem.cpp
copy to src/qlgt/IItem.cpp
index f62cd91..ef137df 100644
--- a/src/gis/db/CDBItem.cpp
+++ b/src/qlgt/IItem.cpp
@@ -16,14 +16,15 @@
 
 **********************************************************************************************/
 
-#include "gis/db/CDBItem.h"
+#include "IItem.h"
 
-CDBItem::CDBItem()
+IItem::IItem(quint64 id)
+    : id(id)
 {
 
 }
 
-CDBItem::~CDBItem()
+IItem::~IItem()
 {
 
 }
diff --git a/src/gis/db/CSetupDB.h b/src/qlgt/IItem.h
similarity index 67%
rename from src/gis/db/CSetupDB.h
rename to src/qlgt/IItem.h
index 976eacc..5c4735a 100644
--- a/src/gis/db/CSetupDB.h
+++ b/src/qlgt/IItem.h
@@ -16,27 +16,36 @@
 
 **********************************************************************************************/
 
-#ifndef CSETUPDB_H
-#define CSETUPDB_H
+#ifndef IITEM_H
+#define IITEM_H
 
-#include <QDialog>
-#include "ui_ISetupDB.h"
+#include <QtCore>
+#include <QtGui>
 
+#define WPT_NOFLOAT 1e25f
 
-class CSetupDB : public QDialog, private Ui::ISetupDB
+class IItem
 {
-    Q_OBJECT
     public:
-        CSetupDB(QWidget * parent);
-        virtual ~CSetupDB();
+        IItem(quint64  id);
+        virtual ~IItem();
 
-    public slots:
-        void accept();
+        QString getInfo(){return "no info";}
 
+        quint32 timestamp;
 
-    private slots:
-        void slotSetupPath();
+        QString name;
+        QString comment;
+        QString description;
+        QPixmap iconPixmap;
+        QString iconString;
+
+        QString parentWpt;
+
+        QString key;
+
+        quint64 id;
 };
 
-#endif //CSETUPDB_H
+#endif //IITEM_H
 
diff --git a/src/qlgt/IQlgtOverlay.cpp b/src/qlgt/IQlgtOverlay.cpp
new file mode 100644
index 0000000..9a879ea
--- /dev/null
+++ b/src/qlgt/IQlgtOverlay.cpp
@@ -0,0 +1,195 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "IQlgtOverlay.h"
+
+struct ovl_head_entry_t
+{
+    ovl_head_entry_t() : type(IQlgtOverlay::eEnd), offset(0) {}
+    qint32      type;
+    quint32     offset;
+    QByteArray  data;
+};
+
+
+QDataStream& operator >>(QDataStream& s, IQlgtOverlay& ovl)
+{
+    QIODevice * dev = s.device();
+    qint64      pos = dev->pos();
+
+    char magic[9];
+    s.readRawData(magic,9);
+
+    if(strncmp(magic,"QLOvl   ",9))
+    {
+        dev->seek(pos);
+        return s;
+    }
+
+    QList<ovl_head_entry_t> entries;
+
+    while(1)
+    {
+        ovl_head_entry_t entry;
+        s >> entry.type >> entry.offset;
+        entries << entry;
+        if(entry.type == IQlgtOverlay::eEnd) break;
+    }
+
+    QList<ovl_head_entry_t>::iterator entry = entries.begin();
+    while(entry != entries.end())
+    {
+        qint64 o = pos + entry->offset;
+        dev->seek(o);
+        s >> entry->data;
+
+        switch(entry->type)
+        {
+            case IQlgtOverlay::eBase:
+            {
+
+                QDataStream s1(&entry->data, QIODevice::ReadOnly);
+                s1.setVersion(QDataStream::Qt_4_5);
+
+                s1 >> ovl.type;
+                if(ovl.type == "Text")
+                {
+                    QRect rect;
+                    QString text;
+                    s1 >> rect >> text >> ovl.key;
+                }
+                else if(ovl.type == "TextBox")
+                {
+                    QRect rect;
+                    QPoint pt;
+                    QString text;
+                    double lon, lat;
+                    s1 >> lon >> lat >> pt >> rect >> text >> ovl.key;
+                }
+                else if(ovl.type == "Distance")
+                {
+                    float speed;
+                    QString name;
+                    QString comment;
+                    QString parentWpt;
+                    int size, idx = 0;
+                    IQlgtOverlay::pt_t pt;
+                    s1 >> name >> comment >> size;
+                    for(int i = 0; i < size; ++i)
+                    {
+                        s1 >> pt.u >> pt.v;
+                        pt.idx = idx++;
+                    }
+                    s1 >> speed >> ovl.key >> parentWpt;
+                }
+                else if(ovl.type == "Area")
+                {
+                    int size, idx = 0;
+                    IQlgtOverlay::pt_t pt;
+                    s1 >> ovl.name >> ovl.comment >> size;
+                    for(int i = 0; i < size; ++i)
+                    {
+                        s1 >> pt.u >> pt.v;
+                        pt.idx = idx++;
+                        ovl.points << pt;
+                    }
+                    s1 >> ovl.color >> ovl.key >> ovl.parentWpt >> ovl.style >> ovl.width >> ovl.opacity;
+                }
+                break;
+            }
+
+            default:;
+        }
+        ++entry;
+    }
+
+    return s;
+}
+
+QDataStream& operator <<(QDataStream& s, IQlgtOverlay& ovl)
+{
+    QList<ovl_head_entry_t> entries;
+
+    //---------------------------------------
+    // prepare base data
+    //---------------------------------------
+    ovl_head_entry_t entryBase;
+    entryBase.type = IQlgtOverlay::eBase;
+    QDataStream s1(&entryBase.data, QIODevice::WriteOnly);
+    s1.setVersion(QDataStream::Qt_4_5);
+    s1 << ovl.type;
+//    ovl.save(s1);
+    entries << entryBase;
+
+    //---------------------------------------
+    // prepare terminator
+    //---------------------------------------
+    ovl_head_entry_t entryEnd;
+    entryEnd.type = IQlgtOverlay::eEnd;
+    entries << entryEnd;
+
+    //---------------------------------------
+    //---------------------------------------
+    // now start to actually write data;
+    //---------------------------------------
+    //---------------------------------------
+    // write magic key
+    s.writeRawData("QLOvl   ",9);
+
+    // calculate offset table
+    quint32 offset = entries.count() * 8 + 9;
+
+    QList<ovl_head_entry_t>::iterator entry = entries.begin();
+    while(entry != entries.end())
+    {
+        entry->offset = offset;
+        offset += entry->data.size() + sizeof(quint32);
+        ++entry;
+    }
+
+    // write offset table
+    entry = entries.begin();
+    while(entry != entries.end())
+    {
+        s << entry->type << entry->offset;
+        ++entry;
+    }
+
+    // write entry data
+    entry = entries.begin();
+    while(entry != entries.end())
+    {
+        s << entry->data;
+        ++entry;
+    }
+
+    return s;
+}
+
+
+IQlgtOverlay::IQlgtOverlay(quint64 id, QObject *parent)
+    : IItem(id)
+{
+
+}
+
+IQlgtOverlay::~IQlgtOverlay()
+{
+
+}
+
diff --git a/src/gis/rte/CScrOptRte.h b/src/qlgt/IQlgtOverlay.h
similarity index 59%
copy from src/gis/rte/CScrOptRte.h
copy to src/qlgt/IQlgtOverlay.h
index 43c9286..56f3c83 100644
--- a/src/gis/rte/CScrOptRte.h
+++ b/src/qlgt/IQlgtOverlay.h
@@ -16,34 +16,39 @@
 
 **********************************************************************************************/
 
-#ifndef CSCROPTRTE_H
-#define CSCROPTRTE_H
+#ifndef IQLGTOVERLAY_H
+#define IQLGTOVERLAY_H
 
-#include "mouse/IScrOpt.h"
-#include "gis/IGisItem.h"
+#include <QObject>
+#include <proj_api.h>
+#include "qlgt/IItem.h"
 
-#include <QWidget>
-#include "ui_IScrOptRte.h"
-
-class CGisItemRte;
-class IMouse;
-
-class CScrOptRte : public IScrOpt, private Ui::IScrOptRte
+class IQlgtOverlay : public QObject, public IItem
 {
-    Q_OBJECT
     public:
-        CScrOptRte(CGisItemRte * rte, const QPoint &point, IMouse *parent);
-        virtual ~CScrOptRte();
+        IQlgtOverlay(quint64 id, QObject * parent);
+        virtual ~IQlgtOverlay();
+
+        enum type_e {eEnd,eBase};
 
-        void draw(QPainter& p);
+        struct pt_t : public projXY
+        {
+            int idx;
+        };
 
-    private slots:
-        void slotDelete();
 
-    private:
-        IGisItem::key_t key;
-        QPointF anchor;
+        QString type;
+        QColor color;
+        QList<pt_t> points;
+        qint32 style;
+        quint32 width;
+        quint8 opacity;
+
 };
 
-#endif //CSCROPTRTE_H
+QDataStream& operator >>(QDataStream& s, IQlgtOverlay& ovl);
+QDataStream& operator <<(QDataStream& s, IQlgtOverlay& ovl);
+
+
+#endif //IQLGTOVERLAY_H
 
diff --git a/src/qlgt/converter.cpp b/src/qlgt/converter.cpp
new file mode 100644
index 0000000..12f7c6d
--- /dev/null
+++ b/src/qlgt/converter.cpp
@@ -0,0 +1,267 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/WptIcons.h"
+#include "gis/db/CDBProject.h"
+#include "gis/wpt/CGisItemWpt.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/ovl/CGisItemOvlArea.h"
+
+#include "qlgt/CQlgtFolder.h"
+#include "qlgt/CQlgtWpt.h"
+#include "qlgt/CQlgtTrack.h"
+#include "qlgt/CQlgtDiary.h"
+#include "qlgt/CQlgtRoute.h"
+#include "qlgt/IQlgtOverlay.h"
+#include "units/IUnit.h"
+
+inline qreal readFloat(float val)
+{
+    return val > NOFLOAT ? NOFLOAT : val;
+}
+
+CDBProject::CDBProject(CQlgtFolder& folder)
+    : IGisProject(eTypeDb, "", 0)
+{
+    metadata.name = folder.name;
+    if(folder.diary)
+    {
+        metadata.desc = folder.diary->comment;
+    }
+}
+
+CGisItemWpt::CGisItemWpt(const CQlgtWpt& wpt1)
+    : IGisItem(0, eTypeWpt, -1)
+{
+    qreal direction;
+    QDateTime time = QDateTime::fromTime_t(wpt1.timestamp,QTimeZone("UTC"));
+
+    wpt.time        = time.toUTC();
+    wpt.name        = wpt1.name;
+    wpt.cmt         = wpt1.comment;
+    wpt.desc        = wpt1.description;
+    wpt.sym         = wpt1.iconString;
+
+    wpt.lat     = readFloat(wpt1.lat);
+    wpt.lon     = readFloat(wpt1.lon);
+    wpt.ele     = wpt1.ele == WPT_NOFLOAT ? NOINT : qRound(wpt1.ele);
+    proximity   = readFloat(wpt1.prx);
+    direction   = readFloat(wpt1.dir);
+    if(!wpt1.link.isEmpty())
+    {
+        IGisItem::link_t link;
+        link.uri = wpt1.link;
+        wpt.links << link;
+    }
+    if(!wpt1.urlname.isEmpty())
+    {
+        IGisItem::link_t link;
+        link.uri = wpt1.urlname;
+        wpt.links << link;
+    }
+    wpt.type    = wpt1.type;
+
+    if(wpt1.geocache.hasData)
+    {
+
+        geocache.service    = CGisItemWpt::geocacheservice_e(wpt1.geocache.service);
+        geocache.hasData    = wpt1.geocache.hasData;
+        geocache.id         = wpt1.geocache.id;
+        geocache.available  = wpt1.geocache.available;
+        geocache.archived   = wpt1.geocache.archived;
+        geocache.difficulty = wpt1.geocache.difficulty;
+        geocache.terrain    = wpt1.geocache.terrain;
+        geocache.status     = wpt1.geocache.status;
+        geocache.name       = wpt1.geocache.name;
+        geocache.owner      = wpt1.geocache.owner;
+        geocache.ownerId    = wpt1.geocache.ownerId;
+        geocache.type       = wpt1.geocache.type;
+        geocache.container  = wpt1.geocache.container;
+        geocache.shortDescIsHtml = wpt1.geocache.shortDesc.contains("</");
+        geocache.shortDesc  = wpt1.geocache.shortDesc;
+        geocache.longDescIsHtml = wpt1.geocache.longDesc.contains("</");
+        geocache.longDesc   = wpt1.geocache.longDesc;
+        geocache.hint       = wpt1.geocache.hint;
+        geocache.country    = wpt1.geocache.country;
+        geocache.state      = wpt1.geocache.state;
+        geocache.locale     = wpt1.geocache.locale;
+
+        foreach(const CQlgtWpt::geocachelog_t& log1, wpt1.geocache.logs)
+        {
+            CGisItemWpt::geocachelog_t log;
+            log.id          = log1.id;
+            IUnit::parseTimestamp(log1.date, log.date);
+            log.type        = log1.type;;
+            log.finderId    = log1.finderId;;
+            log.finder      = log1.finder;;
+            log.textIsHtml  = log1.text.contains("</");
+            log.text        = log1.text;
+            geocache.logs << log;
+        }
+    }
+
+    foreach(const CQlgtWpt::image_t& image1, wpt1.images)
+    {
+        CGisItemWpt::image_t image;
+
+        image.pixmap        = image1.pixmap.toImage();
+        image.direction     = direction;
+        image.info          = image1.info;
+        image.filePath      = image1.filePath;
+        image.fileName      = image1.fileName;
+
+        images << image;
+    }
+    setIcon();
+    genKey();
+    setupHistory();
+}
+
+
+CGisItemTrk::CGisItemTrk(const CQlgtTrack &trk1)
+    : IGisItem(0, eTypeTrk, -1)
+{
+
+    trk.name        = trk1.name;
+    trk.cmt         = trk1.comment;
+    trk.desc        = trk1.description;
+    trk.color       = lineColors[trk1.colorIdx].name();
+    setColor(lineColors[trk1.colorIdx]);
+
+    bool hasExtData = trk1.hasExt1Data();
+    trkseg_t seg;
+    foreach(const CQlgtTrack::pt_t& pt1, trk1.track)
+    {
+        trkpt_t pt;
+        QDateTime time = QDateTime::fromTime_t(pt1._timestamp,QTimeZone("UTC"));
+        time.addMSecs(pt1._timestamp_msec);
+
+        pt.lon  = pt1._lon;
+        pt.lat  = pt1._lat;
+        pt.ele  = pt1._ele == WPT_NOFLOAT ? NOINT : qRound(pt1._ele);
+        pt.time = time.toUTC();
+
+        if(hasExtData)
+        {
+            pt.hdop = pt1.hdop;
+            pt.vdop = pt1.vdop;
+            pt.pdop = pt1.pdop;
+        }
+
+        seg.pts << pt;
+    }
+
+    trk.segs << seg;
+
+    genKey();
+    setupHistory();
+
+    bool hasHiddenPoints = false;
+    for(int i = 0; i < trk1.track.size(); i++)
+    {
+        trkpt_t&                pt  = trk.segs[0].pts[i];
+        const CQlgtTrack::pt_t& pt1 = trk1.track[i];
+
+        if(pt1.flags & CQlgtTrack::pt_t::eDeleted)
+        {
+            pt.flags |= trkpt_t::eHidden;
+            hasHiddenPoints = true;
+        }
+    }
+
+    deriveSecondaryData();
+
+    if(hasHiddenPoints)
+    {
+        // append history by new entry
+        history.events << history_event_t();
+        history_event_t& event = history.events.last();
+        event.time      = QDateTime::currentDateTimeUtc();
+        event.comment   = QObject::tr("Copy flag information from QLandkarte GT track");
+        event.icon      = "://icons/48x48/PointHide.png";
+
+        QDataStream stream(&event.data, QIODevice::WriteOnly);
+        stream.setByteOrder(QDataStream::LittleEndian);
+        stream.setVersion(QDataStream::Qt_5_2);
+
+        *this >> stream;
+
+        QCryptographicHash md5(QCryptographicHash::Md5);
+        md5.addData(event.data);
+        event.hash = md5.result().toHex();
+
+        history.histIdxCurrent = history.events.size() - 1;
+    }
+}
+
+
+CGisItemOvlArea::CGisItemOvlArea(const IQlgtOverlay& ovl)
+    : IGisItem(0, eTypeOvl, -1)
+{
+    area.name       = ovl.name;
+    area.cmt        = ovl.comment;
+    area.desc       = ovl.description;
+    area.color      = ovl.color.name();
+    area.width      = ovl.width;
+    area.style      = ovl.style;
+    area.opacity    = ovl.opacity != 255;
+
+    foreach(const IQlgtOverlay::pt_t& pt1, ovl.points)
+    {
+        pt_t pt;
+        pt.lon = pt1.u * RAD_TO_DEG;
+        pt.lat = pt1.v * RAD_TO_DEG;
+
+        area.pts << pt;
+    }
+
+    setColor(str2color(area.color));
+    deriveSecondaryData();
+
+    genKey();
+    setupHistory();
+}
+
+
+CGisItemRte::CGisItemRte(const CQlgtRoute& rte1)
+    : IGisItem(0, eTypeRte, -1)
+{
+    rte.name        = rte1.name;
+    rte.cmt         = rte1.comment;
+    rte.desc        = rte1.description;
+
+    QPointF focus;
+    QPixmap icon = getWptIconByName(rte1.iconString, focus);
+
+    foreach (const CQlgtRoute::pt_t& pt1, rte1.priRoute)
+    {
+        rtept_t pt;
+        pt.lon      = pt1.lon;
+        pt.lat      = pt1.lat;
+        pt.icon     = icon;
+        pt.focus    = focus;
+
+        rte.pts << pt;
+    }
+
+    deriveSecondaryData();
+    setSymbol();
+    genKey();
+    setupHistory();
+}
diff --git a/src/resources.qrc b/src/resources.qrc
index d3a9001..0c280ae 100644
--- a/src/resources.qrc
+++ b/src/resources.qrc
@@ -117,11 +117,13 @@
         <file>icons/32x32/Pattern.png</file>
         <file>icons/32x32/Opacity.png</file>
         <file>icons/32x32/DatabaseSetup.png</file>
+        <file>icons/32x32/DatabaseConvert.png</file>
         <file>icons/32x32/PathBlue.png</file>
         <file>icons/32x32/PathOrange.png</file>
         <file>icons/32x32/PathGreen.png</file>
         <file>icons/32x32/Link.png</file>
         <file>icons/32x32/Database.png</file>
+        <file>icons/32x32/Empty.png</file>
 
 
         <file>icons/48x48/2DFix.png</file>
@@ -222,11 +224,13 @@
         <file>icons/48x48/Pattern.png</file>
         <file>icons/48x48/Opacity.png</file>
         <file>icons/48x48/DatabaseSetup.png</file>
+        <file>icons/48x48/DatabaseConvert.png</file>
         <file>icons/48x48/PathBlue.png</file>
         <file>icons/48x48/PathOrange.png</file>
         <file>icons/48x48/PathGreen.png</file>
         <file>icons/48x48/Link.png</file>
         <file>icons/48x48/Database.png</file>
+        <file>icons/48x48/Empty.png</file>
 
 
         <file>icons/cache/32x32/bluepin.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