[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