[qmapshack] 01/05: Imported Upstream version 1.6.3

Bas Couwenberg sebastic at debian.org
Thu Jul 14 12:25:37 UTC 2016


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

sebastic pushed a commit to branch master
in repository qmapshack.

commit cffc9c017ba4797e04a20d18acca8e75b55cec71
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Thu Jul 14 13:26:36 2016 +0200

    Imported Upstream version 1.6.3
---
 .hg_archival.txt                       |   4 -
 .hgsubstate                            |   2 +-
 .hgtags                                |  43 -----
 CMakeLists.txt                         |   2 +-
 CMakeLists.txt.user                    | 263 +++++++++++++++++++++++++++
 changelog.txt                          |   7 +
 src/CMakeLists.txt                     |   5 +
 src/device/CDeviceWatcherLinux.cpp     |  11 +-
 src/device/IDevice.cpp                 |  11 +-
 src/gis/CGisListWks.cpp                |   4 +-
 src/gis/ovl/CDetailsOvlArea.cpp        |   6 +-
 src/gis/prj/CDetailsPrj.cpp            |   9 +-
 src/gis/rte/CDetailsRte.cpp            |   6 +-
 src/gis/trk/CDetailsTrk.cpp            |   6 +-
 src/gis/trk/CGisItemTrk.cpp            |   2 +-
 src/gis/wpt/CDetailsWpt.cpp            |   6 +-
 src/icons/2DFix.svg                    |  83 ---------
 src/icons/32x32/2DFix.png              | Bin 710 -> 0 bytes
 src/icons/32x32/3DFix.png              | Bin 875 -> 0 bytes
 src/icons/32x32/LimitMax.png           | Bin 632 -> 0 bytes
 src/icons/32x32/LimitMin.png           | Bin 686 -> 0 bytes
 src/icons/32x32/NoFix.png              | Bin 633 -> 0 bytes
 src/icons/32x32/PasteNormal.png        | Bin 0 -> 1614 bytes
 src/icons/32x32/PastePlain.png         | Bin 0 -> 904 bytes
 src/icons/3DFix.svg                    |  82 ---------
 src/icons/48x48/2DFix.png              | Bin 1022 -> 0 bytes
 src/icons/48x48/3DFix.png              | Bin 1279 -> 0 bytes
 src/icons/48x48/LimitMax.png           | Bin 928 -> 0 bytes
 src/icons/48x48/LimitMin.png           | Bin 993 -> 0 bytes
 src/icons/48x48/NoFix.png              | Bin 925 -> 0 bytes
 src/icons/48x48/PasteNormal.png        | Bin 0 -> 2633 bytes
 src/icons/48x48/PastePlain.png         | Bin 0 -> 1186 bytes
 src/icons/LimitMax.svg                 | 103 -----------
 src/icons/LimitMin.svg                 | 100 -----------
 src/icons/NoFix.svg                    |  83 ---------
 src/icons/PasteNormal.svg              | 194 ++++++++++++++++++++
 src/icons/PastePlain.svg               | 125 +++++++++++++
 src/icons/findunusedicons              |  10 ++
 src/locale/qmapshack_cs.desktop        |   3 +
 src/locale/qmapshack_cs.ts             | 140 +++++++--------
 src/map/CMapDraw.cpp                   |   9 +-
 src/map/cache/CDiskCache.cpp           |  32 +++-
 src/resources.qrc                      |  14 +-
 src/setup/IAppSetup.cpp                |   2 +-
 src/widgets/CTextEdit.cpp              |  57 ++++++
 src/widgets/CTextEdit.h                |  42 +++++
 src/widgets/CTextEditWidget.cpp        | 315 +++++++++++++++++++++++----------
 src/widgets/CTextEditWidget.h          |  92 ++++------
 src/widgets/CTextEditWidgetSelMenu.cpp |  45 +++++
 src/widgets/CTextEditWidgetSelMenu.h   |  36 ++++
 src/widgets/ITextEditWidget.ui         | 167 +++++++++++++----
 src/widgets/ITextEditWidgetSelMenu.ui  | 144 +++++++++++++++
 52 files changed, 1474 insertions(+), 791 deletions(-)

diff --git a/.hg_archival.txt b/.hg_archival.txt
deleted file mode 100644
index 006d0fc..0000000
--- a/.hg_archival.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-repo: 9d6ee306235c77d65d21797124dfc82760eb94e8
-node: 57b757a9dc6f723ddc144abac5aa28fa8dc8bc63
-branch: default
-tag: V 1.6.2
diff --git a/.hgsubstate b/.hgsubstate
index 3a64800..3b6bae8 100644
--- a/.hgsubstate
+++ b/.hgsubstate
@@ -1 +1 @@
-cb65ea843244179121ad43e6425ff8e2a3df37d8 doc
+aafe914bb3e60e0cbf61df26153f679536dbf66d doc
diff --git a/.hgtags b/.hgtags
deleted file mode 100644
index 882db32..0000000
--- a/.hgtags
+++ /dev/null
@@ -1,43 +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
-ab336ed933234bea7ae829acce0f915af0bf03a7 V 0.8.2
-4e1f334e9dae91a47fd9f49a2a4e8ed2dcc95b1a V 0.9.0
-d33adee08e776175ff1c7657e1163f11b6d059ff V 0.9.1
-8a9ec70bc5fc877d43b75dd31bb79b46de2bc60c V 0.10.0
-8550e6fbf48f54f8435b5d40e020c94d39788512 V 0.11.0
-318e645a391e4123b55772680894a44e610b8dd4 V 0.12.0
-67253be16d82f83d305656f018a590d00195b597 1.0.beta1
-6fb4d49d01a6466611f9a67dd1d4f0f8225ee2ae V 1.0.0
-35f10e8b8ec91cc43aed1b80da9e5d4babcf01d8 V 1.0.1
-f0d7b8daaad87c31dadb595655973195f0806f10 V 1.1.0
-a1e241d27fc40824902a0a9e9b0d04879074526b V 1.2.0
-793787451aca45e1e653de2877373fb90696f0cd V 1.2.1
-3d8c8c87096d3281d7c030f4fa0cb1ebf86b197c V 1.2.2
-4ac5f1de9fd99feb74ca3a2b614a53c908287d8e V 1.3.0
-228db55703a455aebdcc5fb09c6338bde9178ace V 1.3.1
-228db55703a455aebdcc5fb09c6338bde9178ace V 1.3.1
-0000000000000000000000000000000000000000 V 1.3.1
-0000000000000000000000000000000000000000 V 1.3.1
-c512c34dc24209219fd5788048a9f0c770436685 V 1.3.1
-cf9ff8fe4efbfec3ea022086b45176af045c174b V 1.4.0
-78d7dbc30ba46ced8cfdcdde0222b6959f24eaed V 1.5.0
-291d4b0a0412cab850cdad65b18db5bc92802605 V 1.5.1
-11a4c7af09d95176170970cd42106d28ec4decae V 1.6.0
-51b1b3e463277ed59ce4b576f295611d2e4329a1 V 1.6.1
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a79d6f6..ac0fc3f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,7 +25,7 @@ set(APPLICATION_NAME qmapshack)
 
 set(APPLICATION_VERSION_MAJOR "1")
 set(APPLICATION_VERSION_MINOR "6")
-set(APPLICATION_VERSION_PATCH "2")
+set(APPLICATION_VERSION_PATCH "3")
 
 add_definitions(-DVER_MAJOR=${APPLICATION_VERSION_MAJOR} -DVER_MINOR=${APPLICATION_VERSION_MINOR} -DVER_STEP=${APPLICATION_VERSION_PATCH} -DAPPLICATION_NAME=${PROJECT_NAME})
 
diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user
new file mode 100644
index 0000000..ea4ab98
--- /dev/null
+++ b/CMakeLists.txt.user
@@ -0,0 +1,263 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QtCreatorProject>
+<!-- Written by QtCreator 4.0.0, 2016-07-14T12:57:02. -->
+<qtcreator>
+ <data>
+  <variable>EnvironmentId</variable>
+  <value type="QByteArray">{2664d6c3-cac3-44ef-bde0-590e210eae25}</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.SmartSelectionChanging">true</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">
+   <valuelist type="QVariantList" key="ClangStaticAnalyzer.SuppressedDiagnostics"/>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.Target.0</variable>
+  <valuemap type="QVariantMap">
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{021ef025-5564-47de-9a05-7e6d336dd5ab}</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">0</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+    <valuelist type="QVariantList" key="CMake.Configuration">
+     <value type="QString">CMAKE_BUILD_TYPE:STRING=Debug</value>
+     <value type="QString">CMAKE_CXX_COMPILER:STRING=%{Compiler:Executable}</value>
+     <value type="QString">CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc</value>
+     <value type="QString">CMAKE_INSTALL_PREFIX:PATH=/usr/</value>
+     <value type="QString">QT_QMAKE_EXECUTABLE:STRING=%{Qt:qmakeExecutable}</value>
+     <value type="QString">UPDATE_TRANSLATIONS:BOOL=OFF</value>
+    </valuelist>
+    <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="QString">all</value>
+      </valuelist>
+      <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"></value>
+      <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
+       <value type="QString">clean</value>
+      </valuelist>
+      <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">
+    <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
+    <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
+    <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">0</value>
+    <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
+    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
+    <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">/home/oeichler/Code/cpp/build_QMapShack/</value>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory.default">/home/oeichler/Code/cpp/build_QMapShack/bin</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.1">
+    <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
+    <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
+    <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">0</value>
+    <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
+    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
+    <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">qttest</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="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory.default">/home/oeichler/Code/cpp/build_QMapShack/bin</value>
+    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qttest</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.qttest</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/changelog.txt b/changelog.txt
index 2a45f1d..314bc69 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,10 @@
+V 1.6.3
+* Add FreeBSD support
+* Enhance editor for descriptions and comments.
+* [Issue #147] Fix bug preventing list formats to be removed
+* [Issue #148] Text editor: format of pasted text
+* [Issue #149] Properly initialize cachePath for systems without QMS configuration (new installations)
+ 
 V 1.6.2
 * Add support kFreeBSD ports, treat like Linux.
 * Add support for GNU/Hurd, treat like Linux.
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 225f803..dd7590d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -59,7 +59,9 @@ set( SRCS
         widgets/CTinySpinBox.cpp
         widgets/CDoubleSpinBox.cpp
         widgets/CFadingIcon.cpp
+        widgets/CTextEdit.cpp
         widgets/CTextEditWidget.cpp
+        widgets/CTextEditWidgetSelMenu.cpp
         widgets/CLineEdit.cpp
         widgets/CHistoryListWidget.cpp
         widgets/CPhotoAlbum.cpp
@@ -318,7 +320,9 @@ set( HDRS
         widgets/CDoubleSpinBox.h
         widgets/CFadingIcon.h
         widgets/CHistoryListWidget.h
+        widgets/CTextEdit.h
         widgets/CTextEditWidget.h
+        widgets/CTextEditWidgetSelMenu.h
         widgets/CLineEdit.h
         widgets/CPhotoAlbum.h
         widgets/CColorLegend.h
@@ -574,6 +578,7 @@ set( UIS
     IMainWindow.ui
     IAbout.ui
     widgets/ITextEditWidget.ui
+    widgets/ITextEditWidgetSelMenu.ui
     widgets/IPhotoAlbum.ui
     widgets/IColorChooser.ui
     helpers/IInputDialog.ui
diff --git a/src/device/CDeviceWatcherLinux.cpp b/src/device/CDeviceWatcherLinux.cpp
index bf02fe1..86f794e 100644
--- a/src/device/CDeviceWatcherLinux.cpp
+++ b/src/device/CDeviceWatcherLinux.cpp
@@ -67,13 +67,15 @@ void CDeviceWatcherLinux::slotDeviceAdded(const QDBusObjectPath& path, const QVa
     delete blockIface;
     delete driveIface;
 
+#if !defined(Q_OS_FREEBSD)
+// currently bsdisks does not report model or vendor
     qDebug() << "model:" << model << "vendor:" << vendor;
 
     if(model.isEmpty() || vendor.isEmpty())
     {
         return;
     }
-
+#endif
 
     QString strPath = path.path();
 
@@ -167,6 +169,12 @@ QString CDeviceWatcherLinux::readMountPoint(const QString& path)
 
     QDBusMessage reply = QDBusConnection::systemBus().call(message);
 
+#if defined(Q_OS_FREEBSD)
+    for(const QVariant &arg : reply.arguments())
+    {
+        points.append(arg.value<QDBusVariant>().variant().value<QStringList>().first());
+    }
+#else
     QList<QByteArray> list;
     for(const QVariant &arg : reply.arguments())
     {
@@ -177,6 +185,7 @@ QString CDeviceWatcherLinux::readMountPoint(const QString& path)
     {
         points.append(point);
     }
+#endif
 
     if(!points.isEmpty())
     {
diff --git a/src/device/IDevice.cpp b/src/device/IDevice.cpp
index 269f4cf..4fa75b3 100644
--- a/src/device/IDevice.cpp
+++ b/src/device/IDevice.cpp
@@ -22,7 +22,7 @@
 #include "gis/prj/IGisProject.h"
 #include "helpers/CSelectCopyAction.h"
 
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
 #include <QtDBus>
 #endif
 
@@ -52,18 +52,23 @@ IDevice::~IDevice()
 
 void IDevice::mount(const QString& path)
 {
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
     QDBusMessage message = QDBusMessage::createMethodCall("org.freedesktop.UDisks2",path,"org.freedesktop.UDisks2.Filesystem","Mount");
     QVariantMap args;
     args.insert("options", "sync");
     message << args;
+#if defined(Q_OS_FREEBSD)
+    // XXX Hunc sint race conditions - call bsdisks (UDisks2) too fast,
+    // get a malformed reply, crash.
+    QThread::sleep(1);
+#endif
     QDBusConnection::systemBus().call(message);
 #endif
 }
 
 void IDevice::umount(const QString &path)
 {
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
     QDBusMessage message = QDBusMessage::createMethodCall("org.freedesktop.UDisks2",path,"org.freedesktop.UDisks2.Filesystem","Unmount");
     QVariantMap args;
     message << args;
diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
index 435af43..ba6c152 100644
--- a/src/gis/CGisListWks.cpp
+++ b/src/gis/CGisListWks.cpp
@@ -18,7 +18,7 @@
 
 #include "CMainWindow.h"
 #include "canvas/CCanvas.h"
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
 #include "device/CDeviceWatcherLinux.h"
 #endif
 #ifdef Q_OS_WIN
@@ -197,7 +197,7 @@ CGisListWks::CGisListWks(QWidget *parent)
         QTimer::singleShot(saveEvery * 60000, this, SLOT(slotSaveWorkspace()));
     }
 
-#ifdef Q_OS_LINUX
+#if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
     deviceWatcher = new CDeviceWatcherLinux(this);
     connect(deviceWatcher, &CDeviceWatcherLinux::sigChanged, this, &CGisListWks::sigChanged);
 #endif
diff --git a/src/gis/ovl/CDetailsOvlArea.cpp b/src/gis/ovl/CDetailsOvlArea.cpp
index 37c431a..e64478f 100644
--- a/src/gis/ovl/CDetailsOvlArea.cpp
+++ b/src/gis/ovl/CDetailsOvlArea.cpp
@@ -152,8 +152,7 @@ void CDetailsOvlArea::slotLinkActivated(const QUrl& url)
 {
     if(url.toString() == "comment")
     {
-        CTextEditWidget dlg(nullptr);
-        dlg.setHtml(area.getComment());
+        CTextEditWidget dlg(area.getComment(), nullptr);
         if(dlg.exec() == QDialog::Accepted)
         {
             area.setComment(dlg.getHtml());
@@ -162,8 +161,7 @@ void CDetailsOvlArea::slotLinkActivated(const QUrl& url)
     }
     else if(url.toString() == "description")
     {
-        CTextEditWidget dlg(nullptr);
-        dlg.setHtml(area.getDescription());
+        CTextEditWidget dlg(area.getDescription(), nullptr);
         if(dlg.exec() == QDialog::Accepted)
         {
             area.setDescription(dlg.getHtml());
diff --git a/src/gis/prj/CDetailsPrj.cpp b/src/gis/prj/CDetailsPrj.cpp
index e4b5a47..12f7678 100644
--- a/src/gis/prj/CDetailsPrj.cpp
+++ b/src/gis/prj/CDetailsPrj.cpp
@@ -822,8 +822,7 @@ void CDetailsPrj::slotLinkActivated(const QUrl& url)
             IGisItem * item = prj.getItemByKey(key);
             if(item)
             {
-                CTextEditWidget dlg(this);
-                dlg.setHtml(item->getDescription());
+                CTextEditWidget dlg(item->getDescription(), this);
                 if(dlg.exec() == QDialog::Accepted)
                 {
                     item->setDescription(dlg.getHtml());
@@ -832,8 +831,7 @@ void CDetailsPrj::slotLinkActivated(const QUrl& url)
         }
         else
         {
-            CTextEditWidget dlg(nullptr);
-            dlg.setHtml(prj.getDescription());
+            CTextEditWidget dlg(prj.getDescription(), nullptr);
             if(dlg.exec() == QDialog::Accepted)
             {
                 prj.setDescription(dlg.getHtml());
@@ -856,8 +854,7 @@ void CDetailsPrj::slotLinkActivated(const QUrl& url)
             IGisItem * item = prj.getItemByKey(key);
             if(item)
             {
-                CTextEditWidget dlg(this);
-                dlg.setHtml(item->getComment());
+                CTextEditWidget dlg(item->getComment(), this);
                 if(dlg.exec() == QDialog::Accepted)
                 {
                     item->setComment(dlg.getHtml());
diff --git a/src/gis/rte/CDetailsRte.cpp b/src/gis/rte/CDetailsRte.cpp
index 95ce66d..d5abf36 100644
--- a/src/gis/rte/CDetailsRte.cpp
+++ b/src/gis/rte/CDetailsRte.cpp
@@ -130,8 +130,7 @@ void CDetailsRte::slotLinkActivated(const QUrl& url)
 {
     if(url.toString() == "comment")
     {
-        CTextEditWidget dlg(nullptr);
-        dlg.setHtml(rte.getComment());
+        CTextEditWidget dlg(rte.getComment(), nullptr);
         if(dlg.exec() == QDialog::Accepted)
         {
             rte.setComment(dlg.getHtml());
@@ -140,8 +139,7 @@ void CDetailsRte::slotLinkActivated(const QUrl& url)
     }
     else if(url.toString() == "description")
     {
-        CTextEditWidget dlg(nullptr);
-        dlg.setHtml(rte.getDescription());
+        CTextEditWidget dlg(rte.getDescription(), nullptr);
         if(dlg.exec() == QDialog::Accepted)
         {
             rte.setDescription(dlg.getHtml());
diff --git a/src/gis/trk/CDetailsTrk.cpp b/src/gis/trk/CDetailsTrk.cpp
index ba3b79f..a7f5bc0 100644
--- a/src/gis/trk/CDetailsTrk.cpp
+++ b/src/gis/trk/CDetailsTrk.cpp
@@ -610,8 +610,7 @@ void CDetailsTrk::slotLinkActivated(const QUrl& url)
 {
     if(url.toString() == "comment")
     {
-        CTextEditWidget dlg(this);
-        dlg.setHtml(trk.getComment());
+        CTextEditWidget dlg(trk.getComment(), this);
         if(dlg.exec() == QDialog::Accepted)
         {
             trk.setComment(dlg.getHtml());
@@ -620,8 +619,7 @@ void CDetailsTrk::slotLinkActivated(const QUrl& url)
     }
     else if(url.toString() == "description")
     {
-        CTextEditWidget dlg(this);
-        dlg.setHtml(trk.getDescription());
+        CTextEditWidget dlg(trk.getDescription(), this);
         if(dlg.exec() == QDialog::Accepted)
         {
             trk.setDescription(dlg.getHtml());
diff --git a/src/gis/trk/CGisItemTrk.cpp b/src/gis/trk/CGisItemTrk.cpp
index f2b00e2..b4a3a2c 100644
--- a/src/gis/trk/CGisItemTrk.cpp
+++ b/src/gis/trk/CGisItemTrk.cpp
@@ -1172,7 +1172,7 @@ void CGisItemTrk::findWaypointsCloseBy(CProgressDialog& progress, quint32& curre
         trkwpt.y      = pos.y() * DEG_TO_RAD;
         trkwpt.key    = wpt->getKey();
 
-        qreal a1, a2;
+        qreal a1 = 0, a2 = 0;
         qreal d = GPS_Math_Distance(pt0.x, pt0.y, trkwpt.x, trkwpt.y, a1, a2);
 
         trkwpt.x = qCos(a1 * DEG_TO_RAD) * d;
diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
index 983d8be..aeab317 100644
--- a/src/gis/wpt/CDetailsWpt.cpp
+++ b/src/gis/wpt/CDetailsWpt.cpp
@@ -186,8 +186,7 @@ void CDetailsWpt::slotLinkActivated(const QUrl& url)
 {
     if(url.toString() == "comment")
     {
-        CTextEditWidget dlg(this);
-        dlg.setHtml(wpt.getComment());
+        CTextEditWidget dlg(wpt.getComment(), this);
         if(dlg.exec() == QDialog::Accepted)
         {
             wpt.setComment(dlg.getHtml());
@@ -196,8 +195,7 @@ void CDetailsWpt::slotLinkActivated(const QUrl& url)
     }
     else if(url.toString() == "description")
     {
-        CTextEditWidget dlg(this);
-        dlg.setHtml(wpt.getDescription());
+        CTextEditWidget dlg(wpt.getDescription(), this);
         if(dlg.exec() == QDialog::Accepted)
         {
             wpt.setDescription(dlg.getHtml());
diff --git a/src/icons/2DFix.svg b/src/icons/2DFix.svg
deleted file mode 100644
index 9ddcfa9..0000000
--- a/src/icons/2DFix.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?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="svg3408"
-   version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="2DFix.svg">
-  <defs
-     id="defs3410" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.197802"
-     inkscape:cx="8"
-     inkscape:cy="11.60396"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1920"
-     inkscape:window-height="996"
-     inkscape:window-x="-2"
-     inkscape:window-y="-3"
-     inkscape:window-maximized="1" />
-  <metadata
-     id="metadata3413">
-    <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"
-     transform="translate(0,48)">
-    <g
-       id="g3852"
-       inkscape:export-filename="/home/oeichler/dateien/android/QLandkarteM/QLandkarteM/icons/16x16/2DFix.png"
-       inkscape:export-xdpi="39.724052"
-       inkscape:export-ydpi="39.724052"
-       transform="translate(-72.810296,-34.91619)">
-      <rect
-         y="22.624874"
-         x="65"
-         height="34.95887"
-         width="35.262177"
-         id="rect2987-4"
-         style="fill:#ffcc00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <text
-         sodipodi:linespacing="125%"
-         id="text3757-4"
-         y="47.384583"
-         x="67.230698"
-         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:20px;font-weight:bold;fill:#ffffff;-inkscape-font-specification:Sans Bold"
-           y="47.384583"
-           x="67.230698"
-           id="tspan3759-5"
-           sodipodi:role="line">2D</tspan></text>
-    </g>
-  </g>
-</svg>
diff --git a/src/icons/32x32/2DFix.png b/src/icons/32x32/2DFix.png
deleted file mode 100644
index 058073e..0000000
Binary files a/src/icons/32x32/2DFix.png and /dev/null differ
diff --git a/src/icons/32x32/3DFix.png b/src/icons/32x32/3DFix.png
deleted file mode 100644
index 62e554e..0000000
Binary files a/src/icons/32x32/3DFix.png and /dev/null differ
diff --git a/src/icons/32x32/LimitMax.png b/src/icons/32x32/LimitMax.png
deleted file mode 100644
index 18b822d..0000000
Binary files a/src/icons/32x32/LimitMax.png and /dev/null differ
diff --git a/src/icons/32x32/LimitMin.png b/src/icons/32x32/LimitMin.png
deleted file mode 100644
index 5c14902..0000000
Binary files a/src/icons/32x32/LimitMin.png and /dev/null differ
diff --git a/src/icons/32x32/NoFix.png b/src/icons/32x32/NoFix.png
deleted file mode 100644
index 9375073..0000000
Binary files a/src/icons/32x32/NoFix.png and /dev/null differ
diff --git a/src/icons/32x32/PasteNormal.png b/src/icons/32x32/PasteNormal.png
new file mode 100644
index 0000000..0d6255f
Binary files /dev/null and b/src/icons/32x32/PasteNormal.png differ
diff --git a/src/icons/32x32/PastePlain.png b/src/icons/32x32/PastePlain.png
new file mode 100644
index 0000000..70f5b53
Binary files /dev/null and b/src/icons/32x32/PastePlain.png differ
diff --git a/src/icons/3DFix.svg b/src/icons/3DFix.svg
deleted file mode 100644
index 0e9536a..0000000
--- a/src/icons/3DFix.svg
+++ /dev/null
@@ -1,82 +0,0 @@
-<?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="svg3354"
-   version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="Neues Dokument 1">
-  <defs
-     id="defs3356" />
-  <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="39.272727"
-     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="1189"
-     inkscape:window-y="219"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata3359">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <g
-       id="g3817"
-       inkscape:export-filename="/home/oeichler/dateien/android/QLandkarteM/QLandkarteM/icons/16x16/3DFix.png"
-       inkscape:export-xdpi="39.723461"
-       inkscape:export-ydpi="39.723461"
-       transform="translate(-8.085634,-14.205254)">
-      <rect
-         y="22.362183"
-         x="25"
-         height="34.95887"
-         width="35.262177"
-         id="rect2987"
-         style="fill:#007f00;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <text
-         sodipodi:linespacing="125%"
-         id="text3757"
-         y="47.121891"
-         x="27.230698"
-         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:20px;font-weight:bold;fill:#ffffff;-inkscape-font-specification:Sans Bold"
-           y="47.121891"
-           x="27.230698"
-           id="tspan3759"
-           sodipodi:role="line">3D</tspan></text>
-    </g>
-  </g>
-</svg>
diff --git a/src/icons/48x48/2DFix.png b/src/icons/48x48/2DFix.png
deleted file mode 100644
index 4148f12..0000000
Binary files a/src/icons/48x48/2DFix.png and /dev/null differ
diff --git a/src/icons/48x48/3DFix.png b/src/icons/48x48/3DFix.png
deleted file mode 100644
index 1b6a629..0000000
Binary files a/src/icons/48x48/3DFix.png and /dev/null differ
diff --git a/src/icons/48x48/LimitMax.png b/src/icons/48x48/LimitMax.png
deleted file mode 100644
index fbab800..0000000
Binary files a/src/icons/48x48/LimitMax.png and /dev/null differ
diff --git a/src/icons/48x48/LimitMin.png b/src/icons/48x48/LimitMin.png
deleted file mode 100644
index 741ac8d..0000000
Binary files a/src/icons/48x48/LimitMin.png and /dev/null differ
diff --git a/src/icons/48x48/NoFix.png b/src/icons/48x48/NoFix.png
deleted file mode 100644
index c2cfb36..0000000
Binary files a/src/icons/48x48/NoFix.png and /dev/null differ
diff --git a/src/icons/48x48/PasteNormal.png b/src/icons/48x48/PasteNormal.png
new file mode 100644
index 0000000..50a5f3a
Binary files /dev/null and b/src/icons/48x48/PasteNormal.png differ
diff --git a/src/icons/48x48/PastePlain.png b/src/icons/48x48/PastePlain.png
new file mode 100644
index 0000000..c98a333
Binary files /dev/null and b/src/icons/48x48/PastePlain.png differ
diff --git a/src/icons/LimitMax.svg b/src/icons/LimitMax.svg
deleted file mode 100644
index 019ca74..0000000
--- a/src/icons/LimitMax.svg
+++ /dev/null
@@ -1,103 +0,0 @@
-<?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="svg2985"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="LimitMax.svg">
-  <defs
-     id="defs2987" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="15.556349"
-     inkscape:cx="12.204905"
-     inkscape:cy="30.654351"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:document-units="px"
-     inkscape:grid-bbox="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="985"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="1"
-     gridtolerance="10">
-    <inkscape:grid
-       type="xygrid"
-       id="grid3019"
-       units="mm"
-       empspacing="5"
-       visible="true"
-       enabled="true"
-       snapvisiblegridlinesonly="false" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata2990">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <rect
-       style="fill:none;stroke:none"
-       id="rect3797"
-       width="40"
-       height="40"
-       x="1.014256"
-       y="11.300197" />
-    <rect
-       style="fill:none;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
-       id="rect2991"
-       width="40"
-       height="40"
-       x="1.014256"
-       y="11.300197" />
-    <g
-       id="g4723"
-       transform="translate(0,7.9347116)">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3815"
-         d="m 0.9999999,43.365485 0,-7.34353 4.9999992,0 L 11,28.678427 l 5.000002,7.343528 9.999999,-14.687058 10,7.34353 L 41,36.021955 l 0,7.34353 z"
-         style="fill:#000080;stroke:none" />
-      <g
-         id="g4690">
-        <path
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.88798761;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="m 2.4588046,19.784935 37.0687584,0"
-           id="path4142"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           d="m 2.5142592,29.784935 6,-7 5.9284698,7"
-           id="path4144"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="ccc" />
-      </g>
-    </g>
-  </g>
-</svg>
diff --git a/src/icons/LimitMin.svg b/src/icons/LimitMin.svg
deleted file mode 100644
index 7635489..0000000
--- a/src/icons/LimitMin.svg
+++ /dev/null
@@ -1,100 +0,0 @@
-<?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="svg2985"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="LimitMin.svg">
-  <defs
-     id="defs2987" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="15.556349"
-     inkscape:cx="26.288372"
-     inkscape:cy="30.654351"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:document-units="px"
-     inkscape:grid-bbox="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="985"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="1"
-     gridtolerance="10">
-    <inkscape:grid
-       type="xygrid"
-       id="grid3019"
-       units="mm"
-       empspacing="5"
-       visible="true"
-       enabled="true"
-       snapvisiblegridlinesonly="false" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata2990">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
-    <rect
-       style="fill:none;stroke:none"
-       id="rect3797"
-       width="40"
-       height="40"
-       x="1.014256"
-       y="11.300197" />
-    <rect
-       style="fill:none;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
-       id="rect2991"
-       width="40"
-       height="40"
-       x="1.014256"
-       y="11.300197" />
-    <g
-       id="g4139"
-       transform="translate(0,7.9347116)">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3815"
-         d="m 0.9999999,43.365485 0,-7.34353 4.9999992,0 L 11,28.678427 l 5.000002,7.343528 9.999999,-14.687058 10,7.34353 L 41,36.021955 l 0,7.34353 z"
-         style="fill:#000080;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4142"
-         d="m 2.4067135,37.500008 37.1723685,0"
-         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.8920207;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-      <path
-         sodipodi:nodetypes="ccc"
-         inkscape:connector-curvature="0"
-         id="path4144"
-         d="m 27.629841,27.56429 6,7 5.928473,-7"
-         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-    </g>
-  </g>
-</svg>
diff --git a/src/icons/NoFix.svg b/src/icons/NoFix.svg
deleted file mode 100644
index f819d8f..0000000
--- a/src/icons/NoFix.svg
+++ /dev/null
@@ -1,83 +0,0 @@
-<?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="svg3462"
-   version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="NoFix.svg">
-  <defs
-     id="defs3464" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="22.197802"
-     inkscape:cx="27.821782"
-     inkscape:cy="22.415842"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-bbox="true"
-     inkscape:document-units="px"
-     inkscape:window-width="1920"
-     inkscape:window-height="996"
-     inkscape:window-x="-2"
-     inkscape:window-y="-3"
-     inkscape:window-maximized="1" />
-  <metadata
-     id="metadata3467">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     id="layer1"
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     transform="translate(0,48)">
-    <g
-       id="g3873"
-       inkscape:export-filename="/home/oeichler/dateien/android/QLandkarteM/QLandkarteM/icons/16x16/NoFix.png"
-       inkscape:export-xdpi="39.724052"
-       inkscape:export-ydpi="39.724052"
-       transform="translate(-90.82818,-48.177638)">
-      <rect
-         y="22.877411"
-         x="105.25254"
-         height="34.95887"
-         width="35.262177"
-         id="rect2987-2"
-         style="fill:#e00000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <text
-         sodipodi:linespacing="125%"
-         id="text3757-8"
-         y="47.646885"
-         x="115.18343"
-         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:20px;font-weight:bold;fill:#ffffff;-inkscape-font-specification:Sans Bold"
-           y="47.646885"
-           x="115.18343"
-           id="tspan3759-9"
-           sodipodi:role="line">X</tspan></text>
-    </g>
-  </g>
-</svg>
diff --git a/src/icons/PasteNormal.svg b/src/icons/PasteNormal.svg
new file mode 100644
index 0000000..087e915
--- /dev/null
+++ b/src/icons/PasteNormal.svg
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg3513"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="PasteNormal.svg">
+  <defs
+     id="defs3515" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="3.8890873"
+     inkscape:cx="-45.854639"
+     inkscape:cy="30.193933"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1916"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="18"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2983" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3518">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <rect
+       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="rect3795"
+       width="40"
+       height="40"
+       x="7"
+       y="15" />
+    <rect
+       style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.8538155;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect3005"
+       width="24.146185"
+       height="34.146187"
+       x="14.926908"
+       y="19.154181" />
+    <rect
+       style="fill:#80b3ff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.70689117999999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect3005-2"
+       width="19.293108"
+       height="29.293108"
+       x="17.353447"
+       y="19.717089" />
+    <g
+       id="g4535"
+       transform="translate(-2,-4.2727273)">
+      <g
+         id="g4527">
+        <path
+           style="fill:#ffffff;fill-opacity:1;stroke:#000080;stroke-width:1.180161;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 17.439034,43.737161 c -1.63949,-4.702838 1.816795,-10.591354 5.450385,-12.517053 5.450384,-2.88855 9.083968,-0.96285 11.809163,0.962849 11.809158,8.665649 -0.468445,8.057395 -3.633589,11.554204 -3.060759,1.872799 11.083924,10.029565 -4.54199,9.628499 -3.633584,-0.96285 -5.399693,-2.477112 -9.083969,-9.628499 z"
+           id="path4185"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cccccc" />
+        <path
+           sodipodi:type="arc"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000080;stroke-width:1.18116081;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4189"
+           sodipodi:cx="-53.340767"
+           sodipodi:cy="-13.459412"
+           sodipodi:rx="3.7440784"
+           sodipodi:ry="2.808059"
+           d="m -50.113421,-14.882903 a 3.7440784,2.808059 0 0 1 -1.30852,3.834742 3.7440784,2.808059 0 0 1 -5.121347,-0.956564 3.7440784,2.808059 0 0 1 1.242263,-3.847117 3.7440784,2.808059 0 0 1 5.137418,0.906791"
+           sodipodi:start="5.7515649"
+           sodipodi:end="5.7256897"
+           sodipodi:open="true"
+           transform="matrix(-0.68623957,-0.72737559,0.68623957,-0.72737559,0,0)" />
+        <path
+           sodipodi:type="arc"
+           style="fill:#ffff00;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.29821113;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4191"
+           sodipodi:cx="33.342445"
+           sodipodi:cy="37.012634"
+           sodipodi:rx="1.7776624"
+           sodipodi:ry="1.8842443"
+           d="m 34.874767,36.057453 a 1.7776624,1.8842443 0 0 1 -0.621276,2.573162 1.7776624,1.8842443 0 0 1 -2.43158,-0.641867 1.7776624,1.8842443 0 0 1 0.589817,-2.581466 1.7776624,1.8842443 0 0 1 2.439211,0.608469"
+           sodipodi:start="5.7515649"
+           sodipodi:end="5.7256897"
+           sodipodi:open="true"
+           inkscape:transform-center-x="99.300349"
+           inkscape:transform-center-y="-24.715677" />
+        <path
+           sodipodi:type="arc"
+           style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.29821113;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4191-2"
+           sodipodi:cx="27.578352"
+           sodipodi:cy="33.945057"
+           sodipodi:rx="1.7776624"
+           sodipodi:ry="1.8842443"
+           d="m 29.110673,32.989875 a 1.7776624,1.8842443 0 0 1 -0.621276,2.573163 1.7776624,1.8842443 0 0 1 -2.43158,-0.641867 1.7776624,1.8842443 0 0 1 0.589818,-2.581466 1.7776624,1.8842443 0 0 1 2.439211,0.608469"
+           sodipodi:start="5.7515649"
+           sodipodi:end="5.7256897"
+           sodipodi:open="true"
+           inkscape:transform-center-x="99.300349"
+           inkscape:transform-center-y="-24.715677" />
+        <path
+           sodipodi:type="arc"
+           style="fill:#808000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.29821113;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4191-1"
+           sodipodi:cx="22.377262"
+           sodipodi:cy="36.569653"
+           sodipodi:rx="1.7776624"
+           sodipodi:ry="1.8842443"
+           d="m 23.909584,35.614471 a 1.7776624,1.8842443 0 0 1 -0.621277,2.573162 1.7776624,1.8842443 0 0 1 -2.43158,-0.641866 1.7776624,1.8842443 0 0 1 0.589818,-2.581467 1.7776624,1.8842443 0 0 1 2.439211,0.608469"
+           sodipodi:start="5.7515649"
+           sodipodi:end="5.7256897"
+           sodipodi:open="true"
+           inkscape:transform-center-x="99.300349"
+           inkscape:transform-center-y="-24.715677" />
+        <path
+           sodipodi:type="arc"
+           style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.29821113;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="path4191-15"
+           sodipodi:cx="21.774462"
+           sodipodi:cy="43.088116"
+           sodipodi:rx="1.7776624"
+           sodipodi:ry="1.8842443"
+           d="m 23.306783,42.132934 a 1.7776624,1.8842443 0 0 1 -0.621276,2.573163 1.7776624,1.8842443 0 0 1 -2.43158,-0.641867 1.7776624,1.8842443 0 0 1 0.589818,-2.581467 1.7776624,1.8842443 0 0 1 2.43921,0.608469"
+           sodipodi:start="5.7515649"
+           sodipodi:end="5.7256897"
+           sodipodi:open="true"
+           inkscape:transform-center-x="99.300349"
+           inkscape:transform-center-y="-24.715677" />
+      </g>
+    </g>
+    <rect
+       style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect3775"
+       width="9"
+       height="4"
+       x="22.5"
+       y="16.772724" />
+    <g
+       id="g4449"
+       transform="translate(51.758652,-6.621091)">
+      <path
+         style="fill:#00ff00;stroke:#008000;stroke-width:1.60022128px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+         d="m -14.386202,38.216113 c 1.782616,0.631418 3.565232,1.262835 5.3478487,1.894252 -2.1084537,5.637562 -4.2169097,11.275123 -6.3253637,16.912684 -1.73469,1.939316 -3.469379,3.878631 -5.204069,5.817947 -0.04792,-2.570732 -0.09585,-5.141466 -0.14378,-7.712199 2.108454,-5.637561 4.21691,-11.275123 6.325364,-16.912684 z"
+         id="path3026"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:none;stroke:#000000;stroke-width:1.60022128px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+         d="m -20.567786,62.840996 c -0.04792,-2.570732 -0.09585,-5.141466 -0.14378,-7.712199 1.102155,-0.248047 2.204308,-0.496095 3.306462,-0.744142 0.680462,0.879465 1.360925,1.758929 2.041387,2.638394 -1.73469,1.939316 -3.469379,3.878631 -5.204069,5.817947 z"
+         id="path3032"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:none;stroke:#008000;stroke-width:1.60022128px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m -11.712278,39.163239 c -1.897609,5.073805 -3.795217,10.147611 -5.692826,15.221416"
+         id="path3034"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:none;stroke:#008000;stroke-width:1.60022128px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+         d="m -14.386202,38.216113 c 1.102154,-0.248047 2.204307,-0.496095 3.306461,-0.744142 0.680463,0.879465 1.3609252,1.758929 2.0413877,2.638394 -1.7826167,-0.631417 -3.5652327,-1.262834 -5.3478487,-1.894252 z"
+         id="path3036"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/src/icons/PastePlain.svg b/src/icons/PastePlain.svg
new file mode 100644
index 0000000..10aef46
--- /dev/null
+++ b/src/icons/PastePlain.svg
@@ -0,0 +1,125 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg3513"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="PastePlain.svg">
+  <defs
+     id="defs3515">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4358">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop4360" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop4362" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4358"
+       id="radialGradient4364"
+       cx="35.459429"
+       cy="45.701302"
+       fx="35.459429"
+       fy="45.701302"
+       r="7.0605469"
+       gradientTransform="matrix(1,0,0,1.5487552,0,-25.078826)"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="7.7781746"
+     inkscape:cx="70.530928"
+     inkscape:cy="43.339245"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1916"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="18"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2983" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3518">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <rect
+       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="rect3795"
+       width="40"
+       height="40"
+       x="7"
+       y="15" />
+    <rect
+       style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.8538155;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect3005"
+       width="24.146185"
+       height="34.146187"
+       x="14.926908"
+       y="19.154181" />
+    <rect
+       style="fill:#80b3ff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.70689117999999995;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect3005-2"
+       width="19.293108"
+       height="29.293108"
+       x="17.353447"
+       y="19.717089" />
+    <rect
+       style="fill:#4d4d4d;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect3775"
+       width="9"
+       height="4"
+       x="22.5"
+       y="16.772724" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="22.36899"
+       y="56.63636"
+       id="text4336"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4338"
+         x="22.36899"
+         y="56.63636"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:30px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.80000001;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">P</tspan></text>
+  </g>
+</svg>
diff --git a/src/icons/findunusedicons b/src/icons/findunusedicons
new file mode 100755
index 0000000..b1710ad
--- /dev/null
+++ b/src/icons/findunusedicons
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+for i in *.svg; do
+	grep -r `echo $i | cut -d. -f1` --exclude-dir=".hg" --exclude-dir="icons" --exclude="resources.qrc" ../.. >/dev/null 2>&1
+
+	if [ $? -ne 0 ]; then
+		echo $i is unused
+	fi
+done
+
diff --git a/src/locale/qmapshack_cs.desktop b/src/locale/qmapshack_cs.desktop
new file mode 100644
index 0000000..5fb6a33
--- /dev/null
+++ b/src/locale/qmapshack_cs.desktop
@@ -0,0 +1,3 @@
+#Translations
+Name[cs]=QMapShack
+GenericName[cs]=Data GPS - a správa map
diff --git a/src/locale/qmapshack_cs.ts b/src/locale/qmapshack_cs.ts
index 13462de..7e4d8d0 100644
--- a/src/locale/qmapshack_cs.ts
+++ b/src/locale/qmapshack_cs.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.1" language="cs_CZ">
+<TS version="2.0" language="cs_CZ">
 <context>
     <name>CAbout</name>
     <message>
@@ -183,16 +183,16 @@
     <name>CCreateRouteFromWpt</name>
     <message>
         <source>Edit name...</source>
-        <translation type="vanished">Upravit název...</translation>
+        <translation>Upravit název...</translation>
     </message>
     <message>
         <source>Enter new route name.</source>
-        <translation type="vanished">Zadat nový název pro cestu.</translation>
+        <translation>Zadat nový název cesty.</translation>
     </message>
     <message>
         <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="68"/>
         <source>route</source>
-        <translation type="unfinished"></translation>
+        <translation>Cesta</translation>
     </message>
 </context>
 <context>
@@ -512,32 +512,32 @@ K vyřešení tohoto střetu můžete vytvořit a uložit klona, vynutit svoji v
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="627"/>
         <source>From Start</source>
-        <translation type="unfinished"></translation>
+        <translation>Od začátku</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="627"/>
         <source>To Next</source>
-        <translation type="unfinished"></translation>
+        <translation>K další</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="627"/>
         <source>To End</source>
-        <translation type="unfinished"></translation>
+        <translation>Na konec</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="630"/>
         <source>distance: </source>
-        <translation type="unfinished"></translation>
+        <translation>Vzdálenost: </translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="640"/>
         <source>ascent: </source>
-        <translation type="unfinished"></translation>
+        <translation>Stoupání: </translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="650"/>
         <source>descend: </source>
-        <translation type="unfinished"></translation>
+        <translation>Klesání: </translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="719"/>
@@ -561,15 +561,15 @@ K vyřešení tohoto střetu můžete vytvořit a uložit klona, vynutit svoji v
     </message>
     <message>
         <source>distance: %1%2</source>
-        <translation type="vanished">Vzdálenost: %1%2</translation>
+        <translation>Vzdálenost: %1%2</translation>
     </message>
     <message>
         <source>ascent: %1%2</source>
-        <translation type="vanished">Stoupání: %1%2</translation>
+        <translation>Stoupání: %1%2</translation>
     </message>
     <message>
         <source>descend: %1%2</source>
-        <translation type="vanished">Klesání: %1%2</translation>
+        <translation>Klesání: %1%2</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="749"/>
@@ -586,7 +586,7 @@ K vyřešení tohoto střetu můžete vytvořit a uložit klona, vynutit svoji v
         <location filename="../gis/prj/CDetailsPrj.cpp" line="777"/>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="804"/>
         <source>Enter new project name.</source>
-        <translation>Zadejte název projektu.</translation>
+        <translation>Zadejte nový název projektu.</translation>
     </message>
     <message>
         <location filename="../gis/prj/CDetailsPrj.cpp" line="786"/>
@@ -664,7 +664,7 @@ K vyřešení tohoto střetu můžete vytvořit a uložit klona, vynutit svoji v
     </message>
     <message>
         <source>%1 %2</source>
-        <translation type="vanished">%1 %2</translation>
+        <translation>%1 %2</translation>
     </message>
     <message>
         <location filename="../gis/trk/CDetailsTrk.cpp" line="426"/>
@@ -749,7 +749,7 @@ K vyřešení tohoto střetu můžete vytvořit a uložit klona, vynutit svoji v
     <message>
         <location filename="../gis/wpt/CDetailsWpt.cpp" line="166"/>
         <source>Enter new proximity range.</source>
-        <translation>Zadejte nový poplach kvůli odstupu.</translation>
+        <translation>Zadat nový poplach kvůli odstupu.</translation>
     </message>
 </context>
 <context>
@@ -964,7 +964,7 @@ K vyřešení tohoto střetu můžete vytvořit a uložit klona, vynutit svoji v
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="284"/>
         <source>track</source>
-        <translation type="unfinished"></translation>
+        <translation>Stopa</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="311"/>
@@ -1010,7 +1010,7 @@ K vyřešení tohoto střetu můžete vytvořit a uložit klona, vynutit svoji v
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="372"/>
         <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/rte/CGisItemRte.cpp" line="378"/>
@@ -1106,7 +1106,7 @@ K vyřešení tohoto střetu můžete vytvořit a uložit klona, vynutit svoji v
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="439"/>
         <source>Start: -</source>
-        <translation type="unfinished"></translation>
+        <translation>Začátek: -</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="445"/>
@@ -1116,7 +1116,7 @@ K vyřešení tohoto střetu můžete vytvořit a uložit klona, vynutit svoji v
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="449"/>
         <source>End: -</source>
-        <translation type="unfinished"></translation>
+        <translation>Konec: -</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="453"/>
@@ -1126,27 +1126,27 @@ K vyřešení tohoto střetu můžete vytvořit a uložit klona, vynutit svoji v
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="457"/>
         <source>Invalid elevations!</source>
-        <translation type="unfinished"></translation>
+        <translation>Neplatné výšky!</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="462"/>
         <source>Invalid timestamps!</source>
-        <translation type="unfinished"></translation>
+        <translation>Neplatná časová razítka!</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="467"/>
         <source>Invalid positions!</source>
-        <translation type="unfinished"></translation>
+        <translation>Neplatné polohy!</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="558"/>
         <source>Index: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Rejstřík: %1</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="562"/>
         <source>Index: visible %1, total %2</source>
-        <translation type="unfinished"></translation>
+        <translation>Rejstřík: viditelné %1, celkem %2</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="573"/>
@@ -1195,7 +1195,7 @@ K vyřešení tohoto střetu můžete vytvořit a uložit klona, vynutit svoji v
         <location filename="../gis/trk/CGisItemTrk.cpp" line="1434"/>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="1599"/>
         <source>track</source>
-        <translation type="unfinished"></translation>
+        <translation>Stopa</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="1535"/>
@@ -1275,16 +1275,16 @@ K vyřešení tohoto střetu můžete vytvořit a uložit klona, vynutit svoji v
     </message>
     <message>
         <source>Edit name...</source>
-        <translation type="vanished">Upravit název...</translation>
+        <translation>Upravit název...</translation>
     </message>
     <message>
         <source>Enter new track name.</source>
-        <translation type="vanished">Zadat název nové stopy.</translation>
+        <translation>Zadejte nový název stopy.</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="405"/>
         <source>, %1-, %2-</source>
-        <translation type="unfinished"></translation>
+        <translation>, %1-, %2-</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="413"/>
@@ -1294,7 +1294,7 @@ K vyřešení tohoto střetu můžete vytvořit a uložit klona, vynutit svoji v
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="417"/>
         <source>Time: -, Speed: -</source>
-        <translation type="unfinished"></translation>
+        <translation>Čas: -, Rychlost: -</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="425"/>
@@ -1304,7 +1304,7 @@ K vyřešení tohoto střetu můžete vytvořit a uložit klona, vynutit svoji v
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="429"/>
         <source>Moving: -, Speed: -</source>
-        <translation type="unfinished"></translation>
+        <translation>Pohyb: -, Rychlost: -</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="639"/>
@@ -1353,7 +1353,7 @@ K vyřešení tohoto střetu můžete vytvořit a uložit klona, vynutit svoji v
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="2171"/>
         <source>Changed elevation of point %1 to %2 %3</source>
-        <translation type="unfinished"></translation>
+        <translation>Výška bodu %1 byla změněna na %2 %3</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="2198"/>
@@ -1372,12 +1372,12 @@ K vyřešení tohoto střetu můžete vytvořit a uložit klona, vynutit svoji v
     </message>
     <message>
         <source>Hide points with invalid coordinates at the beginning of the track</source>
-        <translation type="vanished">Skrýt body s neplatnými souřadnicemi na začátku stopy</translation>
+        <translation>Skrýt body s neplatnými souřadnicemi na začátku stopy</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="141"/>
         <source>Hide points with invalid data.</source>
-        <translation type="unfinished"></translation>
+        <translation>Skrýt body s neplatnými daty.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/filter.cpp" line="157"/>
@@ -1701,7 +1701,7 @@ K vyřešení tohoto střetu můžete vytvořit a uložit klona, vynutit svoji v
     <message>
         <location filename="../gis/CGisListWks.cpp" line="166"/>
         <source>Convert to Track</source>
-        <translation type="unfinished"></translation>
+        <translation>Převést na stopu</translation>
     </message>
     <message>
         <location filename="../gis/CGisListWks.cpp" line="182"/>
@@ -2070,7 +2070,7 @@ line %2, column %3:
     <message>
         <location filename="../CMainWindow.cpp" line="557"/>
         <source>Use <b>Menu->View->Add Map View</b> to open a new view. Or <b>Menu->File->Load Map View</b> to restore a saved one. Or click <a href='newview'>here</a>.</source>
-        <translation type="unfinished"></translation>
+        <translation>Použít <b>Nabídka → Pohled → Přidat pohled na mapu</b> k otevření nového pohledu. Nebo <b>Nabídka → Soubor → Nahrát pohled na mapu</b> k obnovení uložené. Nebo klepněte <a href='newview'>sem</a>.</translation>
     </message>
     <message>
         <location filename="../CMainWindow.cpp" line="685"/>
@@ -2720,11 +2720,11 @@ Když s QMapShack není bez map žádná zábava, proč s ním nejsou nějaké p
     <message>
         <location filename="../map/CMapIMG.cpp" line="730"/>
         <source>File contains locked / encrypted 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>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>
         <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="vanished">Soubor obsahuje zamknutá/zašifrovaná data. Garmin nechce, aby byl tento soubor použit s jiným programem než dodaným Garminem.</translation>
+        <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="2305"/>
@@ -3028,15 +3028,15 @@ Neznámá stavba.</translation>
     <message>
         <location filename="../mouse/CMouseEditArea.cpp" line="96"/>
         <source>area</source>
-        <translation type="unfinished"></translation>
+        <translation>Oblast</translation>
     </message>
     <message>
         <source>Edit name...</source>
-        <translation type="vanished">Upravit název...</translation>
+        <translation>Upravit název...</translation>
     </message>
     <message>
         <source>Enter new area name.</source>
-        <translation type="vanished">Zadat název nové oblasti.</translation>
+        <translation>Zadat nový název oblasti.</translation>
     </message>
 </context>
 <context>
@@ -3055,15 +3055,15 @@ Neznámá stavba.</translation>
     <message>
         <location filename="../mouse/CMouseEditRte.cpp" line="107"/>
         <source>route</source>
-        <translation type="unfinished"></translation>
+        <translation>Cesta</translation>
     </message>
     <message>
         <source>Edit name...</source>
-        <translation type="vanished">Upravit název...</translation>
+        <translation>Upravit název...</translation>
     </message>
     <message>
         <source>Enter new route name.</source>
-        <translation type="vanished">Zadat nový název pro cestu.</translation>
+        <translation>Zadat nový název cesty.</translation>
     </message>
 </context>
 <context>
@@ -3096,15 +3096,15 @@ Neznámá stavba.</translation>
     <message>
         <location filename="../mouse/CMouseEditTrk.cpp" line="112"/>
         <source>track</source>
-        <translation type="unfinished"></translation>
+        <translation>Stopa</translation>
     </message>
     <message>
         <source>Edit name...</source>
-        <translation type="vanished">Upravit název...</translation>
+        <translation>Upravit název...</translation>
     </message>
     <message>
         <source>Enter new track name.</source>
-        <translation type="vanished">Zadat název nové stopy.</translation>
+        <translation>Zadejte nový název stopy.</translation>
     </message>
 </context>
 <context>
@@ -3211,12 +3211,12 @@ Neznámá stavba.</translation>
     <message>
         <location filename="../plot/CPlot.cpp" line="55"/>
         <source>distance [%1]</source>
-        <translation type="unfinished">Vzdálenost [%1]</translation>
+        <translation>Vzdálenost [%1]</translation>
     </message>
     <message>
         <location filename="../plot/CPlot.cpp" line="60"/>
         <source>time</source>
-        <translation type="unfinished">Čas</translation>
+        <translation>Čas</translation>
     </message>
 </context>
 <context>
@@ -3368,18 +3368,18 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/wpt/CProjWpt.cpp" line="62"/>
         <source>Enter new waypoint name.</source>
-        <translation>Zadat  nový název cestovního bodu.</translation>
+        <translation>Zadat nový název cestovního bodu.</translation>
     </message>
 </context>
 <context>
     <name>CPropertyTrk</name>
     <message>
         <source>distance [%1]</source>
-        <translation type="vanished">Vzdálenost [%1]</translation>
+        <translation>Vzdálenost [%1]</translation>
     </message>
     <message>
         <source>time</source>
-        <translation type="vanished">Čas</translation>
+        <translation>Čas</translation>
     </message>
 </context>
 <context>
@@ -4172,7 +4172,7 @@ line %2, column %3:
     <message>
         <location filename="../gis/trk/CTableTrk.cpp" line="101"/>
         <source>Double click to edit elevation value</source>
-        <translation type="unfinished"></translation>
+        <translation>Dvakrát klepněte pro upravení hodnoty výšky</translation>
     </message>
     <message>
         <location filename="../gis/trk/CTableTrk.cpp" line="127"/>
@@ -4182,7 +4182,7 @@ line %2, column %3:
         <location filename="../gis/trk/CTableTrk.cpp" line="157"/>
         <location filename="../gis/trk/CTableTrk.cpp" line="159"/>
         <source>%1 %2</source>
-        <translation type="unfinished">%1 %2</translation>
+        <translation>%1 %2</translation>
     </message>
 </context>
 <context>
@@ -4729,16 +4729,16 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
     </message>
     <message>
         <source>To add files with elevation data use File->Setup DEM Paths. </source>
-        <translation type="vanished">Pro přidání souborů s údaji o výšce použijte Soubor → Nastavit cesty k výškovým modelům. </translation>
+        <translation>Pro přidání souborů s údaji o výšce použijte Soubor → Nastavit cesty k výškovým modelům. </translation>
     </message>
     <message>
         <source>To add files with elevation data use <b>File->Setup DEM Paths</b>. </source>
-        <translation type="vanished">Pro přidání souborů s údaji o výšce použijte <b>Soubor → Nastavit cesty k výškovým modelům</b>. </translation>
+        <translation>Pro přidání souborů s údaji o výšce použijte <b>Soubor → Nastavit cesty k výškovým modelům</b>. </translation>
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="118"/>
         <source>To add files with elevation data use <b>File->Setup DEM Paths</b>.  Or click <a href='setup'><b>here</b></a></source>
-        <translation type="unfinished"></translation>
+        <translation>Pro přidání souborů s údaji o výšce použijte <b>Soubor → Nastavit cesty k výškovým modelům</b>. Nebo klepněte <a href='setup'><b>sem</b></a></translation>
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="131"/>
@@ -5245,7 +5245,9 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
         <source>-
 -
 -</source>
-        <translation type="unfinished"></translation>
+        <translation>-
+-
+-</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="571"/>
@@ -5492,11 +5494,11 @@ Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body,
     <message>
         <location filename="../gis/trk/filter/IFilterInvalid.ui" line="56"/>
         <source>Hide points with invalid data.</source>
-        <translation type="unfinished"></translation>
+        <translation>Skrýt body s neplatnými daty.</translation>
     </message>
     <message>
         <source>Hide points with invalid coordinates at the beginning of the track.</source>
-        <translation type="vanished">Skrýt body s neplatnými souřadnicemi na začátku stopy.</translation>
+        <translation>Skrýt body s neplatnými souřadnicemi na začátku stopy.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterInvalid.ui" line="63"/>
@@ -5812,12 +5814,12 @@ Buď je to nový symbol nebo byl v databázi někým smazán.</translation>
     <message>
         <location filename="../gis/IGisItem.cpp" line="843"/>
         <source>Edit name...</source>
-        <translation type="unfinished">Upravit název...</translation>
+        <translation>Upravit název...</translation>
     </message>
     <message>
         <location filename="../gis/IGisItem.cpp" line="843"/>
         <source>Enter new %1 name.</source>
-        <translation type="unfinished"></translation>
+        <translation>Zadat nový název %1.</translation>
     </message>
 </context>
 <context>
@@ -6415,16 +6417,16 @@ Název souboru: %1</translation>
     </message>
     <message>
         <source>To add maps use File->Setup Map Paths. </source>
-        <translation type="vanished">Pro přidání map použijte Soubor → Nastavit cesty k mapám. </translation>
+        <translation>Pro přidání map použijte Soubor → Nastavit cesty k mapám. </translation>
     </message>
     <message>
         <source>To add maps use <b>File->Setup Map Paths</b>. </source>
-        <translation type="vanished">Pro přidání map použijte <b>Soubor → Nastavit cesty k mapám</b>. </translation>
+        <translation>Pro přidání map použijte <b>Soubor → Nastavit cesty k mapám</b>. </translation>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="103"/>
         <source>To add maps use <b>File->Setup Map Paths</b>.  Or click <a href='setup'><b>here</b></a></source>
-        <translation type="unfinished"></translation>
+        <translation>Pro přidání map použijte <b>Soubor → Nastavit cesty k mapám</b>. Nebo klepněte <a href='setup'><b>sem</b></a></translation>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="116"/>
@@ -7001,7 +7003,7 @@ nebo
     </message>
     <message>
         <source>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path.</source>
-        <translation type="vanished">Pro použití stanovení cesty bez připojení k internetu je potřeba stanovit cesty k místním datům se stanovením cest. Použijte nástrojové tlačítko pro nastavení k zaregistrování cesty.</translation>
+        <translation>Pro použití stanovení cesty bez připojení k internetu je potřeba stanovit cesty k místním datům se stanovením cest. Použijte nástrojové tlačítko pro nastavení k zaregistrování cesty.</translation>
     </message>
 </context>
 <context>
@@ -7466,7 +7468,7 @@ nebo
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="145"/>
         <source>Convert route to track</source>
-        <translation type="unfinished"></translation>
+        <translation>Převést cestu na stopu</translation>
     </message>
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="174"/>
@@ -8425,11 +8427,11 @@ nebo
     <message>
         <location filename="../helpers/IWptIconDialog.ui" line="95"/>
         <source>All custom icons have to be *.bmp or *.png format.</source>
-        <translation type="unfinished"></translation>
+        <translation>Všechny vlastní symboly musí být ve formátu *.bmp nebo *.png.</translation>
     </message>
     <message>
         <source>All custom icons have to be *.bmp format.</source>
-        <translation type="vanished">Všechny vlastní symboly musí být ve formátu *.bmp.</translation>
+        <translation>Všechny vlastní symboly musí být ve formátu *.bmp.</translation>
     </message>
 </context>
 <context>
diff --git a/src/map/CMapDraw.cpp b/src/map/CMapDraw.cpp
index a5d888f..b54523b 100644
--- a/src/map/CMapDraw.cpp
+++ b/src/map/CMapDraw.cpp
@@ -119,8 +119,13 @@ void CMapDraw::saveMapPath(QSettings& cfg)
 
 void CMapDraw::loadMapPath(QSettings& cfg)
 {
-    mapPaths    = cfg.value("mapPath", mapPaths).toStringList();
-    cachePath   = cfg.value("cachePath", cachePath).toString();
+    mapPaths  = cfg.value("mapPath", mapPaths).toStringList();
+    cachePath = cfg.value("cachePath", cachePath).toString();
+
+    if(cachePath.isEmpty())
+    {
+        cachePath = IAppSetup::getPlatformInstance()->defaultCachePath();
+    }
 }
 
 
diff --git a/src/map/cache/CDiskCache.cpp b/src/map/cache/CDiskCache.cpp
index 7880246..c47e1b9 100644
--- a/src/map/cache/CDiskCache.cpp
+++ b/src/map/cache/CDiskCache.cpp
@@ -17,6 +17,7 @@
 **********************************************************************************************/
 
 #include "CDiskCache.h"
+#include "version.h"
 #include "map/CMapDraw.h"
 
 #include <QtWidgets>
@@ -30,6 +31,16 @@ CDiskCache::CDiskCache(const QString &path, qint32 maxSizeMB, qint32 expirationD
     dummy.fill(Qt::transparent);
 
     dir.mkpath(dir.path());
+
+    QFile IDfile(dir.absoluteFilePath("QMS_cache"));
+    if(!IDfile.exists())
+    {
+        if(IDfile.open(QIODevice::ReadWrite))
+        {
+            QTextStream(&IDfile) << "QMapShack " << VER_STR;
+        }
+    }
+
     QFileInfoList files = dir.entryInfoList(QStringList("*.png"), QDir::Files);
     for(const QFileInfo &fileinfo : files)
     {
@@ -156,14 +167,31 @@ void CDiskCache::slotCleanup()
 void CDiskCache::cleanupRemovedMaps(const QSet<QString> &maps)
 {
     QString cacheRoot = CMapDraw::getCacheRoot();
+
+    if(cacheRoot.isEmpty()) {
+        qWarning() << "cacheRoot is empty, that should not happen at all";
+        return;
+    }
+
     const QStringList &dirs = QDir(cacheRoot).entryList(QStringList("*"), QDir::Dirs | QDir::NoDotAndDotDot);
 
     for(const QString &dir : dirs)
     {
+        QDir qdir(cacheRoot + "/" + dir);
         if(!maps.contains(dir))
         {
-            qDebug() << "remove cache directory" << dir << "(reason: map no longer exists)";
-            QDir(cacheRoot + "/" + dir).removeRecursively();
+            QDir qdir(cacheRoot + "/" + dir);
+
+            if(QFile(qdir.absoluteFilePath("QMS_cache")).exists()) {
+                qDebug() << "remove cache directory" << dir << "(reason: map no longer exists)";
+                for(const QString &file : qdir.entryList(QDir::Files)) {
+                    qdir.remove(file);
+                }
+                qdir.cdUp();
+                qdir.rmdir(dir);
+            } else {
+                qDebug() << "ignoring " << dir << " (reason: no QMS cache)";
+            }
         }
     }
 }
diff --git a/src/resources.qrc b/src/resources.qrc
index 7469872..16c57e8 100644
--- a/src/resources.qrc
+++ b/src/resources.qrc
@@ -29,8 +29,6 @@
         <file>icons/16x16/ActAero.png</file>
         <file>icons/16x16/ActSki.png</file>
         <file>icons/16x16/EditDetails.png</file>
-        <file>icons/32x32/2DFix.png</file>
-        <file>icons/32x32/3DFix.png</file>
         <file>icons/32x32/Add.png</file>
         <file>icons/32x32/AddMapWorkspace.png</file>
         <file>icons/32x32/CloneMapWorkspace.png</file>
@@ -63,7 +61,6 @@
         <file>icons/32x32/MimeGEMF.png</file>
         <file>icons/32x32/MouseWheel.png</file>
         <file>icons/32x32/NightDay.png</file>
-        <file>icons/32x32/NoFix.png</file>
         <file>icons/32x32/Off.png</file>
         <file>icons/32x32/POIText.png</file>
         <file>icons/32x32/Reset.png</file>
@@ -102,6 +99,8 @@
         <file>icons/32x32/Copy.png</file>
         <file>icons/32x32/Move.png</file>
         <file>icons/32x32/Paste.png</file>
+        <file>icons/32x32/PastePlain.png</file>
+        <file>icons/32x32/PasteNormal.png</file>
         <file>icons/32x32/TextLeft.png</file>
         <file>icons/32x32/TextRight.png</file>
         <file>icons/32x32/TextCenter.png</file>
@@ -205,8 +204,6 @@
         <file>icons/32x32/LineWidthDef.png</file>
         <file>icons/32x32/ArrowUser.png</file>
         <file>icons/32x32/ArrowDef.png</file>
-        <file>icons/32x32/LimitMax.png</file>
-        <file>icons/32x32/LimitMin.png</file>
         <file>icons/32x32/Limit.png</file>
         <file>icons/32x32/LimitSys.png</file>
         <file>icons/32x32/LimitUsr.png</file>
@@ -217,8 +214,6 @@
         <file>icons/32x32/AreaOn.png</file>
         
 
-        <file>icons/48x48/2DFix.png</file>
-        <file>icons/48x48/3DFix.png</file>
         <file>icons/48x48/Add.png</file>
         <file>icons/48x48/AddMapWorkspace.png</file>
         <file>icons/48x48/CloneMapWorkspace.png</file>
@@ -251,7 +246,6 @@
         <file>icons/48x48/MimeGEMF.png</file>
         <file>icons/48x48/MouseWheel.png</file>
         <file>icons/48x48/NightDay.png</file>
-        <file>icons/48x48/NoFix.png</file>
         <file>icons/48x48/Off.png</file>
         <file>icons/48x48/POIText.png</file>
         <file>icons/48x48/Reset.png</file>
@@ -290,6 +284,8 @@
         <file>icons/48x48/Copy.png</file>
         <file>icons/48x48/Move.png</file>
         <file>icons/48x48/Paste.png</file>
+        <file>icons/48x48/PastePlain.png</file>
+        <file>icons/48x48/PasteNormal.png</file>
         <file>icons/48x48/TextLeft.png</file>
         <file>icons/48x48/TextRight.png</file>
         <file>icons/48x48/TextCenter.png</file>
@@ -393,8 +389,6 @@
         <file>icons/48x48/LineWidthDef.png</file>
         <file>icons/48x48/ArrowUser.png</file>
         <file>icons/48x48/ArrowDef.png</file>
-        <file>icons/48x48/LimitMax.png</file>
-        <file>icons/48x48/LimitMin.png</file>
         <file>icons/48x48/Limit.png</file>
         <file>icons/48x48/LimitSys.png</file>
         <file>icons/48x48/LimitUsr.png</file>
diff --git a/src/setup/IAppSetup.cpp b/src/setup/IAppSetup.cpp
index d215b69..bb56dac 100644
--- a/src/setup/IAppSetup.cpp
+++ b/src/setup/IAppSetup.cpp
@@ -36,7 +36,7 @@ IAppSetup* IAppSetup::getPlatformInstance()
     {
 #if defined(Q_OS_MAC)
         instance = new CAppSetupMac();
-#elif defined(Q_OS_LINUX) || defined(__FreeBSD_kernel__) || defined(__GNU__)
+#elif defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) || defined(__FreeBSD_kernel__) || defined(__GNU__)
         instance = new CAppSetupLinux();
 #elif defined (Q_OS_WIN32)
         instance = new CAppSetupWin();
diff --git a/src/widgets/CTextEdit.cpp b/src/widgets/CTextEdit.cpp
new file mode 100644
index 0000000..e0c4827
--- /dev/null
+++ b/src/widgets/CTextEdit.cpp
@@ -0,0 +1,57 @@
+/**********************************************************************************************
+    Copyright (C) 2016 Christian Eichler code at christian-eichler.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "widgets/CTextEdit.h"
+
+#include <QtWidgets>
+
+CTextEdit::CTextEdit(QWidget *parent)
+    : QTextEdit(parent)
+{
+}
+
+void CTextEdit::keyPressEvent(QKeyEvent *event)
+{
+    if(event->matches(QKeySequence::Paste))
+    {
+        event->ignore();
+        paste();
+    }
+    else
+    {
+        QTextEdit::keyPressEvent(event);
+    }
+}
+
+void CTextEdit::paste()
+{
+    if(pastePlain)
+    {
+        QClipboard *clip = QApplication::clipboard();
+        insertPlainText( clip->text() );
+    }
+    else
+    {
+        QTextEdit::paste();
+    }
+}
+
+void CTextEdit::setPastePlain(bool plain)
+{
+    pastePlain = plain;
+}
diff --git a/src/widgets/CTextEdit.h b/src/widgets/CTextEdit.h
new file mode 100644
index 0000000..dcd4940
--- /dev/null
+++ b/src/widgets/CTextEdit.h
@@ -0,0 +1,42 @@
+/**********************************************************************************************
+    Copyright (C) 2016 Christian Eichler code at christian-eichler.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CTEXTEDIT_H
+#define CTEXTEDIT_H
+
+#include <QTextEdit>
+
+class CTextEdit : public QTextEdit
+{
+    Q_OBJECT
+
+public slots:
+    void paste();
+
+public:
+    CTextEdit(QWidget *parent = nullptr);
+
+    void setPastePlain(bool plain);
+
+protected:
+    void keyPressEvent(QKeyEvent *event) override;
+
+private:
+    bool pastePlain;
+};
+#endif // CTEXTEDIT_H
diff --git a/src/widgets/CTextEditWidget.cpp b/src/widgets/CTextEditWidget.cpp
index 4f79cbe..98d1a76 100644
--- a/src/widgets/CTextEditWidget.cpp
+++ b/src/widgets/CTextEditWidget.cpp
@@ -1,60 +1,56 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the demonstration applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia.  For licensing terms and
-** conditions see http://qt.digia.com/licensing.  For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights.  These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+/**********************************************************************************************
+    Copyright (C) 2016 Christian Eichler code at christian-eichler.de
+
+    Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+    Contact: http://www.qt-project.org/legal
+
+    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, version 3 of the License.
+
+    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 "CTextEditWidget.h"
+#include "helpers/CSettings.h"
+#include "helpers/Signals.h"
+#include "widgets/CTextEditWidgetSelMenu.h"
 
 #include <QtWidgets>
 
-CTextEditWidget::CTextEditWidget(QWidget * parent)
+CTextEditWidget::CTextEditWidget(const QString &html, QWidget * parent)
     : QDialog(parent)
 {
+    SETTINGS;
+
+    bool pastePlain = cfg.value("TextEditWidget/pastePlain", false).toBool();
+
     setupUi(this);
 
-    connect(actionTextBold,      &QAction::triggered, this, &CTextEditWidget::textBold);
-    connect(actionTextItalic,    &QAction::triggered, this, &CTextEditWidget::textItalic);
-    connect(actionTextUnderline, &QAction::triggered, this, &CTextEditWidget::textUnderline);
+    selectionWindow = new CTextEditWidgetSelMenu(this,
+        /* font style actions */ actionTextBold, actionTextItalic, actionTextUnderline,
+        /* copy/paste actions */ actionCut,      actionCopy,       actionPaste
+    );
+
+    QScrollBar *vbar = textEdit->verticalScrollBar();
+    connect(vbar, &QAbstractSlider::valueChanged, this, &CTextEditWidget::textEditScrolled);
+
     toolBold->setDefaultAction  (actionTextBold);
     toolItalic->setDefaultAction(actionTextItalic);
     toolUnder->setDefaultAction (actionTextUnderline);
 
+    connect(actionTextBold,      &QAction::triggered, this, &CTextEditWidget::textBold);
+    connect(actionTextItalic,    &QAction::triggered, this, &CTextEditWidget::textItalic);
+    connect(actionTextUnderline, &QAction::triggered, this, &CTextEditWidget::textUnderline);
+
     QActionGroup *grp = new QActionGroup(this);
     grp->addAction(actionAlignLeft);
     grp->addAction(actionAlignRight);
@@ -67,6 +63,7 @@ CTextEditWidget::CTextEditWidget(QWidget * parent)
     toolRight->setDefaultAction(actionAlignRight);
     toolBlock->setDefaultAction(actionAlignJustify);
 
+    defaultFont = textEdit->font();
 
     QPixmap pix(24, 24);
     pix.fill(Qt::black);
@@ -74,19 +71,17 @@ CTextEditWidget::CTextEditWidget(QWidget * parent)
     connect(actionTextColor, &QAction::triggered, this, &CTextEditWidget::textColor);
     toolColor->setDefaultAction(actionTextColor);
 
-    comboStyle->addItem("standard");
-    comboStyle->addItem("Bullet List (Disc)");
-    comboStyle->addItem("Bullet List (Circle)");
-    comboStyle->addItem("Bullet List (Square)");
-    comboStyle->addItem("Ordered List (Decimal)");
-    comboStyle->addItem("Ordered List (Alpha lower)");
-    comboStyle->addItem("Ordered List (Alpha upper)");
     connect(comboStyle, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &CTextEditWidget::textStyle);
 
+    connect(comboFont, &QFontComboBox::currentFontChanged, textEdit, &QTextEdit::setCurrentFont);
+    connect(spinFontSize, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), textEdit, &QTextEdit::setFontPointSize);
+
     connect(textEdit, &QTextEdit::currentCharFormatChanged, this, &CTextEditWidget::currentCharFormatChanged);
     connect(textEdit, &QTextEdit::cursorPositionChanged,    this, &CTextEditWidget::cursorPositionChanged);
+    connect(textEdit, &QTextEdit::textChanged,              this, &CTextEditWidget::cursorPositionChanged);
     connect(textEdit, &QTextEdit::selectionChanged,         this, &CTextEditWidget::selectionChanged);
 
+    textEdit->setHtml(html);
     textEdit->setFocus();
 
     fontChanged(textEdit->font());
@@ -101,6 +96,7 @@ CTextEditWidget::CTextEditWidget(QWidget * parent)
 
     QMenu *menu = new QMenu(this);
     menu->addAction(actionPastePlain);
+    menu->addAction(actionPasteNormal);
     toolPaste->setMenu(menu);
 
     /* Setup contextmenu for textEdit */
@@ -111,9 +107,19 @@ CTextEditWidget::CTextEditWidget(QWidget * parent)
     menuTextEdit->addAction(actionCut);
     menuTextEdit->addAction(actionCopy);
     menuTextEdit->addAction(actionPaste);
-    menuTextEdit->addAction(actionPastePlain);
     menuTextEdit->addAction(actionDelete);
     menuTextEdit->addSeparator();
+
+    removeFormat = new QMenu(tr("Reset format"), this);
+    {
+        menuTextEdit->addMenu(removeFormat);
+        removeFormat->addAction(actionResetFont);
+        removeFormat->addAction(actionResetLayout);
+    }
+
+    connect(actionResetFont,   &QAction::triggered, this, &CTextEditWidget::resetFont);
+    connect(actionResetLayout, &QAction::triggered, this, &CTextEditWidget::resetLayout);
+
     menuTextEdit->addAction(actionSelectAll);
 
     actionPaste->setEnabled(!QApplication::clipboard()->text().isEmpty());
@@ -130,11 +136,19 @@ CTextEditWidget::CTextEditWidget(QWidget * parent)
     actionCut->setEnabled(false);
     actionCopy->setEnabled(false);
 
+    QActionGroup *pasteGroup = new QActionGroup(this);
+    actionPastePlain->setChecked(pastePlain);
+    actionPasteNormal->setChecked(!pastePlain);
+    pasteGroup->addAction(actionPastePlain);
+    pasteGroup->addAction(actionPasteNormal);
+    connect(pasteGroup, &QActionGroup::triggered, this, &CTextEditWidget::pasteMode);
+
+    pasteMode(pastePlain ? actionPastePlain : actionPasteNormal);
+
     connect(actionCut,        &QAction::triggered,                    textEdit,   &QTextEdit::cut);
     connect(actionCopy,       &QAction::triggered,                    textEdit,   &QTextEdit::copy);
-    connect(actionPaste,      &QAction::triggered,                    textEdit,   &QTextEdit::paste);
     connect(actionSelectAll,  &QAction::triggered,                    textEdit,   &QTextEdit::selectAll);
-    connect(actionPastePlain, &QAction::triggered,                    this,       &CTextEditWidget::pastePlain);
+    connect(actionPaste,      &QAction::triggered,                    textEdit,   &CTextEdit::paste);
     connect(actionDelete,     &QAction::triggered,                    this,       &CTextEditWidget::deleteSelected);
     connect(textEdit,         &QTextEdit::customContextMenuRequested, this,       &CTextEditWidget::customContextMenuRequested);
     connect(textEdit,         &QTextEdit::copyAvailable,              actionCut,  &QAction::setEnabled);
@@ -143,6 +157,12 @@ CTextEditWidget::CTextEditWidget(QWidget * parent)
     connect(QApplication::clipboard(), &QClipboard::dataChanged, this, &CTextEditWidget::clipboardDataChanged);
 }
 
+CTextEditWidget::~CTextEditWidget()
+{
+    SETTINGS;
+    cfg.setValue("TextEditWidget/pastePlain", actionPastePlain->isChecked());
+}
+
 QString CTextEditWidget::getHtml()
 {
     QString str = textEdit->toHtml();
@@ -207,38 +227,24 @@ void CTextEditWidget::textAlign(QAction *a)
 
 void CTextEditWidget::textStyle(int styleIndex)
 {
-    QTextCursor cursor = textEdit->textCursor();
-
-    if (styleIndex != 0)
+    if (styleIndex > 0)
     {
+        QTextCursor cursor = textEdit->textCursor();
         QTextListFormat::Style style = QTextListFormat::ListDisc;
 
-        switch (styleIndex)
-        {
-        default:
-        case 1:
-            style = QTextListFormat::ListDisc;
-            break;
-
-        case 2:
-            style = QTextListFormat::ListCircle;
-            break;
-
-        case 3:
-            style = QTextListFormat::ListSquare;
-            break;
-
-        case 4:
-            style = QTextListFormat::ListDecimal;
-            break;
-
-        case 5:
-            style = QTextListFormat::ListLowerAlpha;
-            break;
-
-        case 6:
-            style = QTextListFormat::ListUpperAlpha;
-            break;
+        static QTextListFormat::Style indexToFormat[] = {
+            QTextListFormat::ListDisc,
+            QTextListFormat::ListCircle,
+            QTextListFormat::ListSquare,
+            QTextListFormat::ListDecimal,
+            QTextListFormat::ListLowerAlpha,
+            QTextListFormat::ListUpperAlpha,
+            QTextListFormat::ListLowerRoman,
+            QTextListFormat::ListUpperRoman
+        };
+
+        if( (unsigned) styleIndex <= sizeof(indexToFormat)/sizeof(QTextListFormat::Style)) {
+            style = indexToFormat[styleIndex - 1];
         }
 
         cursor.beginEditBlock();
@@ -266,13 +272,36 @@ void CTextEditWidget::textStyle(int styleIndex)
     }
     else
     {
-        // ####
-        QTextBlockFormat bfmt;
-        bfmt.setObjectIndex(-1);
-        cursor.mergeBlockFormat(bfmt);
+        resetLayout();
     }
 }
 
+void CTextEditWidget::resetLayout()
+{
+    textEdit->textCursor().setBlockFormat(QTextBlockFormat());
+}
+
+void CTextEditWidget::resetFont()
+{
+    QTextCharFormat fmt;
+    fmt.setFontUnderline(false);
+    fmt.setFontWeight(QFont::Normal);
+    fmt.setFontItalic(false);
+    fmt.setForeground(QColor());
+
+    fmt.setFont(defaultFont);
+    fmt.setFontPointSize(defaultFont.pointSizeF());
+
+    QTextCursor cursor = textEdit->textCursor();
+    if (!cursor.hasSelection())
+    {
+        cursor.select(QTextCursor::WordUnderCursor);
+    }
+    cursor.setCharFormat(fmt);
+
+    fontChanged(defaultFont);
+    colorChanged(QColor());
+}
 
 void CTextEditWidget::textColor()
 {
@@ -346,7 +375,50 @@ void CTextEditWidget::currentCharFormatChanged(const QTextCharFormat &format)
 
 void CTextEditWidget::cursorPositionChanged()
 {
+    static QHash<QTextListFormat::Style, int> styleToIndex({
+        std::make_pair(QTextListFormat::ListDisc,       1),
+        std::make_pair(QTextListFormat::ListCircle,     2),
+        std::make_pair(QTextListFormat::ListSquare,     3),
+        std::make_pair(QTextListFormat::ListDecimal,    4),
+        std::make_pair(QTextListFormat::ListLowerAlpha, 5),
+        std::make_pair(QTextListFormat::ListUpperAlpha, 6),
+        std::make_pair(QTextListFormat::ListLowerRoman, 7),
+        std::make_pair(QTextListFormat::ListUpperRoman, 8)
+    });
+
     alignmentChanged(textEdit->alignment());
+
+    int listStyleIndex = 0;
+
+    QTextCursor cursor = textEdit->textCursor();
+    if(cursor.currentList())
+    {
+        QTextListFormat::Style style = cursor.currentList()->format().style();
+
+        if(styleToIndex.contains(style))
+        {
+            listStyleIndex = styleToIndex[ cursor.currentList()->format().style() ];
+        }
+    }
+
+    X______________BlockAllSignals______________X(this);
+    comboStyle->setCurrentIndex(listStyleIndex);
+
+    const QFont &font = cursor.charFormat().font();
+    comboFont->setCurrentFont(font);
+
+    int pointSize = font.pointSize();
+
+    if(-1 == pointSize)
+    {
+        // some texts (if pasted from px. a browser) have their font size
+        // specified in pixels instead of points, so we need to convert that
+        QFontInfo info(font);
+        pointSize = info.pointSize();
+    }
+    spinFontSize->setValue(pointSize);
+
+    X_____________UnBlockAllSignals_____________X(this);
 }
 
 
@@ -359,8 +431,14 @@ void CTextEditWidget::clipboardDataChanged()
 
 void CTextEditWidget::selectionChanged()
 {
-    const QTextCursor cursor = textEdit->textCursor();
-    actionDelete->setEnabled(cursor.selectionStart() != cursor.selectionEnd());
+    bool hasSel = textEdit->textCursor().hasSelection();
+
+    actionDelete->setEnabled     (hasSel);
+    removeFormat->setEnabled     (hasSel);
+    actionResetFont->setEnabled  (hasSel);
+    actionResetLayout->setEnabled(hasSel);
+
+    updateSelectionWindow();
 }
 
 void CTextEditWidget::customContextMenuRequested()
@@ -368,13 +446,62 @@ void CTextEditWidget::customContextMenuRequested()
     menuTextEdit->exec(QCursor::pos());
 }
 
-void CTextEditWidget::pastePlain()
+void CTextEditWidget::deleteSelected()
 {
-    QClipboard *clip = QApplication::clipboard();
-    textEdit->insertPlainText( clip->text() );
+    textEdit->insertPlainText(QString());
 }
 
-void CTextEditWidget::deleteSelected()
+void CTextEditWidget::textEditScrolled()
 {
-    textEdit->insertPlainText(QString());
+    updateSelectionWindow();
+}
+
+void CTextEditWidget::moveEvent(QMoveEvent *event)
+{
+    updateSelectionWindow();
+}
+
+void CTextEditWidget::pasteMode(QAction *action)
+{
+    textEdit->setPastePlain( action == actionPastePlain );
+
+    actionPaste->setIcon(action->icon());
+}
+
+bool CTextEditWidget::event(QEvent *event)
+{
+    if(event->type() == QEvent::WindowActivate)
+    {
+        updateSelectionWindow();
+    }
+    else if(event->type() == QEvent::WindowDeactivate)
+    {
+        selectionWindow->hide();
+    }
+    return QDialog::event(event);
+}
+
+void CTextEditWidget::updateSelectionWindow()
+{
+    const QTextCursor &cursor = textEdit->textCursor();
+    const QRect       &rect   = textEdit->cursorRect();
+
+    // don't show the selctionWindow, if there is no selection or
+    // the cursor is not visible
+    if(cursor.hasSelection() && rect.y() >= 0 && rect.y() <= textEdit->height())
+    {
+        int dy = cursor.anchor() < cursor.position()
+              ? (  6 + rect.height() )
+              : ( -6 - selectionWindow->height() );
+
+        int dx = - selectionWindow->width() / 2;
+
+        selectionWindow->move(textEdit->mapToGlobal(QPoint(rect.x(), rect.y())) + QPoint(dx, dy));
+        selectionWindow->show();
+    }
+    else
+    {
+        selectionWindow->hide();
+    }
+
 }
diff --git a/src/widgets/CTextEditWidget.h b/src/widgets/CTextEditWidget.h
index 47a0b40..a18eda6 100644
--- a/src/widgets/CTextEditWidget.h
+++ b/src/widgets/CTextEditWidget.h
@@ -1,51 +1,28 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the demonstration applications of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia.  For licensing terms and
-** conditions see http://qt.digia.com/licensing.  For further information
-** use the contact form at http://qt.digia.com/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU Lesser General Public License version 2.1 requirements
-** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** In addition, as a special exception, Digia gives you certain additional
-** rights.  These rights are described in the Digia Qt LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3.0 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.  Please review the following information to
-** ensure the GNU General Public License version 3.0 requirements will be
-** met: http://www.gnu.org/copyleft/gpl.html.
-**
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+/**********************************************************************************************
+    Copyright (C) 2016 Christian Eichler code at christian-eichler.de
+
+    Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+    Contact: http://www.qt-project.org/legal
+
+    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, version 3 of the License.
+
+    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 CTEXTEDITWIDGET_H
 #define CTEXTEDITWIDGET_H
 
 #include "ui_ITextEditWidget.h"
 #include <QDialog>
-#include <QPointer>
-#include <QTextBlockFormat>
 #include <QTextCharFormat>
 
 
@@ -53,15 +30,14 @@ class CTextEditWidget : public QDialog, private Ui::ITextEditWidget
 {
     Q_OBJECT
 public:
-    CTextEditWidget(QWidget * parent);
-    virtual ~CTextEditWidget() {}
+    CTextEditWidget(const QString &html, QWidget * parent);
+    virtual ~CTextEditWidget();
 
     QString getHtml();
-    void  setHtml(const QString& text)
-    {
-        textEdit->clear();
-        textEdit->insertHtml(text);
-    }
+
+protected:
+    void moveEvent(QMoveEvent *event) override;
+    bool event(QEvent *event) override;
 
 private slots:
     void textBold();
@@ -70,6 +46,8 @@ private slots:
     void textStyle(int styleIndex);
     void textColor();
     void textAlign(QAction *a);
+    void resetFont();
+    void resetLayout();
 
     void currentCharFormatChanged(const QTextCharFormat &format);
     void cursorPositionChanged();
@@ -77,16 +55,24 @@ private slots:
     void clipboardDataChanged();
 
     void customContextMenuRequested();
-    void pastePlain();
+    void pasteMode(QAction *action);
     void deleteSelected();
 
+    void textEditScrolled();
+
 private:
     void mergeFormatOnWordOrSelection(const QTextCharFormat &format);
     void fontChanged(const QFont &f);
     void colorChanged(const QColor &c);
     void alignmentChanged(Qt::Alignment a);
 
-    QAction * actionTextColor;
-    QMenu   * menuTextEdit;
+    void updateSelectionWindow();
+
+    QAction *actionTextColor;
+    QMenu   *menuTextEdit;
+    QWidget *selectionWindow;
+    QMenu   *removeFormat;
+
+    QFont defaultFont;
 };
-#endif                           //CTEXTEDITWIDGET_H
+#endif // CTEXTEDITWIDGET_H
diff --git a/src/widgets/CTextEditWidgetSelMenu.cpp b/src/widgets/CTextEditWidgetSelMenu.cpp
new file mode 100644
index 0000000..76544d5
--- /dev/null
+++ b/src/widgets/CTextEditWidgetSelMenu.cpp
@@ -0,0 +1,45 @@
+/**********************************************************************************************
+    Copyright (C) 2016 Christian Eichler code at christian-eichler.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+
+#include "CTextEditWidgetSelMenu.h"
+#include "helpers/Signals.h"
+
+#include <QtWidgets>
+
+CTextEditWidgetSelMenu::CTextEditWidgetSelMenu(QWidget *parent,
+    QAction *actionTextBold, QAction *actionTextItalic, QAction *actionTextUnderline,
+    QAction *actionCut,      QAction *actionCopy,       QAction *actionPaste
+)
+    : QWidget(parent, Qt::Tool | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint)
+{
+    setupUi(this);
+
+    toolBold->setDefaultAction(actionTextBold);
+    toolItalic->setDefaultAction(actionTextItalic);
+    toolUnder->setDefaultAction(actionTextUnderline);
+
+    toolCut->setDefaultAction(actionCut);
+    toolCopy->setDefaultAction(actionCopy);
+    toolPaste->setDefaultAction(actionPaste);
+
+    QRect geo = childrenRect();
+    geo.adjust(0, 0, 0, 1);
+    setGeometry(geo);
+}
+
diff --git a/src/widgets/CTextEditWidgetSelMenu.h b/src/widgets/CTextEditWidgetSelMenu.h
new file mode 100644
index 0000000..01b8194
--- /dev/null
+++ b/src/widgets/CTextEditWidgetSelMenu.h
@@ -0,0 +1,36 @@
+/**********************************************************************************************
+    Copyright (C) 2016 Christian Eichler code at christian-eichler.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+
+#ifndef CTEXTEDITWIDGETCONTEXTMENU_H
+#define CTEXTEDITWIDGETCONTEXTMENU_H
+
+#include "ui_ITextEditWidgetSelMenu.h"
+#include <QWindow>
+
+class CTextEditWidgetSelMenu : public QWidget, private Ui::ITextEditWidgetSelMenu
+{
+    Q_OBJECT
+public:
+    CTextEditWidgetSelMenu(QWidget *parent,
+        QAction *actionTextBold, QAction *actionTextItalic, QAction *actionTextUnderline,
+        QAction *actionCut,      QAction *actionCopy,       QAction *actionPaste
+    );
+    virtual ~CTextEditWidgetSelMenu() {}
+};
+#endif // CTEXTEDITWIDGETCONTEXTMENU_H
diff --git a/src/widgets/ITextEditWidget.ui b/src/widgets/ITextEditWidget.ui
index 35bb27c..1eb80df 100644
--- a/src/widgets/ITextEditWidget.ui
+++ b/src/widgets/ITextEditWidget.ui
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>427</width>
+    <width>429</width>
     <height>341</height>
    </rect>
   </property>
@@ -22,7 +22,7 @@
      <item>
       <widget class="QToolButton" name="toolUndo">
        <property name="text">
-        <string>...</string>
+        <string>Undo</string>
        </property>
        <property name="iconSize">
         <size>
@@ -35,7 +35,7 @@
      <item>
       <widget class="QToolButton" name="toolRedo">
        <property name="text">
-        <string>...</string>
+        <string>Redo</string>
        </property>
        <property name="iconSize">
         <size>
@@ -48,7 +48,7 @@
      <item>
       <widget class="QToolButton" name="toolCut">
        <property name="text">
-        <string>...</string>
+        <string>Cut</string>
        </property>
        <property name="iconSize">
         <size>
@@ -61,7 +61,7 @@
      <item>
       <widget class="QToolButton" name="toolCopy">
        <property name="text">
-        <string>...</string>
+        <string>Copy</string>
        </property>
        <property name="iconSize">
         <size>
@@ -74,7 +74,7 @@
      <item>
       <widget class="QToolButton" name="toolPaste">
        <property name="text">
-        <string>...</string>
+        <string>Paste</string>
        </property>
        <property name="iconSize">
         <size>
@@ -97,7 +97,7 @@
      <item>
       <widget class="QToolButton" name="toolLeft">
        <property name="text">
-        <string>...</string>
+        <string>A:L</string>
        </property>
        <property name="iconSize">
         <size>
@@ -110,7 +110,7 @@
      <item>
       <widget class="QToolButton" name="toolCenter">
        <property name="text">
-        <string>...</string>
+        <string>A:C</string>
        </property>
        <property name="iconSize">
         <size>
@@ -123,7 +123,7 @@
      <item>
       <widget class="QToolButton" name="toolRight">
        <property name="text">
-        <string>...</string>
+        <string>A:R</string>
        </property>
        <property name="iconSize">
         <size>
@@ -136,7 +136,7 @@
      <item>
       <widget class="QToolButton" name="toolBlock">
        <property name="text">
-        <string>...</string>
+        <string>A:B</string>
        </property>
        <property name="iconSize">
         <size>
@@ -169,7 +169,7 @@
      <item>
       <widget class="QToolButton" name="toolBold">
        <property name="text">
-        <string>...</string>
+        <string>B</string>
        </property>
        <property name="iconSize">
         <size>
@@ -182,7 +182,7 @@
      <item>
       <widget class="QToolButton" name="toolItalic">
        <property name="text">
-        <string>...</string>
+        <string>I</string>
        </property>
        <property name="iconSize">
         <size>
@@ -195,7 +195,7 @@
      <item>
       <widget class="QToolButton" name="toolUnder">
        <property name="text">
-        <string>...</string>
+        <string>U</string>
        </property>
        <property name="iconSize">
         <size>
@@ -206,9 +206,16 @@
       </widget>
      </item>
      <item>
+      <widget class="Line" name="line_2">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+      </widget>
+     </item>
+     <item>
       <widget class="QToolButton" name="toolColor">
        <property name="text">
-        <string>...</string>
+        <string>C</string>
        </property>
        <property name="iconSize">
         <size>
@@ -219,28 +226,89 @@
       </widget>
      </item>
      <item>
-      <widget class="QComboBox" name="comboStyle"/>
+      <widget class="QFontComboBox" name="comboFont"/>
      </item>
      <item>
-      <spacer>
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
+      <widget class="QSpinBox" name="spinFontSize">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>80</width>
+         <height>0</height>
+        </size>
        </property>
-       <property name="sizeHint" stdset="0">
+       <property name="maximumSize">
         <size>
-         <width>40</width>
-         <height>20</height>
+         <width>80</width>
+         <height>16777215</height>
         </size>
        </property>
-      </spacer>
+       <property name="minimum">
+        <number>1</number>
+       </property>
+       <property name="maximum">
+        <number>200</number>
+       </property>
+      </widget>
      </item>
     </layout>
    </item>
    <item>
-    <layout class="QHBoxLayout" name="horizontalLayout"/>
+    <widget class="QComboBox" name="comboStyle">
+     <item>
+      <property name="text">
+       <string>Standard</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Bullet List (Disc)</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Bullet List (Circle)</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Bullet List (Square)</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Ordered List (Decimal)</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Ordered List (Alpha lower)</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Ordered List (Alpha upper)</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Ordered List (Roman lower)</string>
+      </property>
+     </item>
+     <item>
+      <property name="text">
+       <string>Ordered List (Roman upper)</string>
+      </property>
+     </item>
+    </widget>
    </item>
    <item>
-    <widget class="QTextEdit" name="textEdit">
+    <widget class="CTextEdit" name="textEdit">
      <property name="contextMenuPolicy">
       <enum>Qt::CustomContextMenu</enum>
      </property>
@@ -303,10 +371,6 @@
    </property>
   </action>
   <action name="actionPaste">
-   <property name="icon">
-    <iconset resource="../resources.qrc">
-     <normaloff>:/icons/32x32/Paste.png</normaloff>:/icons/32x32/Paste.png</iconset>
-   </property>
    <property name="text">
     <string>Paste</string>
    </property>
@@ -420,15 +484,18 @@
    </property>
   </action>
   <action name="actionPastePlain">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
    <property name="icon">
     <iconset resource="../resources.qrc">
-     <normaloff>:/icons/32x32/Paste.png</normaloff>:/icons/32x32/Paste.png</iconset>
+     <normaloff>:/icons/32x32/PastePlain.png</normaloff>:/icons/32x32/PastePlain.png</iconset>
    </property>
    <property name="text">
-    <string>Paste (Plain)</string>
+    <string>Plain</string>
    </property>
    <property name="toolTip">
-    <string>Paste as Plain Text</string>
+    <string>Reset the text's format before pasting</string>
    </property>
   </action>
   <action name="actionSelectAll">
@@ -450,7 +517,45 @@
     <string>Delete</string>
    </property>
   </action>
+  <action name="actionResetFont">
+   <property name="text">
+    <string>Reset Font</string>
+   </property>
+   <property name="toolTip">
+    <string>Reset Font</string>
+   </property>
+  </action>
+  <action name="actionResetLayout">
+   <property name="text">
+    <string>Reset Layout</string>
+   </property>
+   <property name="toolTip">
+    <string>Reset Layout</string>
+   </property>
+  </action>
+  <action name="actionPasteNormal">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="icon">
+    <iconset resource="../resources.qrc">
+     <normaloff>:/icons/32x32/PasteNormal.png</normaloff>:/icons/32x32/PasteNormal.png</iconset>
+   </property>
+   <property name="text">
+    <string>Normal</string>
+   </property>
+   <property name="toolTip">
+    <string>Paste without resetting the text's format</string>
+   </property>
+  </action>
  </widget>
+ <customwidgets>
+  <customwidget>
+   <class>CTextEdit</class>
+   <extends>QTextEdit</extends>
+   <header>widgets/CTextEdit.h</header>
+  </customwidget>
+ </customwidgets>
  <resources>
   <include location="../resources.qrc"/>
  </resources>
diff --git a/src/widgets/ITextEditWidgetSelMenu.ui b/src/widgets/ITextEditWidgetSelMenu.ui
new file mode 100644
index 0000000..6e44689
--- /dev/null
+++ b/src/widgets/ITextEditWidgetSelMenu.ui
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ITextEditWidgetSelMenu</class>
+ <widget class="QWidget" name="ITextEditWidgetSelMenu">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>474</width>
+    <height>285</height>
+   </rect>
+  </property>
+  <widget class="QFrame" name="frame">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>1</y>
+     <width>78</width>
+     <height>51</height>
+    </rect>
+   </property>
+   <property name="frameShape">
+    <enum>QFrame::StyledPanel</enum>
+   </property>
+   <property name="frameShadow">
+    <enum>QFrame::Raised</enum>
+   </property>
+   <layout class="QVBoxLayout" name="verticalLayout_2">
+    <property name="spacing">
+     <number>1</number>
+    </property>
+    <property name="leftMargin">
+     <number>0</number>
+    </property>
+    <property name="topMargin">
+     <number>0</number>
+    </property>
+    <property name="rightMargin">
+     <number>0</number>
+    </property>
+    <property name="bottomMargin">
+     <number>0</number>
+    </property>
+    <item>
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <property name="spacing">
+       <number>0</number>
+      </property>
+      <property name="topMargin">
+       <number>1</number>
+      </property>
+      <item>
+       <widget class="QToolButton" name="toolBold">
+        <property name="text">
+         <string>B</string>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QToolButton" name="toolItalic">
+        <property name="text">
+         <string>I</string>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QToolButton" name="toolUnder">
+        <property name="text">
+         <string>U</string>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </item>
+    <item>
+     <layout class="QHBoxLayout" name="horizontalLayout_2">
+      <property name="spacing">
+       <number>0</number>
+      </property>
+      <item>
+       <widget class="QToolButton" name="toolCut">
+        <property name="text">
+         <string>Cut</string>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QToolButton" name="toolCopy">
+        <property name="text">
+         <string>Copy</string>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QToolButton" name="toolPaste">
+        <property name="text">
+         <string>Paste</string>
+        </property>
+        <property name="iconSize">
+         <size>
+          <width>16</width>
+          <height>16</height>
+         </size>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </item>
+   </layout>
+  </widget>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

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