[qmapshack] 01/04: Imported Upstream version 1.2.2

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Thu Apr 30 20:17:29 UTC 2015


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

sebastic pushed a commit to branch master
in repository qmapshack.

commit 2afe7391c25523a0abba8929af0c6647bd7802b3
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Thu Apr 30 21:47:39 2015 +0200

    Imported Upstream version 1.2.2
---
 CMakeLists.txt                                     |   2 +-
 CMakeLists.txt.user                                |   2 +-
 changelog.txt                                      |   6 +
 src/CMainWindow.cpp                                |   9 +-
 src/CMakeLists.txt                                 |   4 +-
 src/canvas/CCanvas.cpp                             |  12 +-
 src/canvas/CCanvas.h                               |   1 +
 src/device/CDeviceTwoNav.cpp                       |  10 +
 src/device/IDevice.cpp                             |   4 +-
 src/device/IDevice.h                               |   2 +-
 src/gis/CGisListWks.cpp                            |  13 +
 src/gis/CGisListWks.h                              |   2 +
 src/gis/CGisWidget.cpp                             |  29 +-
 src/gis/CGisWidget.h                               |   9 +
 src/gis/IGisItem.h                                 |  24 +-
 src/gis/gpx/serialization.cpp                      |  24 ++
 src/gis/prj/CDetailsPrj.cpp                        |  50 +--
 src/gis/prj/CDetailsPrj.h                          |   2 +-
 src/gis/prj/IDetailsPrj.ui                         |  56 ++--
 src/gis/prj/IGisProject.cpp                        |  21 +-
 src/gis/prj/IGisProject.h                          |  14 +-
 src/gis/qms/serialization.cpp                      |   9 +-
 src/gis/trk/CGisItemTrk.cpp                        |   4 +-
 src/gis/wpt/CGisItemWpt.cpp                        | 344 ++++++++++++++++++++-
 src/gis/wpt/CGisItemWpt.h                          |  28 ++
 src/gis/wpt/CScrOptWpt.cpp                         |   7 +
 src/gis/wpt/CScrOptWpt.h                           |   1 +
 src/gis/wpt/IScrOptWpt.ui                          |  16 +-
 src/icons/32x32/Bubble.png                         | Bin 0 -> 697 bytes
 src/icons/32x32/MoveArrow.png                      | Bin 0 -> 742 bytes
 src/icons/32x32/SizeArrow.png                      | Bin 0 -> 663 bytes
 src/icons/48x48/Bubble.png                         | Bin 0 -> 909 bytes
 src/icons/48x48/MoveArrow.png                      | Bin 0 -> 933 bytes
 src/icons/48x48/SizeArrow.png                      | Bin 0 -> 807 bytes
 src/icons/Bubble.svg                               |  92 ++++++
 src/icons/MoveArrow.svg                            |  94 ++++++
 src/icons/SizeArrow.svg                            |  94 ++++++
 src/locale/qmapshack_cs.ts                         | 320 ++++++++++---------
 src/locale/qmapshack_de.ts                         | 268 +++++++++-------
 src/locale/qmapshack_es.ts                         | 230 ++++++++------
 src/locale/qmapshack_fr.ts                         | 230 ++++++++------
 src/mouse/CMouseNormal.cpp                         |   7 +-
 src/mouse/CMouseRangeTrk.h                         |   2 +-
 src/mouse/CMouseWptBubble.cpp                      |  88 ++++++
 .../wpt/CScrOptWpt.h => mouse/CMouseWptBubble.h}   |  37 +--
 src/resources.qrc                                  |   7 +
 src/units/CTimeZoneSetup.cpp                       |  20 +-
 src/units/ITimeZoneSetup.ui                        |  62 +++-
 src/units/IUnit.cpp                                |   3 +-
 src/units/IUnit.h                                  |   9 +-
 50 files changed, 1694 insertions(+), 574 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b5f6823..c0c0c2c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,7 +21,7 @@ set(APPLICATION_NAME qmapshack)
 
 set(APPLICATION_VERSION_MAJOR "1")
 set(APPLICATION_VERSION_MINOR "2")
-set(APPLICATION_VERSION_PATCH "1")
+set(APPLICATION_VERSION_PATCH "2")
 
 add_definitions(-DVER_MAJOR=${APPLICATION_VERSION_MAJOR} -DVER_MINOR=${APPLICATION_VERSION_MINOR} -DVER_STEP=${APPLICATION_VERSION_PATCH} -DAPPLICATION_NAME=${PROJECT_NAME})
 
diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user
index 8a3010e..68d683b 100644
--- a/CMakeLists.txt.user
+++ b/CMakeLists.txt.user
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 3.3.1, 2015-04-24T20:10:59. -->
+<!-- Written by QtCreator 3.3.1, 2015-04-29T20:35:21. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
diff --git a/changelog.txt b/changelog.txt
index 9af20c6..2eaf4c1 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,9 @@
+V 1.2.2
+* TwoNav: Find wpt files created from device in the TwoNavData folder
+* Wpt: Display waypoint description/comment as bubble
+* Add option to choose between long and short date/time format
+* Proj/Trk: Add new sort mode to attach waypoints only once to a track
+
 V 1.2.1
 * Add drag-n-drop of gpx and qms files to QMapShack
 * Fix wait cursor when asking to save project
diff --git a/src/CMainWindow.cpp b/src/CMainWindow.cpp
index 5b981c1..af25faa 100644
--- a/src/CMainWindow.cpp
+++ b/src/CMainWindow.cpp
@@ -154,9 +154,12 @@ CMainWindow::CMainWindow()
 
     QByteArray tz;
     IUnit::tz_mode_e tzmode;
+    bool useShortFormat;
     tz = cfg.value("Units/timezone", "UTC").toByteArray();
     tzmode = (IUnit::tz_mode_e)cfg.value("Units/timezone/mode", IUnit::eTZUtc).toInt();
-    IUnit::setTimeZoneSetup(tzmode, tz);
+    useShortFormat = cfg.value("Units/time/useShortFormat", false).toBool();
+
+    IUnit::setTimeZoneSetup(tzmode, tz, useShortFormat);
 
 
     QStatusBar * status = statusBar();
@@ -247,10 +250,12 @@ CMainWindow::~CMainWindow()
 
     QByteArray tz;
     IUnit::tz_mode_e tzmode;
-    IUnit::getTimeZoneSetup(tzmode, tz);
+    bool useShortFormat;
+    IUnit::getTimeZoneSetup(tzmode, tz, useShortFormat);
 
     cfg.setValue("Units/timezone", tz);
     cfg.setValue("Units/timezone/mode", tzmode);
+    cfg.setValue("Units/time/useShortFormat", useShortFormat);
 }
 
 bool CMainWindow::isScaleVisible()
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 86f6e11..f181c66 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -92,11 +92,12 @@ set( SRCS
     mouse/CMouseEditTrk.cpp
     mouse/CMouseEditArea.cpp
     mouse/CMouseRangeTrk.cpp
+    mouse/CMouseWptBubble.cpp
     mouse/CScrOptUnclutter.cpp    
     mouse/CScrOptPoint.cpp
     mouse/CScrOptEditLine.cpp
     mouse/CScrOptRange.cpp
-    mouse/CScrOptRangeTrk.cpp
+    mouse/CScrOptRangeTrk.cpp    
     gis/WptIcons.cpp
     gis/CGisDraw.cpp
     gis/IGisItem.cpp
@@ -274,6 +275,7 @@ set( HDRS
     mouse/CMouseEditTrk.h
     mouse/CMouseEditArea.h
     mouse/CMouseRangeTrk.h
+    mouse/CMouseWptBubble.h
     mouse/CScrOptUnclutter.h
     mouse/CScrOptPoint.h
     mouse/CScrOptEditLine.h
diff --git a/src/canvas/CCanvas.cpp b/src/canvas/CCanvas.cpp
index bad3d76..cedb124 100644
--- a/src/canvas/CCanvas.cpp
+++ b/src/canvas/CCanvas.cpp
@@ -34,6 +34,7 @@
 #include "mouse/CMouseMoveWpt.h"
 #include "mouse/CMouseNormal.h"
 #include "mouse/CMouseRangeTrk.h"
+#include "mouse/CMouseWptBubble.h"
 #include "plot/CPlotProfile.h"
 #include "units/IUnit.h"
 
@@ -231,7 +232,16 @@ void CCanvas::setMouseEditArea(CGisItemOvlArea& area)
     }
 }
 
-
+void CCanvas::setMouseWptBubble(const IGisItem::key_t& key)
+{
+    mouse->deleteLater();
+    mouse = new CMouseWptBubble(key, gis, this);
+    if(underMouse())
+    {
+        QApplication::restoreOverrideCursor();
+        QApplication::setOverrideCursor(*mouse);
+    }
+}
 
 void CCanvas::reportStatus(const QString& key, const QString& msg)
 {
diff --git a/src/canvas/CCanvas.h b/src/canvas/CCanvas.h
index e35198e..729f93f 100644
--- a/src/canvas/CCanvas.h
+++ b/src/canvas/CCanvas.h
@@ -116,6 +116,7 @@ public:
     void setMouseEditTrk(const QPointF& pt);
     void setMouseEditArea(CGisItemOvlArea& area);
     void setMouseEditArea(const QPointF& pt);
+    void setMouseWptBubble(const IGisItem::key_t& key);
 
     void showProfileAsWindow(bool yes);
     void showProfile(bool yes);
diff --git a/src/device/CDeviceTwoNav.cpp b/src/device/CDeviceTwoNav.cpp
index f810b3e..518c9db 100644
--- a/src/device/CDeviceTwoNav.cpp
+++ b/src/device/CDeviceTwoNav.cpp
@@ -40,7 +40,17 @@ CDeviceTwoNav::CDeviceTwoNav(const QString &path, const QString &key, const QStr
 
     pathData = "TwoNavData/Data/";
 
+
     QDir dirData(dir.absoluteFilePath(pathData));
+
+    {
+        IGisProject * project =  new CTwoNavProject(dirData.absolutePath(), this);
+        if(!project->isValid())
+        {
+            delete project;
+        }
+    }
+
     QStringList entries = dirData.entryList(QStringList("*.gpx"));
     foreach(const QString &entry, entries)
     {
diff --git a/src/device/IDevice.cpp b/src/device/IDevice.cpp
index b5f9615..85124c8 100644
--- a/src/device/IDevice.cpp
+++ b/src/device/IDevice.cpp
@@ -68,7 +68,7 @@ QString IDevice::getName() const
     return text(CGisListWks::eColumnName);
 }
 
-void IDevice::getItemByPos(const QPointF& pos, QList<IGisItem *> &items)
+void IDevice::getItemsByPos(const QPointF& pos, QList<IGisItem *> &items)
 {
     const int N = childCount();
     for(int n = 0; n < N; n++)
@@ -76,7 +76,7 @@ void IDevice::getItemByPos(const QPointF& pos, QList<IGisItem *> &items)
         IGisProject * project = dynamic_cast<IGisProject*>(child(n));
         if(project)
         {
-            project->getItemByPos(pos, items);
+            project->getItemsByPos(pos, items);
         }
     }
 }
diff --git a/src/device/IDevice.h b/src/device/IDevice.h
index f490673..d49f180 100644
--- a/src/device/IDevice.h
+++ b/src/device/IDevice.h
@@ -55,7 +55,7 @@ public:
 
     QString getName() const;
 
-    void getItemByPos(const QPointF& pos, QList<IGisItem *> &items);
+    void getItemsByPos(const QPointF& pos, QList<IGisItem *> &items);
     IGisItem * getItemByKey(const IGisItem::key_t& key);
     void editItemByKey(const IGisItem::key_t& key);
 
diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
index 3474fe5..c95c690 100644
--- a/src/gis/CGisListWks.cpp
+++ b/src/gis/CGisListWks.cpp
@@ -129,6 +129,8 @@ CGisListWks::CGisListWks(QWidget *parent)
     menuItemWpt->addAction(actionEditDetails);
     menuItemWpt->addAction(actionCopyItem);
     menuItemWpt->addSeparator();
+    actionBubbleWpt = menuItemWpt->addAction(QIcon("://icons/32x32/Bubble.png"),tr("Show Bubble"), this, SLOT(slotBubbleWpt()));
+    actionBubbleWpt->setCheckable(true);
     actionMoveWpt   = menuItemWpt->addAction(QIcon("://icons/32x32/WptMove.png"),tr("Move Waypoint"), this, SLOT(slotMoveWpt()));
     actionProjWpt   = menuItemWpt->addAction(QIcon("://icons/32x32/WptProj.png"),tr("Proj. Waypoint..."), this, SLOT(slotProjWpt()));
     menuItemWpt->addSeparator();
@@ -875,6 +877,7 @@ void CGisListWks::slotContextMenu(const QPoint& point)
                 break;
 
             case IGisItem::eTypeWpt:
+                actionBubbleWpt->setChecked(dynamic_cast<CGisItemWpt*>(gisItem)->hasBubble());
                 actionMoveWpt->setDisabled(isOnDevice);
                 actionProjWpt->setDisabled(isOnDevice);
                 menuItemWpt->exec(p);
@@ -1120,6 +1123,16 @@ void CGisListWks::slotProjWpt()
     }
 }
 
+void CGisListWks::slotBubbleWpt()
+{
+    CGisListWksEditLock lock(false, IGisItem::mutexItems);
+    CGisItemWpt * gisItem = dynamic_cast<CGisItemWpt*>(currentItem());
+    if(gisItem != 0)
+    {
+        CGisWidget::self().toggleWptBubble(gisItem->getKey());
+    }
+}
+
 void CGisListWks::slotMoveWpt()
 {
     CGisListWksEditLock lock(false, IGisItem::mutexItems);
diff --git a/src/gis/CGisListWks.h b/src/gis/CGisListWks.h
index 493eb4c..ce09f65 100644
--- a/src/gis/CGisListWks.h
+++ b/src/gis/CGisListWks.h
@@ -75,6 +75,7 @@ private slots:
     void slotItemChanged(QTreeWidgetItem * item, int column);
     void slotEditItem();
     void slotDeleteItem();
+    void slotBubbleWpt();
     void slotProjWpt();
     void slotMoveWpt();
     void slotFocusTrk(bool on);
@@ -120,6 +121,7 @@ private:
     QAction * actionEditDetails;
     QAction * actionCopyItem;
     QAction * actionDelete;
+    QAction * actionBubbleWpt;
     QAction * actionProjWpt;
     QAction * actionMoveWpt;
     QAction * actionFocusTrk;
diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
index e940451..3a3180d 100644
--- a/src/gis/CGisWidget.cpp
+++ b/src/gis/CGisWidget.cpp
@@ -228,13 +228,28 @@ void CGisWidget::getItemsByPos(const QPointF& pos, QList<IGisItem*>& items)
         IGisProject * project = dynamic_cast<IGisProject*>(item);
         if(project)
         {
-            project->getItemByPos(pos, items);
+            project->getItemsByPos(pos, items);
             continue;
         }
         IDevice * device = dynamic_cast<IDevice*>(item);
         if(device)
         {
-            device->getItemByPos(pos, items);
+            device->getItemsByPos(pos, items);
+            continue;
+        }
+    }
+}
+
+void CGisWidget::mouseMove(const QPointF& pos)
+{
+    QMutexLocker lock(&IGisItem::mutexItems);
+    for(int i = 0; i < treeWks->topLevelItemCount(); i++)
+    {
+        QTreeWidgetItem * item = treeWks->topLevelItem(i);
+        IGisProject * project = dynamic_cast<IGisProject*>(item);
+        if(project)
+        {
+            project->mouseMove(pos);
             continue;
         }
     }
@@ -395,6 +410,16 @@ void CGisWidget::moveWptByKey(const IGisItem::key_t& key)
     }
 }
 
+void CGisWidget::toggleWptBubble(const IGisItem::key_t &key)
+{
+    QMutexLocker lock(&IGisItem::mutexItems);
+    CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(getItemByKey(key));
+    if(wpt != 0)
+    {
+        wpt->toggleBubble();
+    }
+}
+
 void CGisWidget::focusTrkByKey(bool yes, const IGisItem::key_t& key)
 {
     QMutexLocker lock(&IGisItem::mutexItems);
diff --git a/src/gis/CGisWidget.h b/src/gis/CGisWidget.h
index 21b3edc..0afd5cd 100644
--- a/src/gis/CGisWidget.h
+++ b/src/gis/CGisWidget.h
@@ -171,7 +171,14 @@ public:
      */
     void draw(QPainter& p, const QPolygonF &viewport, CGisDraw *gis);
 
+    /**
+       @brief Receive the current mouse position
+
+       Iterate over all projects and pass the position
 
+       @param pos   the mouse position on the screen in pixel
+     */
+    void mouseMove(const QPointF& pos);
     /**
        @brief Draw all data that is time variant and can't wait for a full update
 
@@ -232,6 +239,8 @@ public:
      */
     void moveWptByKey(const IGisItem::key_t &key);
 
+    void toggleWptBubble(const IGisItem::key_t &key);
+
     /**
        @brief Set user focus to track
        @param yes       true if focus is set
diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
index de5273c..8202d3f 100644
--- a/src/gis/IGisItem.h
+++ b/src/gis/IGisItem.h
@@ -258,6 +258,27 @@ public:
     virtual bool isCloseTo(const QPointF& pos) = 0;
 
     /**
+       @brief Receive the current mouse position
+
+       The default does nothing. Override if needed.
+
+       @param pos   the mouse position on the screen in pixel
+     */
+    virtual void mouseMove(const QPointF& pos)
+    {
+        Q_UNUSED(pos);
+    }
+    void mousePress(const QPointF& pos)
+    {
+        Q_UNUSED(pos);
+    }
+    void mouseRelease(const QPointF& pos)
+    {
+        Q_UNUSED(pos);
+    }
+
+
+    /**
        @brief Query if this item is read only
        @return True if it is read only.
      */
@@ -448,9 +469,10 @@ protected:
 
     enum flags_e
     {
-        eFlagCreatedInQms  = 0x00000001
+        eFlagCreatedInQms   = 0x00000001
         ,eFlagWriteAllowed  = 0x00000002
         ,eFlagTainted       = 0x00000004
+        ,eFlagWptBubble     = 0x00000100
     };
 
 
diff --git a/src/gis/gpx/serialization.cpp b/src/gis/gpx/serialization.cpp
index 1dde452..3174975 100644
--- a/src/gis/gpx/serialization.cpp
+++ b/src/gis/gpx/serialization.cpp
@@ -258,6 +258,18 @@ static void readXml(const QDomNode& xml, IGisItem::history_t& history)
     }
 }
 
+static void readXml(const QDomNode& xml, const QString& tag, QPoint& offsetBubble, quint32& widthBubble)
+{
+    if(xml.namedItem(tag).isElement())
+    {
+        const QDomElement& xmlBubble = xml.namedItem(tag).toElement();
+        int x = xmlBubble.attributes().namedItem("xoff").nodeValue().toInt();
+        int y = xmlBubble.attributes().namedItem("yoff").nodeValue().toInt();
+        offsetBubble = QPoint(x,y);
+        widthBubble = xmlBubble.attributes().namedItem("width").nodeValue().toInt();
+    }
+}
+
 
 static void writeXml(QDomNode& xml, const QString& tag, qint32 val)
 {
@@ -372,6 +384,16 @@ static void writeXml(QDomNode& xml, const IGisItem::history_t& history)
     }
 }
 
+static void writeXml(QDomNode& xml, const QString& tag, const QPoint& offsetBubble, quint32 widthBubble)
+{
+    QDomElement elem = xml.ownerDocument().createElement(tag);
+    xml.appendChild(elem);
+
+    elem.setAttribute("xoff", offsetBubble.x());
+    elem.setAttribute("yoff", offsetBubble.y());
+    elem.setAttribute("width", widthBubble);
+}
+
 
 void IGisProject::readMetadata(const QDomNode& xml, metadata_t& metadata)
 {
@@ -515,6 +537,7 @@ void CGisItemWpt::readGpx(const QDomNode& xml)
         const QDomNode& ext = xml.namedItem("extensions");
         readXml(ext, "ql:key", key.item);
         readXml(ext, "ql:flags", flags);
+        readXml(ext, "ql:bubble", offsetBubble, widthBubble);
         readXml(ext, history);
 
         const QDomNode& wptx1 = ext.namedItem("wptx1:WaypointExtension");
@@ -547,6 +570,7 @@ void CGisItemWpt::save(QDomNode& gpx)
     xmlWpt.appendChild(xmlExt);
     writeXml(xmlExt, "ql:key", key.item);
     writeXml(xmlExt, "ql:flags", flags);
+    writeXml(xmlExt, "ql:bubble", offsetBubble, widthBubble);
     writeXml(xmlExt, history);
 
     // write other well known extensions
diff --git a/src/gis/prj/CDetailsPrj.cpp b/src/gis/prj/CDetailsPrj.cpp
index 97ccd04..b047959 100644
--- a/src/gis/prj/CDetailsPrj.cpp
+++ b/src/gis/prj/CDetailsPrj.cpp
@@ -40,9 +40,7 @@ CDetailsPrj::CDetailsPrj(IGisProject &prj, QWidget *parent)
     connect(textDesc, SIGNAL(anchorClicked(QUrl)), this, SLOT(slotLinkActivated(QUrl)));
     connect(toolPrint, SIGNAL(clicked()), this, SLOT(slotPrint()));
     connect(toolReload, SIGNAL(clicked()), this, SLOT(slotSetupGui()));
-    connect(radioSortByTime, SIGNAL(clicked()), this, SLOT(slotSortMode()));
-    connect(radioOrderAsProject, SIGNAL(clicked()), this, SLOT(slotSortMode()));
-    connect(radioSortAlongTrack, SIGNAL(clicked()), this, SLOT(slotSortMode()));
+    connect(comboSort, SIGNAL(currentIndexChanged(int)), this, SLOT(slotSortMode(int)));
     connect(toolLock, SIGNAL(clicked(bool)), this, SLOT(slotLock(bool)));
 
     slotSetupGui();
@@ -77,26 +75,9 @@ void CDetailsPrj::slotSetupGui()
     textDesc->document()->setTextWidth(textDesc->size().width() - 20);
     draw(*textDesc->document(), false);
 
-    radioOrderAsProject->blockSignals(true);
-    radioSortByTime->blockSignals(true);
-    radioSortAlongTrack->blockSignals(true);
-    switch(prj.getSorting())
-    {
-    case IGisProject::eSortNone:
-        radioOrderAsProject->setChecked(true);
-        break;
-
-    case IGisProject::eSortTime:
-        radioSortByTime->setChecked(true);
-        break;
-
-    case IGisProject::eSortTrack:
-        radioSortAlongTrack->setChecked(true);
-        break;
-    }
-    radioOrderAsProject->blockSignals(false);
-    radioSortByTime->blockSignals(false);
-    radioSortAlongTrack->blockSignals(false);
+    comboSort->blockSignals(true);
+    comboSort->setCurrentIndex(prj.getSorting());
+    comboSort->blockSignals(false);
 
     toolLock->blockSignals(true);
     toolLock->setChecked(true);
@@ -253,7 +234,7 @@ void CDetailsPrj::draw(QTextDocument& doc, bool printable)
     QProgressDialog progress(tr("Build diary..."), tr("Abort"), 0, 100, this);
     progress.setWindowModality(Qt::WindowModal);
 
-    if(radioSortAlongTrack->isChecked())
+    if(comboSort->currentIndex() > IGisProject::eSortTime)
     {
         drawByTrack(cursor, trks, wpts, progress, n, nItems, printable);
     }
@@ -300,7 +281,7 @@ void CDetailsPrj::drawByGroup(QTextCursor &cursor, QList<CGisItemTrk*>& trks, QL
 {
     int cnt, w = cursor.document()->textWidth();
 
-    if(radioSortByTime->isChecked())
+    if(comboSort->currentIndex() == IGisProject::eSortTime)
     {
         qSort(trks.begin(), trks.end(), sortTrkByTime);
         qSort(wpts.begin(), wpts.end(), sortWptByTime);
@@ -415,7 +396,7 @@ void CDetailsPrj::drawByTrack(QTextCursor& cursor, QList<CGisItemTrk *> &trks, Q
 {
     int cnt, w = cursor.document()->textWidth();
 
-    if(radioSortByTime->isChecked())
+    if(comboSort->currentIndex() == IGisProject::eSortTime)
     {
         qSort(trks.begin(), trks.end(), sortTrkByTime);
     }
@@ -712,20 +693,9 @@ void CDetailsPrj::slotLock(bool on)
     slotSetupGui();
 }
 
-void CDetailsPrj::slotSortMode()
-{
-    if(radioOrderAsProject->isChecked())
-    {
-        prj.setSorting(IGisProject::eSortNone);
-    }
-    else if(radioSortAlongTrack->isChecked())
-    {
-        prj.setSorting(IGisProject::eSortTrack);
-    }
-    else if(radioSortByTime->isChecked())
-    {
-        prj.setSorting(IGisProject::eSortTime);
-    }
 
+void CDetailsPrj::slotSortMode(int idx)
+{
+    prj.setSorting(IGisProject::sorting_e(idx));
     slotSetupGui();
 }
diff --git a/src/gis/prj/CDetailsPrj.h b/src/gis/prj/CDetailsPrj.h
index d8ebe77..100a2af 100644
--- a/src/gis/prj/CDetailsPrj.h
+++ b/src/gis/prj/CDetailsPrj.h
@@ -44,7 +44,7 @@ private slots:
     void slotLinkActivated(const QUrl& url);
     void slotPrint();
     void slotLock(bool on);
-    void slotSortMode();
+    void slotSortMode(int idx);
     void slotSetupGui();
 
 private:
diff --git a/src/gis/prj/IDetailsPrj.ui b/src/gis/prj/IDetailsPrj.ui
index 5e225f8..737635c 100644
--- a/src/gis/prj/IDetailsPrj.ui
+++ b/src/gis/prj/IDetailsPrj.ui
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>795</width>
+    <width>873</width>
     <height>511</height>
    </rect>
   </property>
@@ -59,45 +59,33 @@
       </widget>
      </item>
      <item>
-      <widget class="QRadioButton" name="radioOrderAsProject">
+      <widget class="QComboBox" name="comboSort">
        <property name="sizePolicy">
         <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
          <horstretch>0</horstretch>
          <verstretch>0</verstretch>
         </sizepolicy>
        </property>
-       <property name="text">
-        <string>Keep Order of Project</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QRadioButton" name="radioSortByTime">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="text">
-        <string>Sort By Time</string>
-       </property>
-       <property name="checked">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QRadioButton" name="radioSortAlongTrack">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="text">
-        <string>Sort Along Track</string>
-       </property>
+       <item>
+        <property name="text">
+         <string>Keep order of project</string>
+        </property>
+       </item>
+       <item>
+        <property name="text">
+         <string>Sort by time</string>
+        </property>
+       </item>
+       <item>
+        <property name="text">
+         <string>Sort along track (multiple)</string>
+        </property>
+       </item>
+       <item>
+        <property name="text">
+         <string>Sort along track (single)</string>
+        </property>
+       </item>
       </widget>
      </item>
      <item>
diff --git a/src/gis/prj/IGisProject.cpp b/src/gis/prj/IGisProject.cpp
index bee8973..6b15cf7 100644
--- a/src/gis/prj/IGisProject.cpp
+++ b/src/gis/prj/IGisProject.cpp
@@ -311,7 +311,7 @@ IGisItem * IGisProject::getItemByKey(const IGisItem::key_t& key)
     return 0;
 }
 
-void IGisProject::getItemByPos(const QPointF& pos, QList<IGisItem *> &items)
+void IGisProject::getItemsByPos(const QPointF& pos, QList<IGisItem *> &items)
 {
     if(!isVisible())
     {
@@ -333,6 +333,25 @@ void IGisProject::getItemByPos(const QPointF& pos, QList<IGisItem *> &items)
     }
 }
 
+void IGisProject::mouseMove(const QPointF& pos)
+{
+    if(!isVisible())
+    {
+        return;
+    }
+
+    for(int i = 0; i < childCount(); i++)
+    {
+        IGisItem * item = dynamic_cast<IGisItem*>(child(i));
+        if(item == 0)
+        {
+            continue;
+        }
+
+        item->mouseMove(pos);
+    }
+}
+
 
 bool IGisProject::delItemByKey(const IGisItem::key_t& key, QMessageBox::StandardButtons& last)
 {
diff --git a/src/gis/prj/IGisProject.h b/src/gis/prj/IGisProject.h
index f762f48..60b1700 100644
--- a/src/gis/prj/IGisProject.h
+++ b/src/gis/prj/IGisProject.h
@@ -48,7 +48,8 @@ public:
     {
         eSortNone
         , eSortTime
-        , eSortTrack
+        , eSortTrackWithDouble
+        , eSortTrackWithoutDouble
     };
 
     struct person_t
@@ -233,7 +234,16 @@ public:
        @param pos       the coordinate on the screen in pixel
        @param items     a list the item's pointer is stored to.
      */
-    void getItemByPos(const QPointF& pos, QList<IGisItem*>& items);
+    void getItemsByPos(const QPointF& pos, QList<IGisItem*>& items);
+
+    /**
+       @brief Receive the current mouse position
+
+       Iterate over all items and pass the position
+
+       @param pos   the mouse position on the screen in pixel
+     */
+    virtual void mouseMove(const QPointF& pos);
 
     /**
        @brief Delete items with matching key
diff --git a/src/gis/qms/serialization.cpp b/src/gis/qms/serialization.cpp
index dde4448..14fb528 100644
--- a/src/gis/qms/serialization.cpp
+++ b/src/gis/qms/serialization.cpp
@@ -27,7 +27,7 @@
 #include <QtWidgets>
 
 #define VER_TRK         quint8(1)
-#define VER_WPT         quint8(1)
+#define VER_WPT         quint8(2)
 #define VER_RTE         quint8(1)
 #define VER_AREA        quint8(1)
 #define VER_LINK        quint8(1)
@@ -471,6 +471,11 @@ QDataStream& CGisItemWpt::operator<<(QDataStream& stream)
     in >> wpt;
     in >> geocache;
     in >> images;
+    if(version > 1)
+    {
+        in >> offsetBubble;
+        in >> widthBubble;
+    }
 
     setIcon();
     setText(CGisListWks::eColumnName, wpt.name);
@@ -492,6 +497,8 @@ QDataStream& CGisItemWpt::operator>>(QDataStream& stream)
     out << wpt;
     out << geocache;
     out << images;
+    out << offsetBubble;
+    out << widthBubble;
 
     stream.writeRawData(MAGIC_WPT, MAGIC_SIZE);
     stream << VER_WPT;
diff --git a/src/gis/trk/CGisItemTrk.cpp b/src/gis/trk/CGisItemTrk.cpp
index 19f0e1a..7328347 100644
--- a/src/gis/trk/CGisItemTrk.cpp
+++ b/src/gis/trk/CGisItemTrk.cpp
@@ -990,6 +990,8 @@ void CGisItemTrk::findWaypointsCloseBy()
         return;
     }
 
+    bool withDoubles = project->getSorting() != IGisProject::eSortTrackWithoutDouble;
+
     QApplication::setOverrideCursor(Qt::WaitCursor);
 
     QVector<pointDP> line;
@@ -1079,7 +1081,7 @@ void CGisItemTrk::findWaypointsCloseBy()
                     minD  = d;
                 }
             }
-            else if(d > WPT_FOCUS_DIST_OUT)
+            else if(withDoubles && (d > WPT_FOCUS_DIST_OUT))
             {
                 trkpt_t * trkpt = const_cast<trkpt_t*>(getTrkPtByVisibleIndex(index));
                 if(trkpt)
diff --git a/src/gis/wpt/CGisItemWpt.cpp b/src/gis/wpt/CGisItemWpt.cpp
index ed7521e..c5e0c78 100644
--- a/src/gis/wpt/CGisItemWpt.cpp
+++ b/src/gis/wpt/CGisItemWpt.cpp
@@ -45,6 +45,16 @@ CGisItemWpt::CGisItemWpt(const QPointF& pos, const QString& name, const QString
     : IGisItem(project, eTypeWpt, NOIDX)
     , proximity(NOFLOAT)
     , posScreen(NOPOINTF)
+    , doBubble(false)
+    , doSpecialCursor(false)
+    , doBubbleMove(false)
+    , doBubbleSize(false)
+    , mouseIsOverBubble(false)
+    , rectBubbleMove(0,0,16,16)
+    , rectBubbleEdit(0,0,16,16)
+    , rectBubbleSize(0,0,16,16)
+    , offsetBubble(-320, -150)
+    , widthBubble(300)
 {
     wpt.name    = name;
     wpt.sym     = icon;
@@ -67,6 +77,16 @@ CGisItemWpt::CGisItemWpt(const QPointF& pos, const CGisItemWpt& parentWpt, IGisP
     : IGisItem(project, eTypeWpt, NOIDX)
     , proximity(NOFLOAT)
     , posScreen(NOPOINTF)
+    , doBubble(false)
+    , doSpecialCursor(false)
+    , doBubbleMove(false)
+    , doBubbleSize(false)
+    , mouseIsOverBubble(false)
+    , rectBubbleMove(0,0,16,16)
+    , rectBubbleEdit(0,0,16,16)
+    , rectBubbleSize(0,0,16,16)
+    , offsetBubble(-320, -150)
+    , widthBubble(300)
 {
     *this = parentWpt;
     wpt.lon     = pos.x();
@@ -91,6 +111,16 @@ CGisItemWpt::CGisItemWpt(const CGisItemWpt &parentWpt, IGisProject *project, int
     : IGisItem(project, eTypeWpt, idx)
     , proximity(NOFLOAT)
     , posScreen(NOPOINTF)
+    , doBubble(false)
+    , doSpecialCursor(false)
+    , doBubbleMove(false)
+    , doBubbleSize(false)
+    , mouseIsOverBubble(false)
+    , rectBubbleMove(0,0,16,16)
+    , rectBubbleEdit(0,0,16,16)
+    , rectBubbleSize(0,0,16,16)
+    , offsetBubble(-320, -150)
+    , widthBubble(300)
 {
     *this = parentWpt;
     key.project = project->getKey();
@@ -125,6 +155,16 @@ CGisItemWpt::CGisItemWpt(const QDomNode &xml, IGisProject *project)
     : IGisItem(project, eTypeWpt, project->childCount())
     , proximity(NOFLOAT)
     , posScreen(NOPOINTF)
+    , doBubble(false)
+    , doSpecialCursor(false)
+    , doBubbleMove(false)
+    , doBubbleSize(false)
+    , mouseIsOverBubble(false)
+    , rectBubbleMove(0,0,16,16)
+    , rectBubbleEdit(0,0,16,16)
+    , rectBubbleSize(0,0,16,16)
+    , offsetBubble(-320, -150)
+    , widthBubble(300)
 {
     readGpx(xml);
     boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);
@@ -138,6 +178,16 @@ CGisItemWpt::CGisItemWpt(const history_t& hist, IGisProject * project)
     : IGisItem(project, eTypeWpt, project->childCount())
     , proximity(NOFLOAT)
     , posScreen(NOPOINTF)
+    , doBubble(false)
+    , doSpecialCursor(false)
+    , doBubbleMove(false)
+    , doBubbleSize(false)
+    , mouseIsOverBubble(false)
+    , rectBubbleMove(0,0,16,16)
+    , rectBubbleEdit(0,0,16,16)
+    , rectBubbleSize(0,0,16,16)
+    , offsetBubble(-320, -150)
+    , widthBubble(300)
 {
     history = hist;
     loadHistory(hist.histIdxCurrent);
@@ -148,6 +198,16 @@ CGisItemWpt::CGisItemWpt(quint64 id, QSqlDatabase& db, IGisProject * project)
     : IGisItem(project, eTypeWpt, NOIDX)
     , proximity(NOFLOAT)
     , posScreen(NOPOINTF)
+    , doBubble(false)
+    , doSpecialCursor(false)
+    , doBubbleMove(false)
+    , doBubbleSize(false)
+    , mouseIsOverBubble(false)
+    , rectBubbleMove(0,0,16,16)
+    , rectBubbleEdit(0,0,16,16)
+    , rectBubbleSize(0,0,16,16)
+    , offsetBubble(-320, -150)
+    , widthBubble(300)
 {
     loadFromDb(id, db);
     boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);
@@ -157,6 +217,16 @@ CGisItemWpt::CGisItemWpt(const CTwoNavProject::wpt_t &tnvWpt, IGisProject * proj
     : IGisItem(project, eTypeWpt, NOIDX)
     , proximity(NOFLOAT)
     , posScreen(NOPOINTF)
+    , doBubble(false)
+    , doSpecialCursor(false)
+    , doBubbleMove(false)
+    , doBubbleSize(false)
+    , mouseIsOverBubble(false)
+    , rectBubbleMove(0,0,16,16)
+    , rectBubbleEdit(0,0,16,16)
+    , rectBubbleSize(0,0,16,16)
+    , offsetBubble(-320, -150)
+    , widthBubble(300)
 {
     readTwoNav(tnvWpt);
     boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);
@@ -425,10 +495,14 @@ void CGisItemWpt::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
     posScreen = QPointF(wpt.lon * DEG_TO_RAD, wpt.lat * DEG_TO_RAD);
     if(!isVisible(posScreen, viewport, gis))
     {
-        posScreen = NOPOINTF;
+        rectBubble  = QRect();
+        posScreen   = NOPOINTF;
         return;
     }
     gis->convertRad2Px(posScreen);
+
+    drawBubble(p);
+
     p.drawPixmap(posScreen - focus, icon);
 
     if(proximity != NOFLOAT)
@@ -451,6 +525,37 @@ void CGisItemWpt::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
     blockedAreas << QRectF(posScreen - focus, icon.size());
 }
 
+void CGisItemWpt::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
+{
+    if(mouseIsOverBubble && !doBubbleMove && !doBubbleSize && rectBubble.isValid() && !isReadOnly())
+    {
+        QPainterPath clip;
+        clip.addRoundedRect(rectBubble, 5, 5);
+        p.setClipPath(clip);
+
+        QRect barTop(rectBubble.topLeft(), QSize(rectBubble.width(), 26));
+        QRect barBottom(barTop);
+        barBottom.moveBottomLeft(rectBubble.bottomLeft());
+        barBottom.adjust(1,0,-1,-1);
+        barTop.adjust(1,1,-1,0);
+
+        p.setPen(Qt::NoPen);
+        p.setBrush(QColor(200,200,255,150));
+        p.drawRect(barTop);
+        p.drawRect(barBottom);
+
+        p.setBrush(Qt::white);
+        p.drawRoundedRect(rectBubbleMove.adjusted(-2,-2,2,2), 3,3);
+        p.drawRoundedRect(rectBubbleEdit.adjusted(-2,-2,2,2), 3,3);
+        p.drawRoundedRect(rectBubbleSize.adjusted(-2,-2,2,2), 3,3);
+
+        p.drawPixmap(rectBubbleMove, QPixmap("://icons/32x32/MoveArrow.png"));
+        p.drawPixmap(rectBubbleEdit, QPixmap("://icons/32x32/EditDetails.png"));
+        p.drawPixmap(rectBubbleSize, QPixmap("://icons/32x32/SizeArrow.png"));
+    }
+}
+
+
 void CGisItemWpt::drawLabel(QPainter& p, const QPolygonF &viewport, QList<QRectF> &blockedAreas, const QFontMetricsF &fm, CGisDraw *gis)
 {
     if(posScreen == NOPOINTF)
@@ -500,6 +605,103 @@ void CGisItemWpt::drawHighlight(QPainter& p)
     p.drawImage(posScreen - QPointF(31,31), QImage("://cursors/wptHighlight.png"));
 }
 
+void CGisItemWpt::drawBubble(QPainter& p)
+{
+    if(!(flags & eFlagWptBubble))
+    {
+        return;
+    }
+
+    QString str = QString("<b>%1</b>").arg(getName());
+
+    if(!removeHtml(wpt.desc).simplified().isEmpty())
+    {
+        str += QString("<p>%1</p>").arg(wpt.desc);
+    }
+
+    if(!removeHtml(wpt.cmt).simplified().isEmpty())
+    {
+        str += QString("<p>%1</p>").arg(wpt.cmt);
+    }
+
+    QTextDocument doc;
+    doc.setHtml(str);
+    doc.setTextWidth(widthBubble);
+
+    rectBubble.setWidth(widthBubble);
+    rectBubble.setHeight(doc.size().height());
+
+    QPoint posBubble = posScreen.toPoint() + offsetBubble;
+    rectBubble.moveTopLeft(posBubble);
+
+    rectBubbleMove.moveTopLeft(rectBubble.topLeft() + QPoint(5,5));
+    rectBubbleEdit.moveTopLeft(rectBubbleMove.topRight() + QPoint(7,0));
+    rectBubbleSize.moveBottomRight(rectBubble.bottomRight() - QPoint(5,5));
+
+    QPolygonF frame = makePolyline(posScreen, rectBubble);
+    p.setPen(CCanvas::penBorderGray);
+    p.setBrush(CCanvas::brushBackWhite);
+    p.drawPolygon(frame);
+
+    p.save();
+    p.translate(posBubble);
+    p.setPen(Qt::black);
+    doc.drawContents(&p);
+    p.restore();
+}
+
+QPolygonF CGisItemWpt::makePolyline(const QPointF& anchor, const QRectF& r)
+{
+    QPolygonF poly1, poly2;
+    poly1 << r.topLeft() << r.topRight() << r.bottomRight() << r.bottomLeft();
+
+    if(!r.contains(anchor))
+    {
+        qreal w = rectBubble.width()>>1;
+        qreal h = rectBubble.height()>>1;
+
+        if(w > 30)
+        {
+            w = 30;
+        }
+        if(h > 30)
+        {
+            h = 30;
+        }
+
+        w = h = qMin(w,h);
+
+        if(anchor.x() < r.left())
+        {
+            poly2 << anchor << (r.center() + QPoint(0,-h)) << (r.center() + QPoint(0,h)) << anchor;
+        }
+        else if(r.right() < anchor.x())
+        {
+            poly2 << anchor << (r.center() + QPoint(0,-h)) << (r.center() + QPoint(0,h)) << anchor;
+        }
+        else if(anchor.y() < r.top())
+        {
+            poly2 << anchor << (r.center() + QPoint(-w,0)) << (r.center() + QPoint(w,0)) << anchor;
+        }
+        else if(r.bottom() < anchor.y())
+        {
+            poly2 << anchor << (r.center() + QPoint(-w,0)) << (r.center() + QPoint(w,0)) << anchor;
+        }
+
+        QPainterPath path1;
+        path1.addRoundedRect(r,5,5);
+        QPainterPath path2;
+        path2.addPolygon(poly2);
+
+        path1 = path1.united(path2);
+
+        poly1 = path1.toFillPolygon();
+    }
+
+    return poly1;
+}
+
+
 void CGisItemWpt::removeLinksByType(const QString& type)
 {
     QList<IGisItem::link_t>::iterator link = wpt.links.begin();
@@ -515,3 +717,143 @@ void CGisItemWpt::removeLinksByType(const QString& type)
         link++;
     }
 }
+
+void CGisItemWpt::mouseMove(const QPointF& pos)
+{
+    if(!hasBubble() || isReadOnly())
+    {
+        return;
+    }
+
+    if(!processMouseOverBubble(pos.toPoint()))
+    {
+        if(mouseIsOverBubble)
+        {
+            if(!rectBubble.contains(pos.toPoint()))
+            {
+                CCanvas * canvas = CMainWindow::self().getVisibleCanvas();
+                if(canvas)
+                {
+                    doBubbleMove = doBubbleSize = false;
+                    canvas->resetMouse();
+                }
+                mouseIsOverBubble = false;
+            }
+        }
+        else
+        {
+            if(rectBubble.contains(pos.toPoint()))
+            {
+                CCanvas * canvas = CMainWindow::self().getVisibleCanvas();
+                if(canvas)
+                {
+                    doBubbleMove = doBubbleSize = false;
+                    canvas->setMouseWptBubble(getKey());
+                }
+                mouseIsOverBubble = true;
+            }
+        }
+    }
+}
+
+void CGisItemWpt::mousePress(const QPointF& pos)
+{
+    if(!mouseIsOverBubble)
+    {
+        return;
+    }
+
+    QPoint pos1 = pos.toPoint();
+
+    if(rectBubbleMove.contains(pos1))
+    {
+        offsetMouse = pos1 - rectBubble.topLeft();
+        doBubbleMove = true;
+    }
+    else if(rectBubbleEdit.contains(pos1))
+    {
+        CCanvas * canvas = CMainWindow::self().getVisibleCanvas();
+        if(canvas)
+        {
+            doBubbleMove = doBubbleSize = false;
+            canvas->resetMouse();
+        }
+        mouseIsOverBubble = false;
+        edit();
+    }
+    else if(rectBubbleSize.contains(pos1))
+    {
+        offsetMouse = pos1 - rectBubble.bottomRight();
+        doBubbleSize = true;
+    }
+}
+
+void CGisItemWpt::mouseRelease(const QPointF& pos)
+{
+    if(!mouseIsOverBubble)
+    {
+        return;
+    }
+
+    updateHistory();
+    doBubbleMove = doBubbleSize = false;
+}
+
+void CGisItemWpt::toggleBubble()
+{
+    if(flags & eFlagWptBubble)
+    {
+        flags &= ~eFlagWptBubble;
+    }
+    else
+    {
+        flags |= eFlagWptBubble;
+    }
+    updateHistory();
+}
+
+bool CGisItemWpt::processMouseOverBubble(const QPoint &pos)
+{
+    CCanvas * canvas = CMainWindow::self().getVisibleCanvas();
+    if(!canvas || !mouseIsOverBubble)
+    {
+        return false;
+    }
+
+    if(doBubbleMove)
+    {
+        offsetBubble  = pos - posScreen.toPoint();
+        offsetBubble -= offsetMouse;
+        canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
+        return true;
+    }
+    else if(doBubbleSize)
+    {
+        qDebug() << offsetMouse;
+        int width  = pos.x() - rectBubble.left() - offsetMouse.x();
+        if(width > 50)
+        {
+            widthBubble = width;
+        }
+        canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
+        return true;
+    }
+    else if(rectBubbleMove.contains(pos) || rectBubbleEdit.contains(pos) || rectBubbleSize.contains(pos))
+    {
+        if(!doSpecialCursor)
+        {
+            QApplication::setOverrideCursor(Qt::PointingHandCursor);
+            doSpecialCursor = true;
+        }
+    }
+    else
+    {
+        if(doSpecialCursor)
+        {
+            QApplication::restoreOverrideCursor();
+            doSpecialCursor = false;
+        }
+    }
+
+    return false;
+}
diff --git a/src/gis/wpt/CGisItemWpt.h b/src/gis/wpt/CGisItemWpt.h
index 1b0075d..5c5b4cf 100644
--- a/src/gis/wpt/CGisItemWpt.h
+++ b/src/gis/wpt/CGisItemWpt.h
@@ -265,9 +265,13 @@ public:
     }
 
     void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
+    void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis);
     void drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
     void drawHighlight(QPainter& p);
     bool isCloseTo(const QPointF& pos);
+    void mouseMove(const QPointF& pos);
+    void mousePress(const QPointF& pos);
+    void mouseRelease(const QPointF& pos);
     bool isGeocache()
     {
         return geocache.hasData;
@@ -287,9 +291,16 @@ public:
      */
     void removeLinksByType(const QString& type);
 
+    void toggleBubble();
+    bool hasBubble()
+    {
+        return bool(flags & eFlagWptBubble);
+    }
+
     static bool getNewWptData(QPointF& pt, QString& icon, QString& name);
 
 
+
 private:
     void setIcon();
     void setSymbol();
@@ -297,6 +308,9 @@ private:
     void readTwoNav(const CTwoNavProject::wpt_t &tnvWpt);
     void readGcExt(const QDomNode& xmlCache);
     void writeGcExt(QDomNode& xmlCache);
+    void drawBubble(QPainter& p);
+    QPolygonF makePolyline(const QPointF& anchor, const QRectF& r);
+    bool processMouseOverBubble(const QPoint &pos);
 
 
     static key_t keyUserFocus;
@@ -318,6 +332,20 @@ private:
     // --- stop all waypoint data ----
 
     QPointer<CScrOptWpt> scrOpt;
+
+    bool doBubble;
+    bool doSpecialCursor;
+    bool doBubbleMove;
+    bool doBubbleSize;
+    bool mouseIsOverBubble;
+    QRect rectBubble;
+    QRect rectBubbleMove;
+    QRect rectBubbleEdit;
+    QRect rectBubbleSize;
+
+    QPoint offsetMouse;
+    QPoint offsetBubble;
+    quint32 widthBubble;
 };
 
 #endif //CGISITEMWPT_H
diff --git a/src/gis/wpt/CScrOptWpt.cpp b/src/gis/wpt/CScrOptWpt.cpp
index 765baa4..98d9faa 100644
--- a/src/gis/wpt/CScrOptWpt.cpp
+++ b/src/gis/wpt/CScrOptWpt.cpp
@@ -42,6 +42,7 @@ CScrOptWpt::CScrOptWpt(CGisItemWpt *wpt, const QPoint& point, IMouse *parent)
     toolProj->setDisabled(wpt->isGeocache() || wpt->isOnDevice());
     toolMove->setDisabled(wpt->isGeocache() || wpt->isOnDevice());
     photoAlbum->reload(wpt->getImages());
+    toolBubble->setChecked(wpt->hasBubble());
 
     anchor = wpt->getPointCloseBy(point);
     move(anchor.toPoint() + QPoint(-width()/2,SCR_OPT_OFFSET));
@@ -52,6 +53,7 @@ CScrOptWpt::CScrOptWpt(CGisItemWpt *wpt, const QPoint& point, IMouse *parent)
     connect(toolCopy, SIGNAL(clicked()), this, SLOT(slotCopy()));
     connect(toolMove, SIGNAL(clicked()), this, SLOT(slotMove()));
     connect(toolProj, SIGNAL(clicked()), this, SLOT(slotProj()));
+    connect(toolBubble, SIGNAL(clicked()), this, SLOT(slotBubble()));
 
     adjustSize();
 }
@@ -90,6 +92,11 @@ void CScrOptWpt::slotProj()
     deleteLater();
 }
 
+void CScrOptWpt::slotBubble()
+{
+    CGisWidget::self().toggleWptBubble(key);
+    deleteLater();
+}
 
 void CScrOptWpt::draw(QPainter& p)
 {
diff --git a/src/gis/wpt/CScrOptWpt.h b/src/gis/wpt/CScrOptWpt.h
index 672ace9..3e6ed12 100644
--- a/src/gis/wpt/CScrOptWpt.h
+++ b/src/gis/wpt/CScrOptWpt.h
@@ -43,6 +43,7 @@ private slots:
     void slotCopy();
     void slotMove();
     void slotProj();
+    void slotBubble();
 
 private:
     IGisItem::key_t key;
diff --git a/src/gis/wpt/IScrOptWpt.ui b/src/gis/wpt/IScrOptWpt.ui
index e5e46a4..e091f37 100644
--- a/src/gis/wpt/IScrOptWpt.ui
+++ b/src/gis/wpt/IScrOptWpt.ui
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>500</width>
-    <height>155</height>
+    <height>157</height>
    </rect>
   </property>
   <property name="sizePolicy">
@@ -93,6 +93,20 @@
       </widget>
      </item>
      <item>
+      <widget class="QToolButton" name="toolBubble">
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset resource="../../resources.qrc">
+         <normaloff>:/icons/32x32/Bubble.png</normaloff>:/icons/32x32/Bubble.png</iconset>
+       </property>
+       <property name="checkable">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
       <widget class="QToolButton" name="toolMove">
        <property name="toolTip">
         <string><html><head/><body><p>Move waypoint to a new location.</p></body></html></string>
diff --git a/src/icons/32x32/Bubble.png b/src/icons/32x32/Bubble.png
new file mode 100644
index 0000000..d23c409
Binary files /dev/null and b/src/icons/32x32/Bubble.png differ
diff --git a/src/icons/32x32/MoveArrow.png b/src/icons/32x32/MoveArrow.png
new file mode 100644
index 0000000..36da43b
Binary files /dev/null and b/src/icons/32x32/MoveArrow.png differ
diff --git a/src/icons/32x32/SizeArrow.png b/src/icons/32x32/SizeArrow.png
new file mode 100644
index 0000000..2720cec
Binary files /dev/null and b/src/icons/32x32/SizeArrow.png differ
diff --git a/src/icons/48x48/Bubble.png b/src/icons/48x48/Bubble.png
new file mode 100644
index 0000000..42a3fa4
Binary files /dev/null and b/src/icons/48x48/Bubble.png differ
diff --git a/src/icons/48x48/MoveArrow.png b/src/icons/48x48/MoveArrow.png
new file mode 100644
index 0000000..7155a01
Binary files /dev/null and b/src/icons/48x48/MoveArrow.png differ
diff --git a/src/icons/48x48/SizeArrow.png b/src/icons/48x48/SizeArrow.png
new file mode 100644
index 0000000..2fb19fb
Binary files /dev/null and b/src/icons/48x48/SizeArrow.png differ
diff --git a/src/icons/Bubble.svg b/src/icons/Bubble.svg
new file mode 100644
index 0000000..5982741
--- /dev/null
+++ b/src/icons/Bubble.svg
@@ -0,0 +1,92 @@
+<?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.48.5 r10040"
+   sodipodi:docname="Bubble.svg">
+  <defs
+     id="defs2987" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11"
+     inkscape:cx="42.529442"
+     inkscape:cy="29.596654"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="996"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-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">
+    <g
+       id="g3008"
+       transform="matrix(1.1764706,0,0,1.8150614,4.8209446,-14.054133)"
+       style="fill:#f9f9f9">
+      <path
+         sodipodi:nodetypes="cccccccc"
+         inkscape:connector-curvature="0"
+         id="path4482"
+         d="m 37,13 -33,0 -0.04098,12.924265 11.4931771,0 10.2,8.264183 0,-8.264183 11.373006,0 z"
+         style="fill:#f9f9f9;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4484"
+         d="m 6.952197,16.007245 27.166217,0"
+         style="fill:#f9f9f9;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4486"
+         d="m 6.952197,19.007245 27.166217,0"
+         style="fill:#f9f9f9;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4488"
+         d="m 6.952197,22.007245 27.166217,0"
+         style="fill:#f9f9f9;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/src/icons/MoveArrow.svg b/src/icons/MoveArrow.svg
new file mode 100644
index 0000000..9c667a4
--- /dev/null
+++ b/src/icons/MoveArrow.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg3513"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="MoveArrow.svg">
+  <defs
+     id="defs3515">
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4038"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.4,0,0,0.4,4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mend"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4041"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="7.7781746"
+     inkscape:cx="36.838792"
+     inkscape:cy="30.201444"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="943"
+     inkscape:window-height="989"
+     inkscape:window-x="927"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3092" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3518">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <path
+       style="fill:#000080;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="M 30,4 15,19 25,19 25,29 15,29 15,19 0,34 15,49 15,39 25,39 25,49 15,49 30,64 45,49 35,49 35,39 45,39 45,49 60,34 45,19 45,29 35,29 35,19 45,19 30,4 z"
+       id="path2996-2"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/src/icons/SizeArrow.svg b/src/icons/SizeArrow.svg
new file mode 100644
index 0000000..37bafd0
--- /dev/null
+++ b/src/icons/SizeArrow.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg3513"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="SizeArrow.svg">
+  <defs
+     id="defs3515">
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4038"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.4,0,0,0.4,4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mend"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4041"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="7.7781746"
+     inkscape:cx="30.079569"
+     inkscape:cy="32.165933"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="942"
+     inkscape:window-height="989"
+     inkscape:window-x="970"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2987" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3518">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <path
+       style="fill:#000080;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 33.535534,25.464466 -7.071068,-7.071068 7.071068,-7.071068 -21.213204,0 0,21.213204 7.071068,-7.071068 14.142136,14.142136 -7.071068,7.071068 21.213204,0 0,-21.213204 -7.071068,7.071068 z"
+       id="path2996"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/src/locale/qmapshack_cs.ts b/src/locale/qmapshack_cs.ts
index f6a7233..be0eb51 100644
--- a/src/locale/qmapshack_cs.ts
+++ b/src/locale/qmapshack_cs.ts
@@ -8,7 +8,7 @@
         <translation type="obsolete">Pohled %1</translation>
     </message>
     <message>
-        <location filename="../canvas/CCanvas.cpp" line="62"/>
+        <location filename="../canvas/CCanvas.cpp" line="63"/>
         <source>View %1</source>
         <translation>Pohled %1</translation>
     </message>
@@ -134,91 +134,91 @@
 <context>
     <name>CDetailsPrj</name>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="194"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="556"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="175"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="537"/>
         <source>none</source>
         <translation>žádné</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="253"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="234"/>
         <source>Build diary...</source>
         <translation>Sestavit deník...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="253"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="234"/>
         <source>Abort</source>
         <translation>Zrušit</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="311"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="292"/>
         <source><h2>Waypoints</h2></source>
         <translation><h2>Cestovní body</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="274"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="318"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="349"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="457"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="255"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="299"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="330"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="438"/>
         <source>Info</source>
         <translation>Informace</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="275"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="319"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="350"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="458"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="256"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="300"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="331"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="439"/>
         <source>Comment</source>
         <translation>Poznámka</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="342"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="323"/>
         <source><h2>Tracks</h2></source>
         <translation><h2>Stopy</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="267"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="248"/>
         <source><h2>Areas</h2></source>
         <translation><h2>Oblasti</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="480"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="461"/>
         <source>distance: %1%2</source>
         <translation>Vzdálenost: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="482"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="463"/>
         <source>ascent: %1%2</source>
         <translation>Stoupání: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="484"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="465"/>
         <source>descend: %1%2</source>
         <translation>Klesání: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="542"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="569"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="523"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="550"/>
         <source>Edit name...</source>
         <translation>Upravit název...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="542"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="569"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="523"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="550"/>
         <source>Enter new project name.</source>
         <translation>Zadejte název projektu.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="551"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="532"/>
         <source>Edit keywords...</source>
         <translation>Upravit klíčová slova...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="551"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="532"/>
         <source>Enter keywords.</source>
         <translation>Zadejte klíčová slova.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="685"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="666"/>
         <source>Print Diary</source>
         <translation>Tisk deníku</translation>
     </message>
@@ -317,7 +317,7 @@
     <message>
         <location filename="../gis/wpt/CDetailsWpt.cpp" line="176"/>
         <source>Enter new proximity range.</source>
-        <translation>Zadat nový rozsah blízkosti.</translation>
+        <translation>Zadejte nový poplach kvůli odstupu.</translation>
     </message>
 </context>
 <context>
@@ -441,18 +441,23 @@
     </message>
     <message>
         <location filename="../gis/CGisListWks.cpp" line="132"/>
+        <source>Show Bubble</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="134"/>
         <source>Move Waypoint</source>
         <translation>Přesunout cestovní bod</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="133"/>
+        <location filename="../gis/CGisListWks.cpp" line="135"/>
         <source>Proj. Waypoint...</source>
         <translation>Promítnutí cestovního bodu...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="594"/>
-        <location filename="../gis/CGisListWks.cpp" line="1283"/>
-        <location filename="../gis/CGisListWks.cpp" line="1322"/>
+        <location filename="../gis/CGisListWks.cpp" line="596"/>
+        <location filename="../gis/CGisListWks.cpp" line="1296"/>
+        <location filename="../gis/CGisListWks.cpp" line="1335"/>
         <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
         <translation><b>Aktualizovat zařízení</b><p>Aktualizovat %1<br/>Počkejte, prosím...</p></translation>
     </message>
@@ -487,7 +492,7 @@
         <translation>Spojit stopy</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="147"/>
+        <location filename="../gis/CGisListWks.cpp" line="149"/>
         <source>Edit Area Points</source>
         <translation>Upravit body oblasti</translation>
     </message>
@@ -498,22 +503,22 @@
         <translation>Smazat</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="694"/>
+        <location filename="../gis/CGisListWks.cpp" line="696"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Ukládá se pohled. Počkejte, prosím.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="735"/>
+        <location filename="../gis/CGisListWks.cpp" line="737"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Nahrává se pohled. Počkejte, prosím.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="918"/>
+        <location filename="../gis/CGisListWks.cpp" line="921"/>
         <source>Close all projects...</source>
         <translation>Zavřít všechny projekty...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="918"/>
+        <location filename="../gis/CGisListWks.cpp" line="921"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Tímto budou všechny projekty odstraněny z pohledu.</translation>
     </message>
@@ -521,12 +526,12 @@
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="419"/>
+        <location filename="../gis/CGisWidget.cpp" line="444"/>
         <source>Cut Track...</source>
         <translation>Rozkrajet stopu...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="419"/>
+        <location filename="../gis/CGisWidget.cpp" line="444"/>
         <source>Do you want to delete the original track?</source>
         <translation>Opravdu chcete smazat původní stopu?</translation>
     </message>
@@ -577,22 +582,22 @@
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="487"/>
+        <location filename="../CMainWindow.cpp" line="492"/>
         <source>Ele: %1%2</source>
         <translation>Výška: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="613"/>
+        <location filename="../CMainWindow.cpp" line="618"/>
         <source>Load GIS Data...</source>
         <translation>Nahrát data GIS...</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="647"/>
+        <location filename="../CMainWindow.cpp" line="652"/>
         <source>Select output file</source>
         <translation>Vybrat výstupní soubor</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="673"/>
+        <location filename="../CMainWindow.cpp" line="678"/>
         <source>Select file to load</source>
         <translation>Vybrat soubor k nahrání</translation>
     </message>
@@ -1243,7 +1248,7 @@
     <message>
         <location filename="../map/CMapList.cpp" line="174"/>
         <source>Where do you want to store maps?</source>
-        <translation type="unfinished"></translation>
+        <translation>Kde chcete ukládat mapy?</translation>
     </message>
 </context>
 <context>
@@ -1683,7 +1688,7 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="574"/>
         <source>Overlays:         %1 (areas will be converted as areas, distance lines will be converted to tracks, all other overlay items will be lost)</source>
-        <translation type="unfinished"></translation>
+        <translation>Překrytí:         %1 (oblasti budou převáděny jako oblasti, vzdálenostní čáry budou převedeny do stop, všechny ostatní překrývající prvky budou ztraceny)</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="581"/>
@@ -1962,17 +1967,17 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../canvas/ICanvasSetup.ui" line="53"/>
         <source>Scales</source>
-        <translation type="unfinished"></translation>
+        <translation>Měřítka</translation>
     </message>
     <message>
         <location filename="../canvas/ICanvasSetup.ui" line="59"/>
         <source>Logarithmic</source>
-        <translation type="unfinished"></translation>
+        <translation>Logaritmické</translation>
     </message>
     <message>
         <location filename="../canvas/ICanvasSetup.ui" line="66"/>
         <source>Square (optimized for TMS and WTMS tiles)</source>
-        <translation type="unfinished"></translation>
+        <translation>Čtvereční (vyladěné pro dlaždice TMS a WTMS)</translation>
     </message>
 </context>
 <context>
@@ -2172,12 +2177,12 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/ovl/IDetailsOvlArea.ui" line="69"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
-        <translation type="unfinished"><html><head/><body><p>Cestovní bod byl zaveden do QMapShacku a byl změněn. Už neukazuje původní data. Prohlédněte si, prosím, historii kvůli změnám. </p></body></html></translation>
+        <translation><html><head/><body><p>Cestovní bod byl zaveden do QMapShacku a byl změněn. Už neukazuje původní data. Prohlédněte si, prosím, historii kvůli změnám. </p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/ovl/IDetailsOvlArea.ui" line="85"/>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
-        <translation type="unfinished"></translation>
+        <translation>Přepnout režim pouze pro čtení. Musíte otevřít zámek, abyste mohl prvek upravovat.</translation>
     </message>
     <message>
         <location filename="../gis/ovl/IDetailsOvlArea.ui" line="88"/>
@@ -2234,34 +2239,47 @@ není platným vymezením soustavy souřadnic
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="83"/>
-        <source>Sort By Time</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="70"/>
         <source>Keep Order of Project</source>
-        <translation>Zachovat pořadí projektu</translation>
+        <translation type="vanished">Zachovat pořadí projektu</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="99"/>
         <source>Sort Along Track</source>
-        <translation>Třídit podle stopy</translation>
+        <translation type="vanished">Třídit podle stopy</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="127"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="115"/>
         <source>Print diary</source>
         <translation>Tisk deníku</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="106"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="130"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="150"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="94"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="118"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="138"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="147"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="71"/>
+        <source>Keep order of project</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="76"/>
+        <source>Sort by time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="81"/>
+        <source>Sort along track (multiple)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="86"/>
+        <source>Sort along track (single)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="135"/>
         <source>Rebuild diary.</source>
         <translation>Sestavit deník znovu.</translation>
     </message>
@@ -2316,7 +2334,7 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="274"/>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
-        <translation type="unfinished"></translation>
+        <translation>Přepnout režim pouze pro čtení. Musíte otevřít zámek, abyste mohl prvek upravovat.</translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="277"/>
@@ -2326,7 +2344,7 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="307"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
-        <translation type="unfinished"><html><head/><body><p>Cestovní bod byl zaveden do QMapShacku a byl změněn. Už neukazuje původní data. Prohlédněte si, prosím, historii kvůli změnám. </p></body></html></translation>
+        <translation><html><head/><body><p>Cestovní bod byl zaveden do QMapShacku a byl změněn. Už neukazuje původní data. Prohlédněte si, prosím, historii kvůli změnám. </p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/trk/IDetailsTrk.ui" line="405"/>
@@ -2404,7 +2422,7 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="204"/>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
-        <translation type="unfinished"></translation>
+        <translation>Přepnout režim pouze pro čtení. Musíte otevřít zámek, abyste mohl prvek upravovat.</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="207"/>
@@ -3150,7 +3168,7 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../IMainWindow.ui" line="539"/>
         <source>Close</source>
-        <translation type="unfinished">Zavřít</translation>
+        <translation>Zavřít</translation>
     </message>
     <message>
         <source>Setup Database</source>
@@ -3182,7 +3200,8 @@ není platným vymezením soustavy souřadnic
         <location filename="../map/IMapList.ui" line="129"/>
         <source>Help! I want maps!
 I don't want to read the documentation!</source>
-        <translation type="unfinished"></translation>
+        <translation>Pomoc! Chci mapy!
+Nechce se mi číst dokumentaci!</translation>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="149"/>
@@ -3213,7 +3232,8 @@ I don't want to read the documentation!</source>
         <location filename="../map/IMapPathSetup.ui" line="185"/>
         <source>Help! I want maps!
 I don't want to read the documentation!</source>
-        <translation type="unfinished"></translation>
+        <translation>Pomoc! Chci mapy!
+Nechce se mi číst dokumentaci!</translation>
     </message>
     <message>
         <location filename="../map/IMapPathSetup.ui" line="29"/>
@@ -3367,7 +3387,7 @@ I don't want to read the documentation!</source>
     <message>
         <location filename="../plot/IPlot.cpp" line="108"/>
         <source>Stop Range</source>
-        <translation type="unfinished"></translation>
+        <translation>Ukončit výběr oblasti</translation>
     </message>
     <message>
         <location filename="../plot/IPlot.cpp" line="109"/>
@@ -3774,8 +3794,9 @@ nebo
         <location filename="../gis/wpt/IScrOptWpt.ui" line="52"/>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="66"/>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="80"/>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="101"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="98"/>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="115"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="129"/>
         <source>...</source>
         <translation>...</translation>
     </message>
@@ -3790,17 +3811,17 @@ nebo
         <translation><html><head/><body><p>Smazat</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="98"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="112"/>
         <source><html><head/><body><p>Move waypoint to a new location.</p></body></html></source>
         <translation><html><head/><body><p>Přesunout cestovní bod do nového umístění.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="112"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="126"/>
         <source><html><head/><body><p>Clone waypoint and move clone a given distance and angle.</p></body></html></source>
         <translation><html><head/><body><p>Klonovat cestovní bod a přesunout kopii o danou vzdálenost a ve stanoveném úhlu.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="159"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="173"/>
         <source>TextLabel</source>
         <translation>Textový štítek</translation>
     </message>
@@ -3869,12 +3890,12 @@ nebo
     <message>
         <location filename="../gis/db/ISelectDBFolder.ui" line="14"/>
         <source>Select Parent Folder...</source>
-        <translation type="unfinished"></translation>
+        <translation>Vybrat nadřazenou složku...</translation>
     </message>
     <message>
         <location filename="../gis/db/ISelectDBFolder.ui" line="26"/>
         <source>Name</source>
-        <translation type="unfinished">Název</translation>
+        <translation>Název</translation>
     </message>
 </context>
 <context>
@@ -3896,7 +3917,7 @@ nebo
     <message>
         <location filename="../helpers/ISelectProjectDialog.ui" line="33"/>
         <source>New project's name</source>
-        <translation type="unfinished"></translation>
+        <translation>Nový název projektu</translation>
     </message>
     <message>
         <location filename="../helpers/ISelectProjectDialog.ui" line="43"/>
@@ -3916,7 +3937,7 @@ nebo
     <message>
         <location filename="../helpers/ISelectProjectDialog.ui" line="115"/>
         <source>Database</source>
-        <translation type="unfinished"></translation>
+        <translation>Databáze</translation>
     </message>
 </context>
 <context>
@@ -3924,17 +3945,17 @@ nebo
     <message>
         <location filename="../gis/db/ISelectSaveAction.ui" line="14"/>
         <source>Copy item...</source>
-        <translation type="unfinished">Kopírovat prvek...</translation>
+        <translation>Kopírovat prvek...</translation>
     </message>
     <message>
         <location filename="../gis/db/ISelectSaveAction.ui" line="23"/>
         <source>Replace existing item</source>
-        <translation type="unfinished">Nahradit stávající prvek</translation>
+        <translation>Nahradit stávající prvek</translation>
     </message>
     <message>
         <location filename="../gis/db/ISelectSaveAction.ui" line="30"/>
         <source>Replace with:</source>
-        <translation type="unfinished">Nahradit:</translation>
+        <translation>Nahradit:</translation>
     </message>
     <message>
         <location filename="../gis/db/ISelectSaveAction.ui" line="37"/>
@@ -3942,22 +3963,22 @@ nebo
         <location filename="../gis/db/ISelectSaveAction.ui" line="81"/>
         <location filename="../gis/db/ISelectSaveAction.ui" line="91"/>
         <source>TextLabel</source>
-        <translation type="unfinished">Textový štítek</translation>
+        <translation>Textový štítek</translation>
     </message>
     <message>
         <location filename="../gis/db/ISelectSaveAction.ui" line="67"/>
         <source>Do not replace item</source>
-        <translation type="unfinished"></translation>
+        <translation>Nenahrazovat prvek</translation>
     </message>
     <message>
         <location filename="../gis/db/ISelectSaveAction.ui" line="74"/>
         <source>Use item:</source>
-        <translation type="unfinished"></translation>
+        <translation>Použít prvek:</translation>
     </message>
     <message>
         <location filename="../gis/db/ISelectSaveAction.ui" line="111"/>
         <source>And for all other items, too.</source>
-        <translation type="unfinished">A také pro všechny další prvky.</translation>
+        <translation>A také pro všechny další prvky.</translation>
     </message>
 </context>
 <context>
@@ -4039,12 +4060,12 @@ nebo
     <message>
         <location filename="../gis/db/ISetupFolder.ui" line="14"/>
         <source>Database Folder...</source>
-        <translation type="unfinished"></translation>
+        <translation>Složka s databází...</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupFolder.ui" line="20"/>
         <source>Folder name</source>
-        <translation type="unfinished"></translation>
+        <translation>Název složky</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupFolder.ui" line="30"/>
@@ -4067,27 +4088,27 @@ nebo
     <message>
         <location filename="../gis/wpt/ISetupNewWpt.ui" line="14"/>
         <source>New Waypoint...</source>
-        <translation type="unfinished"></translation>
+        <translation>Nový cestovní bod...</translation>
     </message>
     <message>
         <location filename="../gis/wpt/ISetupNewWpt.ui" line="22"/>
         <source>Symbol</source>
-        <translation type="unfinished"></translation>
+        <translation>Symbol</translation>
     </message>
     <message>
         <location filename="../gis/wpt/ISetupNewWpt.ui" line="29"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
     <message>
         <location filename="../gis/wpt/ISetupNewWpt.ui" line="39"/>
         <source>Position</source>
-        <translation type="unfinished">Poloha</translation>
+        <translation>Poloha</translation>
     </message>
     <message>
         <location filename="../gis/wpt/ISetupNewWpt.ui" line="49"/>
         <source>Name</source>
-        <translation type="unfinished">Název</translation>
+        <translation>Název</translation>
     </message>
     <message>
         <location filename="../gis/wpt/ISetupNewWpt.ui" line="59"/>
@@ -4095,7 +4116,7 @@ nebo
 "[N|S] ddd mm.sss [W|E] ddd mm.sss"
 or
 "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
-        <translation type="unfinished">Špatný polohový formát. Musí být: 
+        <translation>Špatný polohový formát. Musí být: 
 "[N|S] ddd mm.sss [W|E] ddd mm.sss"
 nebo
 "[N|S] ddd.ddd [W|E] ddd.ddd"</translation>
@@ -4285,15 +4306,30 @@ nebo
         <translation>Světový čas (UTC)</translation>
     </message>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="29"/>
+        <location filename="../units/ITimeZoneSetup.ui" line="32"/>
         <source>Local</source>
         <translation>Místní</translation>
     </message>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="36"/>
+        <location filename="../units/ITimeZoneSetup.ui" line="42"/>
         <source>Automatic</source>
         <translation>Automaticky</translation>
     </message>
+    <message>
+        <location filename="../units/ITimeZoneSetup.ui" line="75"/>
+        <source>Print date/time in </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../units/ITimeZoneSetup.ui" line="82"/>
+        <source>long format, or</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../units/ITimeZoneSetup.ui" line="92"/>
+        <source>short format</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IUnitsSetup</name>
@@ -4401,12 +4437,12 @@ Oblasti: %1</translation>
     <message>
         <location filename="../gis/prj/IGisProject.cpp" line="69"/>
         <source>Save project?</source>
-        <translation type="unfinished"></translation>
+        <translation>Uložit projekt?</translation>
     </message>
     <message>
         <location filename="../gis/prj/IGisProject.cpp" line="69"/>
         <source>The project "%1" was changed. Save befor closing it?</source>
-        <translation type="unfinished"></translation>
+        <translation>Projekt "%1" byl změněn. Uložit jej před zavřením?</translation>
     </message>
     <message>
         <location filename="../gis/prj/IGisProject.cpp" line="261"/>
@@ -4436,7 +4472,7 @@ Název souboru: %1</translation>
         <translation>Oblasti: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="351"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="370"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
         <translation>Jste si jistý, že chcete smazat '%1' z projektu '%2'?</translation>
     </message>
@@ -4447,7 +4483,7 @@ Název souboru: %1</translation>
     </message>
     <message>
         <location filename="../gis/CGisListDB.cpp" line="436"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="352"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="371"/>
         <source>Delete...</source>
         <translation>Smazat...</translation>
     </message>
@@ -4611,46 +4647,46 @@ Název souboru: %1</translation>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="651"/>
         <source>Ascend: %1%2</source>
-        <translation type="unfinished"></translation>
+        <translation>Stoupání: %1%2</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="656"/>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="673"/>
         <source>, %1%2</source>
-        <translation type="unfinished"></translation>
+        <translation>, %1%2</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="661"/>
         <source>Ascend: -</source>
-        <translation type="unfinished"></translation>
+        <translation>Stoupání: -</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="668"/>
         <source> Descend: %1%2</source>
-        <translation type="unfinished"></translation>
+        <translation> Klesání: %1%2</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="678"/>
         <source>Descend: -</source>
-        <translation type="unfinished"></translation>
+        <translation>Klesání: -</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="684"/>
         <source>Dist.: %1%2</source>
-        <translation type="unfinished"></translation>
+        <translation>Vzdál.: %1%2</translation>
     </message>
     <message>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="689"/>
         <source> Time: %1%2</source>
-        <translation type="unfinished"></translation>
+        <translation> Čas: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1368"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1370"/>
         <source>Hide points.</source>
         <translation>Skrýt body.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1414"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1416"/>
         <source>Show points.</source>
         <translation>Ukázat body.</translation>
     </message>
@@ -4736,7 +4772,7 @@ Název souboru: %1</translation>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="142"/>
         <location filename="../gis/rte/CGisItemRte.cpp" line="45"/>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="184"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="101"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="131"/>
         <source>_Clone</source>
         <translation>_Klon</translation>
     </message>
@@ -4783,39 +4819,39 @@ Název souboru: %1</translation>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="535"/>
         <location filename="../gis/rte/CGisItemRte.cpp" line="154"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1773"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="378"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1775"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="448"/>
         <source>Changed links</source>
         <translation>Změněné odkazy</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="547"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1785"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1787"/>
         <source>Changed color</source>
         <translation>Změněná barva</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="244"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="314"/>
         <source>Elevation: %1 %2</source>
         <translation>Výška: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="255"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="325"/>
         <source>Proximity: %1 %2</source>
         <translation>Blízkost: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1755"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="326"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1757"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="396"/>
         <source>Changed name</source>
         <translation>Změněný název</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1166"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1181"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1200"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1259"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1439"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1168"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1183"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1202"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1261"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1441"/>
         <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="104"/>
         <source>Edit name...</source>
@@ -4826,61 +4862,61 @@ Název souboru: %1</translation>
         <translation type="vanished">Zadat nový název pro cestovní bod.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="336"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="406"/>
         <source>Changed position</source>
         <translation>Změněná poloha</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="342"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="412"/>
         <source>Changed elevation</source>
         <translation>Změněná výška</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="348"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="418"/>
         <source>Changed proximity</source>
         <translation>Změněná blízkost</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="360"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="430"/>
         <source>Changed icon</source>
         <translation>Změněná ikona</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="384"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="454"/>
         <source>Changed images</source>
         <translation>Změněné obrázky</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="390"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="460"/>
         <source>Add image</source>
         <translation>Přidat obrázek</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="142"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1761"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="366"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1763"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="436"/>
         <source>Changed comment</source>
         <translation>Změněná poznámka</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="148"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1767"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="372"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1769"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="442"/>
         <source>Changed description</source>
         <translation>Změněný popis</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="575"/>
+        <location filename="../gis/gpx/serialization.cpp" line="599"/>
         <source>Archived</source>
         <translation>Archivováno</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="579"/>
+        <location filename="../gis/gpx/serialization.cpp" line="603"/>
         <source>Available</source>
         <translation>Dostupné</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="583"/>
+        <location filename="../gis/gpx/serialization.cpp" line="607"/>
         <source>Not Available</source>
         <translation>Nedostupné</translation>
     </message>
@@ -4901,11 +4937,11 @@ Název souboru: %1</translation>
         <translation>Toto je souborový typ s neznámým druhem čáry. Nahlašte to, prosím!</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1166"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1181"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1200"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1259"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1439"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1168"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1183"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1202"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1261"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1441"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="104"/>
         <source>Enter new track name.</source>
         <translation>Zadat název nové stopy.</translation>
@@ -5012,12 +5048,12 @@ Název souboru: %1</translation>
         <translation>Rychlost změněna na %1%2.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="953"/>
+        <location filename="../gis/CGisListWks.cpp" line="956"/>
         <source>Delete project...</source>
         <translation>Smazat projekt...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="953"/>
+        <location filename="../gis/CGisListWks.cpp" line="956"/>
         <source>Do you really want to delete %1?</source>
         <translation>Opravdu chcete smazat %1?</translation>
     </message>
@@ -5071,7 +5107,7 @@ Název souboru: %1</translation>
     <message>
         <location filename="../device/IDevice.cpp" line="202"/>
         <source>There is another project with the same name. If you press 'ok' it will be removed and replaced.</source>
-        <translation type="unfinished"></translation>
+        <translation>Je jiný projekt se stejným názvem. Pokud stisknete OK, bude odstraněn a nahrazen.</translation>
     </message>
 </context>
 </TS>
diff --git a/src/locale/qmapshack_de.ts b/src/locale/qmapshack_de.ts
index bbc501d..a1f9602 100644
--- a/src/locale/qmapshack_de.ts
+++ b/src/locale/qmapshack_de.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="de_DE">
+<TS version="2.1" language="de_DE">
 <context>
     <name>CCanvas</name>
     <message>
@@ -8,7 +8,7 @@
         <translation type="obsolete">Ansicht %1</translation>
     </message>
     <message>
-        <location filename="../canvas/CCanvas.cpp" line="62"/>
+        <location filename="../canvas/CCanvas.cpp" line="63"/>
         <source>View %1</source>
         <translation>Ansicht %1</translation>
     </message>
@@ -116,7 +116,7 @@
     </message>
     <message>
         <source>Enter new waypoint name.</source>
-        <translation>Geben Sie einen neuen Namen für den Wegpunkt ein.</translation>
+        <translation type="vanished">Geben Sie einen neuen Namen für den Wegpunkt ein.</translation>
     </message>
     <message>
         <source><h4>Comment:</h4></source>
@@ -138,81 +138,81 @@
 <context>
     <name>CDetailsPrj</name>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="194"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="556"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="175"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="537"/>
         <source>none</source>
         <translation>keine</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="253"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="234"/>
         <source>Build diary...</source>
         <translation>Tagebuch erstellen...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="253"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="234"/>
         <source>Abort</source>
         <translation>Abbrechen</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="311"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="292"/>
         <source><h2>Waypoints</h2></source>
         <translation><h2>Wegpunkte</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="274"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="318"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="349"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="457"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="255"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="299"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="330"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="438"/>
         <source>Info</source>
         <translation>Information</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="275"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="319"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="350"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="458"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="256"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="300"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="331"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="439"/>
         <source>Comment</source>
         <translation>Kommentar</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="342"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="323"/>
         <source><h2>Tracks</h2></source>
         <translation><h2>Tracks</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="267"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="248"/>
         <source><h2>Areas</h2></source>
         <translation><h2>Gebiete</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="480"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="461"/>
         <source>distance: %1%2</source>
         <translation>Entfernung: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="482"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="463"/>
         <source>ascent: %1%2</source>
         <translation>Anstieg: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="484"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="465"/>
         <source>descend: %1%2</source>
         <translation>Abstieg: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="542"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="569"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="523"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="550"/>
         <source>Edit name...</source>
         <translation>Name bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="542"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="569"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="523"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="550"/>
         <source>Enter new project name.</source>
         <translation>Geben Sie einen neuen Namen für das Projekt ein.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="685"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="666"/>
         <source>Print Diary</source>
         <translation>Tagebuch drucken</translation>
     </message>
@@ -221,12 +221,12 @@
         <translation type="obsolete">Name eingeben.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="551"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="532"/>
         <source>Edit keywords...</source>
         <translation>Stichwörter bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="551"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="532"/>
         <source>Enter keywords.</source>
         <translation>Stichwörter eingeben.</translation>
     </message>
@@ -445,7 +445,7 @@
     </message>
     <message>
         <source>Update Project on Devices</source>
-        <translation>Aktualisiere das Projekt auf allen Geräten </translation>
+        <translation type="vanished">Aktualisiere das Projekt auf allen Geräten </translation>
     </message>
     <message>
         <location filename="../gis/CGisListWks.cpp" line="98"/>
@@ -469,13 +469,18 @@
     </message>
     <message>
         <location filename="../gis/CGisListWks.cpp" line="132"/>
+        <source>Show Bubble</source>
+        <translation>Infoblase anzeigen</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="134"/>
         <source>Move Waypoint</source>
         <translation>Wegpunkt verschieben</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="594"/>
-        <location filename="../gis/CGisListWks.cpp" line="1283"/>
-        <location filename="../gis/CGisListWks.cpp" line="1322"/>
+        <location filename="../gis/CGisListWks.cpp" line="596"/>
+        <location filename="../gis/CGisListWks.cpp" line="1296"/>
+        <location filename="../gis/CGisListWks.cpp" line="1335"/>
         <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
         <translation><b>Aktualisieren der Geräte</b><p>Aktualisiere %1<br/>Bitte warten...</p></translation>
     </message>
@@ -484,7 +489,7 @@
         <translation type="obsolete">Wegpunkt verschieben...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="133"/>
+        <location filename="../gis/CGisListWks.cpp" line="135"/>
         <source>Proj. Waypoint...</source>
         <translation>Wegpunkt Projektion...</translation>
     </message>
@@ -500,7 +505,7 @@
     </message>
     <message>
         <source>Lock/Unlock</source>
-        <translation>Sperren/Entsperren</translation>
+        <translation type="vanished">Sperren/Entsperren</translation>
     </message>
     <message>
         <location filename="../gis/CGisListWks.cpp" line="121"/>
@@ -523,7 +528,7 @@
         <translation>Tracks verbinden</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="147"/>
+        <location filename="../gis/CGisListWks.cpp" line="149"/>
         <source>Edit Area Points</source>
         <translation>Gebietspunkte bearbeiten</translation>
     </message>
@@ -534,22 +539,22 @@
         <translation>Löschen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="694"/>
+        <location filename="../gis/CGisListWks.cpp" line="696"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Ansicht speichern. Bitte warten.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="735"/>
+        <location filename="../gis/CGisListWks.cpp" line="737"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Ansicht laden. Bitte warten.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="918"/>
+        <location filename="../gis/CGisListWks.cpp" line="921"/>
         <source>Close all projects...</source>
         <translation>Alle Projekte schließen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="918"/>
+        <location filename="../gis/CGisListWks.cpp" line="921"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Dies wird alle Projekte aus der Ansicht entfernen.</translation>
     </message>
@@ -565,12 +570,12 @@
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="419"/>
+        <location filename="../gis/CGisWidget.cpp" line="444"/>
         <source>Cut Track...</source>
         <translation>Track teilen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="419"/>
+        <location filename="../gis/CGisWidget.cpp" line="444"/>
         <source>Do you want to delete the original track?</source>
         <translation>Wollen Sie den ursprünglichen Track löschen?</translation>
     </message>
@@ -629,22 +634,22 @@
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="487"/>
+        <location filename="../CMainWindow.cpp" line="492"/>
         <source>Ele: %1%2</source>
         <translation>Höhe: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="613"/>
+        <location filename="../CMainWindow.cpp" line="618"/>
         <source>Load GIS Data...</source>
         <translation>GIS Daten laden...</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="647"/>
+        <location filename="../CMainWindow.cpp" line="652"/>
         <source>Select output file</source>
         <translation>Ausgabedatei auswählen</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="673"/>
+        <location filename="../CMainWindow.cpp" line="678"/>
         <source>Select file to load</source>
         <translation>Zu ladende Datei auswählen</translation>
     </message>
@@ -1339,7 +1344,7 @@
     <name>CMapPropSetup</name>
     <message>
         <source>Cache path...</source>
-        <translation>Cache Pfad...</translation>
+        <translation type="vanished">Cache Pfad...</translation>
     </message>
 </context>
 <context>
@@ -1765,7 +1770,7 @@ ist keine gültige Koordinatensystemdefinition:
     </message>
     <message>
         <source>Overlays:         %1 (only area overlays will be converted to QMapShack)</source>
-        <translation>Overlays:         %1 (Es werden nur Gebietsoverlays nach QMapShack konvertiert)</translation>
+        <translation type="vanished">Overlays:         %1 (Es werden nur Gebietsoverlays nach QMapShack konvertiert)</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="574"/>
@@ -2321,34 +2326,59 @@ ist keine gültige Koordinatensystemdefinition:
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="83"/>
         <source>Sort By Time</source>
-        <translation>Sortieren nach Zeit</translation>
+        <translation type="vanished">Sortieren nach Zeit</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="70"/>
         <source>Keep Order of Project</source>
-        <translation>Reihenfolge beibehalten</translation>
+        <translation type="vanished">Reihenfolge beibehalten</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="99"/>
         <source>Sort Along Track</source>
-        <translation>Sort. entl. d. Tracks</translation>
+        <translation type="vanished">Sort. entl. d. Tracks</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="127"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="115"/>
         <source>Print diary</source>
         <translation>Tagebuch drucken</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="106"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="130"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="150"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="94"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="118"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="138"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="147"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="71"/>
+        <source>Keep order of project</source>
+        <translation>Reihenfolge beibehalten</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="76"/>
+        <source>Sort by time</source>
+        <translation>Sortieren nach Zeit</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="81"/>
+        <source>Sort along track (multiple)</source>
+        <translation>Sort. entl. d. Tracks (mehrfach)</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="86"/>
+        <source>Sort along track (single)</source>
+        <translation>Sort. entl. d. Tracks (einmalig)</translation>
+    </message>
+    <message>
+        <source>Sort along track (with doubles)</source>
+        <translation type="vanished">Sort. entl. d. Tracks (mehrfach)</translation>
+    </message>
+    <message>
+        <source>Sort along track (without doubles)</source>
+        <translation type="vanished">Sort. entl. d. Tracks (einmalig)</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="135"/>
         <source>Rebuild diary.</source>
         <translation>Tagebuch aktualisieren.</translation>
     </message>
@@ -2543,7 +2573,7 @@ ist keine gültige Koordinatensystemdefinition:
     </message>
     <message>
         <source><html><head/><body><p>Read Only Mode</p></body></html></source>
-        <translation><html><head/><body><p>Schreibschutz</p></body></html></translation>
+        <translation type="vanished"><html><head/><body><p>Schreibschutz</p></body></html></translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="270"/>
@@ -3650,7 +3680,7 @@ sein</translation>
     </message>
     <message>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
-        <translation>Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
+        <translation type="vanished">Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
     </message>
     <message>
         <location filename="../gis/ovl/IScrOptOvlArea.ui" line="112"/>
@@ -3796,7 +3826,7 @@ sein</translation>
     </message>
     <message>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
-        <translation>Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
+        <translation type="vanished">Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
     </message>
     <message>
         <location filename="../gis/rte/IScrOptRte.ui" line="85"/>
@@ -3843,7 +3873,7 @@ sein</translation>
     </message>
     <message>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
-        <translation>Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
+        <translation type="vanished">Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="106"/>
@@ -3919,8 +3949,9 @@ sein</translation>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="52"/>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="66"/>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="80"/>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="101"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="98"/>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="115"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="129"/>
         <source>...</source>
         <translation></translation>
     </message>
@@ -3936,20 +3967,20 @@ sein</translation>
     </message>
     <message>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
-        <translation>Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
+        <translation type="vanished">Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="98"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="112"/>
         <source><html><head/><body><p>Move waypoint to a new location.</p></body></html></source>
         <translation><html><head/><body><p>Wegpunkt verschieben.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="112"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="126"/>
         <source><html><head/><body><p>Clone waypoint and move clone a given distance and angle.</p></body></html></source>
         <translation><html><head/><body><p>Wegpunkt kopieren und unter Angabe von Entfernung und Winkel verschieben.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="159"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="173"/>
         <source>TextLabel</source>
         <translation>Bezeichnung</translation>
     </message>
@@ -4171,11 +4202,11 @@ sein</translation>
     <name>ISetupFolder</name>
     <message>
         <source>Folder...</source>
-        <translation>Ordner...</translation>
+        <translation type="vanished">Ordner...</translation>
     </message>
     <message>
         <source>Name</source>
-        <translation>Name</translation>
+        <translation type="vanished">Name</translation>
     </message>
     <message>
         <location filename="../gis/db/ISetupFolder.ui" line="14"/>
@@ -4423,15 +4454,30 @@ sein</translation>
         <translation></translation>
     </message>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="29"/>
+        <location filename="../units/ITimeZoneSetup.ui" line="32"/>
         <source>Local</source>
         <translation>Lokal</translation>
     </message>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="36"/>
+        <location filename="../units/ITimeZoneSetup.ui" line="42"/>
         <source>Automatic</source>
         <translation>Automatisch</translation>
     </message>
+    <message>
+        <location filename="../units/ITimeZoneSetup.ui" line="75"/>
+        <source>Print date/time in </source>
+        <translation>Datum/Uhrzeit in</translation>
+    </message>
+    <message>
+        <location filename="../units/ITimeZoneSetup.ui" line="82"/>
+        <source>long format, or</source>
+        <translation>langem Format, oder</translation>
+    </message>
+    <message>
+        <location filename="../units/ITimeZoneSetup.ui" line="92"/>
+        <source>short format</source>
+        <translation>kurzem Format ausgeben</translation>
+    </message>
 </context>
 <context>
     <name>IUnitsSetup</name>
@@ -4484,7 +4530,7 @@ sein</translation>
     </message>
     <message>
         <source>Bad position format. Must be: [N|S] ddd mm.sss [W|E] ddd mm.sss</source>
-        <translation>Falsches Positionsformat. Richtig: [N|S] ddd mm.sss [W|E] ddd mm.sss </translation>
+        <translation type="vanished">Falsches Positionsformat. Richtig: [N|S] ddd mm.sss [W|E] ddd mm.sss </translation>
     </message>
     <message>
         <location filename="../gis/gpx/CGpxProject.cpp" line="109"/>
@@ -4569,7 +4615,7 @@ Dateiname: %1</translation>
         <translation>Gebiete: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="351"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="370"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
         <translation>Sind Sie sicher, dass Sie '%1' aus dem Projekt '%2' löschen wollen? </translation>
     </message>
@@ -4580,7 +4626,7 @@ Dateiname: %1</translation>
     </message>
     <message>
         <location filename="../gis/CGisListDB.cpp" line="436"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="352"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="371"/>
         <source>Delete...</source>
         <translation>Löschen...</translation>
     </message>
@@ -4738,12 +4784,12 @@ Dateiname: %1</translation>
         <translation type="obsolete"> Neigung: %1° (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1368"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1370"/>
         <source>Hide points.</source>
         <translation>Punkte ausblenden.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1414"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1416"/>
         <source>Show points.</source>
         <translation>Punkte einblenden.</translation>
     </message>
@@ -4820,7 +4866,7 @@ Dateiname: %1</translation>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="142"/>
         <location filename="../gis/rte/CGisItemRte.cpp" line="45"/>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="184"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="101"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="131"/>
         <source>_Clone</source>
         <translation>_Klon</translation>
     </message>
@@ -4867,23 +4913,23 @@ Dateiname: %1</translation>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="535"/>
         <location filename="../gis/rte/CGisItemRte.cpp" line="154"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1773"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="378"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1775"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="448"/>
         <source>Changed links</source>
         <translation>Geänderte Verknüpfungen</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="547"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1785"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1787"/>
         <source>Changed color</source>
         <translation>Farbe geändert</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1166"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1181"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1200"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1259"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1439"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1168"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1183"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1202"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1261"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1441"/>
         <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="104"/>
         <source>Edit name...</source>
@@ -4891,80 +4937,80 @@ Dateiname: %1</translation>
     </message>
     <message>
         <source>Enter new waypoint name.</source>
-        <translation>Geben Sie einen neuen Namen für den Wegpunkt ein.</translation>
+        <translation type="vanished">Geben Sie einen neuen Namen für den Wegpunkt ein.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="244"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="314"/>
         <source>Elevation: %1 %2</source>
         <translation>Höhe: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="255"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="325"/>
         <source>Proximity: %1 %2</source>
         <translation>Abstand: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1755"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="326"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1757"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="396"/>
         <source>Changed name</source>
         <translation>Name geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="336"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="406"/>
         <source>Changed position</source>
         <translation>Position geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="342"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="412"/>
         <source>Changed elevation</source>
         <translation>Höhe geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="348"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="418"/>
         <source>Changed proximity</source>
         <translation>Abstandsalarm geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="360"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="430"/>
         <source>Changed icon</source>
         <translation>Symbol geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="384"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="454"/>
         <source>Changed images</source>
         <translation>Bilder geändert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="390"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="460"/>
         <source>Add image</source>
         <translation>Bild hinzufügen</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="142"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1761"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="366"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1763"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="436"/>
         <source>Changed comment</source>
         <translation>Kommentar geändert</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="148"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1767"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="372"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1769"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="442"/>
         <source>Changed description</source>
         <translation>Beschreibung geändert</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="575"/>
+        <location filename="../gis/gpx/serialization.cpp" line="599"/>
         <source>Archived</source>
         <translation>Archiviert</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="579"/>
+        <location filename="../gis/gpx/serialization.cpp" line="603"/>
         <source>Available</source>
         <translation>Verfügbar</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="583"/>
+        <location filename="../gis/gpx/serialization.cpp" line="607"/>
         <source>Not Available</source>
         <translation>Nicht verfügbar</translation>
     </message>
@@ -5034,11 +5080,11 @@ Dateiname: %1</translation>
         <translation><p>--- keine ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1166"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1181"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1200"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1259"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1439"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1168"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1183"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1202"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1261"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1441"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="104"/>
         <source>Enter new track name.</source>
         <translation>Geben Sie einen neuen Namen für den Track ein.</translation>
@@ -5149,18 +5195,18 @@ Dateiname: %1</translation>
         <translation>Geschwindigkeit auf %1 %2 geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="953"/>
+        <location filename="../gis/CGisListWks.cpp" line="956"/>
         <source>Delete project...</source>
         <translation>Projekt löschen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="953"/>
+        <location filename="../gis/CGisListWks.cpp" line="956"/>
         <source>Do you really want to delete %1?</source>
         <translation>Sind Sie sicher, dass sie %1? löschen wollen?</translation>
     </message>
     <message>
         <source>Do you really want to delete %1</source>
-        <translation>Sind Sie sicher, dass sie %1 löschen wollen?</translation>
+        <translation type="vanished">Sind Sie sicher, dass sie %1 löschen wollen?</translation>
     </message>
     <message>
         <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
diff --git a/src/locale/qmapshack_es.ts b/src/locale/qmapshack_es.ts
index 4c09e92..3afce05 100644
--- a/src/locale/qmapshack_es.ts
+++ b/src/locale/qmapshack_es.ts
@@ -8,7 +8,7 @@
         <translation type="obsolete">Espacio de Trabajo %1</translation>
     </message>
     <message>
-        <location filename="../canvas/CCanvas.cpp" line="62"/>
+        <location filename="../canvas/CCanvas.cpp" line="63"/>
         <source>View %1</source>
         <translation>Vista %1</translation>
     </message>
@@ -134,91 +134,91 @@
 <context>
     <name>CDetailsPrj</name>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="194"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="556"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="175"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="537"/>
         <source>none</source>
         <translation>ninguna</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="253"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="234"/>
         <source>Build diary...</source>
         <translation>Creando diario...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="253"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="234"/>
         <source>Abort</source>
         <translation>Cancelar</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="311"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="292"/>
         <source><h2>Waypoints</h2></source>
         <translation>Waypoints</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="274"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="318"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="349"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="457"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="255"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="299"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="330"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="438"/>
         <source>Info</source>
         <translation>Información</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="275"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="319"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="350"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="458"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="256"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="300"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="331"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="439"/>
         <source>Comment</source>
         <translation>Comentario</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="342"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="323"/>
         <source><h2>Tracks</h2></source>
         <translation>Tracks</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="267"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="248"/>
         <source><h2>Areas</h2></source>
         <translation>Áreas</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="480"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="461"/>
         <source>distance: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="482"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="463"/>
         <source>ascent: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="484"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="465"/>
         <source>descend: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="542"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="569"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="523"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="550"/>
         <source>Edit name...</source>
         <translation>Editar nombre...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="542"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="569"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="523"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="550"/>
         <source>Enter new project name.</source>
         <translation>Introducir nuevo nombre de proyecto.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="551"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="532"/>
         <source>Edit keywords...</source>
         <translation>Editar etiquetas...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="551"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="532"/>
         <source>Enter keywords.</source>
         <translation>Introducir etiquetas.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="685"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="666"/>
         <source>Print Diary</source>
         <translation>Imprimir Diario</translation>
     </message>
@@ -437,18 +437,23 @@
     </message>
     <message>
         <location filename="../gis/CGisListWks.cpp" line="132"/>
+        <source>Show Bubble</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="134"/>
         <source>Move Waypoint</source>
         <translation>Mover Waypoint</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="133"/>
+        <location filename="../gis/CGisListWks.cpp" line="135"/>
         <source>Proj. Waypoint...</source>
         <translation>Proyectar Waypoint...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="594"/>
-        <location filename="../gis/CGisListWks.cpp" line="1283"/>
-        <location filename="../gis/CGisListWks.cpp" line="1322"/>
+        <location filename="../gis/CGisListWks.cpp" line="596"/>
+        <location filename="../gis/CGisListWks.cpp" line="1296"/>
+        <location filename="../gis/CGisListWks.cpp" line="1335"/>
         <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
         <translation type="unfinished"><b>Actualizar dispositivos</b><p>Actualizar %1<br/>Por favor espere...</p></translation>
     </message>
@@ -483,7 +488,7 @@
         <translation>Combinar Tracks</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="147"/>
+        <location filename="../gis/CGisListWks.cpp" line="149"/>
         <source>Edit Area Points</source>
         <translation>Editar Puntos del Área</translation>
     </message>
@@ -494,22 +499,22 @@
         <translation>Borrar</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="694"/>
+        <location filename="../gis/CGisListWks.cpp" line="696"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Guardando espacio de trabajo. Por favor espere.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="735"/>
+        <location filename="../gis/CGisListWks.cpp" line="737"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Cargando espacio de trabajo. Por favor espere.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="918"/>
+        <location filename="../gis/CGisListWks.cpp" line="921"/>
         <source>Close all projects...</source>
         <translation>Cerrar todos los proyectos...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="918"/>
+        <location filename="../gis/CGisListWks.cpp" line="921"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Esto quitará.todos los proyectos.del espacio de trabajo.</translation>
     </message>
@@ -517,12 +522,12 @@
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="419"/>
+        <location filename="../gis/CGisWidget.cpp" line="444"/>
         <source>Cut Track...</source>
         <translation>Partir Track...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="419"/>
+        <location filename="../gis/CGisWidget.cpp" line="444"/>
         <source>Do you want to delete the original track?</source>
         <translation>¿Desea borrar el track original?</translation>
     </message>
@@ -573,22 +578,22 @@
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="487"/>
+        <location filename="../CMainWindow.cpp" line="492"/>
         <source>Ele: %1%2</source>
         <translation>Alt: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="613"/>
+        <location filename="../CMainWindow.cpp" line="618"/>
         <source>Load GIS Data...</source>
         <translation>Cargar Datos GIS...</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="647"/>
+        <location filename="../CMainWindow.cpp" line="652"/>
         <source>Select output file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="673"/>
+        <location filename="../CMainWindow.cpp" line="678"/>
         <source>Select file to load</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2225,34 +2230,47 @@ no es una definición de sistema de coordenadas válido:
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="83"/>
         <source>Sort By Time</source>
-        <translation>Ordenar por Fecha/Hora</translation>
+        <translation type="vanished">Ordenar por Fecha/Hora</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="70"/>
         <source>Keep Order of Project</source>
-        <translation>Mantener orden del proyecto</translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="99"/>
-        <source>Sort Along Track</source>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">Mantener orden del proyecto</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="127"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="115"/>
         <source>Print diary</source>
         <translation>Imprimir diario</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="106"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="130"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="150"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="94"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="118"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="138"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="147"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="71"/>
+        <source>Keep order of project</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="76"/>
+        <source>Sort by time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="81"/>
+        <source>Sort along track (multiple)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="86"/>
+        <source>Sort along track (single)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="135"/>
         <source>Rebuild diary.</source>
         <translation>Recargar diario.</translation>
     </message>
@@ -3749,8 +3767,9 @@ o
         <location filename="../gis/wpt/IScrOptWpt.ui" line="52"/>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="66"/>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="80"/>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="101"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="98"/>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="115"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="129"/>
         <source>...</source>
         <translation>...</translation>
     </message>
@@ -3765,17 +3784,17 @@ o
         <translation>Eliminar</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="98"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="112"/>
         <source><html><head/><body><p>Move waypoint to a new location.</p></body></html></source>
         <translation><html><head/><body><p>Mover el waypoint a una nueva ubicación.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="112"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="126"/>
         <source><html><head/><body><p>Clone waypoint and move clone a given distance and angle.</p></body></html></source>
         <translation><html><head/><body><p>Clonar el waypoibt y moverlo una cierta distancia y ángulo.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="159"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="173"/>
         <source>TextLabel</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4252,15 +4271,30 @@ o
         <translation>UTC</translation>
     </message>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="29"/>
+        <location filename="../units/ITimeZoneSetup.ui" line="32"/>
         <source>Local</source>
         <translation>Local</translation>
     </message>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="36"/>
+        <location filename="../units/ITimeZoneSetup.ui" line="42"/>
         <source>Automatic</source>
         <translation>Automático</translation>
     </message>
+    <message>
+        <location filename="../units/ITimeZoneSetup.ui" line="75"/>
+        <source>Print date/time in </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../units/ITimeZoneSetup.ui" line="82"/>
+        <source>long format, or</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../units/ITimeZoneSetup.ui" line="92"/>
+        <source>short format</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IUnitsSetup</name>
@@ -4402,7 +4436,7 @@ Filename: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="351"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="370"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
         <translation>¿Desea realmente eleiminar '%1' del proyecto '%2'?</translation>
     </message>
@@ -4413,7 +4447,7 @@ Filename: %1</source>
     </message>
     <message>
         <location filename="../gis/CGisListDB.cpp" line="436"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="352"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="371"/>
         <source>Delete...</source>
         <translation>Borrar...</translation>
     </message>
@@ -4587,12 +4621,12 @@ Filename: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1368"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1370"/>
         <source>Hide points.</source>
         <translation>Ocultar puntos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1414"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1416"/>
         <source>Show points.</source>
         <translation>Mostrar puntos.</translation>
     </message>
@@ -4645,7 +4679,7 @@ Filename: %1</source>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="142"/>
         <location filename="../gis/rte/CGisItemRte.cpp" line="45"/>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="184"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="101"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="131"/>
         <source>_Clone</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4692,39 +4726,39 @@ Filename: %1</source>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="535"/>
         <location filename="../gis/rte/CGisItemRte.cpp" line="154"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1773"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="378"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1775"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="448"/>
         <source>Changed links</source>
         <translation>Se cambió el enlace</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="547"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1785"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1787"/>
         <source>Changed color</source>
         <translation>Se cambió el color</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="244"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="314"/>
         <source>Elevation: %1 %2</source>
         <translation>Altitud: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="255"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="325"/>
         <source>Proximity: %1 %2</source>
         <translation>Proximidad: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1755"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="326"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1757"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="396"/>
         <source>Changed name</source>
         <translation>Se cambió el nombre</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1166"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1181"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1200"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1259"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1439"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1168"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1183"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1202"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1261"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1441"/>
         <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="104"/>
         <source>Edit name...</source>
@@ -4735,61 +4769,61 @@ Filename: %1</source>
         <translation type="vanished">Introduzca el nuevo nombre del waypoint.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="336"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="406"/>
         <source>Changed position</source>
         <translation>Se cambió la posición</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="342"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="412"/>
         <source>Changed elevation</source>
         <translation>Se cambió la altitud</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="348"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="418"/>
         <source>Changed proximity</source>
         <translation>Se cambió la proximidad</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="360"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="430"/>
         <source>Changed icon</source>
         <translation>Se cambió el icono</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="384"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="454"/>
         <source>Changed images</source>
         <translation>Se cambió la imagen</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="390"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="460"/>
         <source>Add image</source>
         <translation>Añadir Imagen</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="142"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1761"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="366"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1763"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="436"/>
         <source>Changed comment</source>
         <translation>Se cambió el comentario</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="148"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1767"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="372"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1769"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="442"/>
         <source>Changed description</source>
         <translation>Se cambió la descripción</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="575"/>
+        <location filename="../gis/gpx/serialization.cpp" line="599"/>
         <source>Archived</source>
         <translation>Archivado</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="579"/>
+        <location filename="../gis/gpx/serialization.cpp" line="603"/>
         <source>Available</source>
         <translation>Disponible</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="583"/>
+        <location filename="../gis/gpx/serialization.cpp" line="607"/>
         <source>Not Available</source>
         <translation>No Disponible</translation>
     </message>
@@ -4859,11 +4893,11 @@ Filename: %1</source>
         <translation><p>--- sin links ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1166"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1181"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1200"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1259"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1439"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1168"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1183"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1202"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1261"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1441"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="104"/>
         <source>Enter new track name.</source>
         <translation>Introduzca el nombre del nuevo track.</translation>
@@ -4970,12 +5004,12 @@ Filename: %1</source>
         <translation>Velocidad modificada a %1%2.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="953"/>
+        <location filename="../gis/CGisListWks.cpp" line="956"/>
         <source>Delete project...</source>
         <translation>Eliminar Proyecto...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="953"/>
+        <location filename="../gis/CGisListWks.cpp" line="956"/>
         <source>Do you really want to delete %1?</source>
         <translation>¿Desea realmente eliminar %1?</translation>
     </message>
diff --git a/src/locale/qmapshack_fr.ts b/src/locale/qmapshack_fr.ts
index db44333..1a28452 100644
--- a/src/locale/qmapshack_fr.ts
+++ b/src/locale/qmapshack_fr.ts
@@ -4,7 +4,7 @@
 <context>
     <name>CCanvas</name>
     <message>
-        <location filename="../canvas/CCanvas.cpp" line="62"/>
+        <location filename="../canvas/CCanvas.cpp" line="63"/>
         <source>View %1</source>
         <translation>Vue %1</translation>
     </message>
@@ -115,91 +115,91 @@
 <context>
     <name>CDetailsPrj</name>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="194"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="556"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="175"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="537"/>
         <source>none</source>
         <translation>aucun</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="253"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="234"/>
         <source>Build diary...</source>
         <translation>Créer le journal...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="253"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="234"/>
         <source>Abort</source>
         <translation>Annuler</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="311"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="292"/>
         <source><h2>Waypoints</h2></source>
         <translation><h2>Waypoints</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="274"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="318"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="349"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="457"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="255"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="299"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="330"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="438"/>
         <source>Info</source>
         <translation>Information</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="275"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="319"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="350"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="458"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="256"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="300"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="331"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="439"/>
         <source>Comment</source>
         <translation>Commentaire</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="342"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="323"/>
         <source><h2>Tracks</h2></source>
         <translation><h2>Traces</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="267"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="248"/>
         <source><h2>Areas</h2></source>
         <translation><h2>Surfaces</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="480"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="461"/>
         <source>distance: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="482"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="463"/>
         <source>ascent: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="484"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="465"/>
         <source>descend: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="542"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="569"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="523"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="550"/>
         <source>Edit name...</source>
         <translation>Éditer le nom...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="542"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="569"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="523"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="550"/>
         <source>Enter new project name.</source>
         <translation>Saisir le nom du projet.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="551"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="532"/>
         <source>Edit keywords...</source>
         <translation>Éditer les mots-clés...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="551"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="532"/>
         <source>Enter keywords.</source>
         <translation>Saisir les mots-clés.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="685"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="666"/>
         <source>Print Diary</source>
         <translation>Imprimer le journal</translation>
     </message>
@@ -422,43 +422,48 @@
     </message>
     <message>
         <location filename="../gis/CGisListWks.cpp" line="132"/>
+        <source>Show Bubble</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="134"/>
         <source>Move Waypoint</source>
         <translation>Déplacer le waypoint</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="133"/>
+        <location filename="../gis/CGisListWks.cpp" line="135"/>
         <source>Proj. Waypoint...</source>
         <translation>Projection du waypoint...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="147"/>
+        <location filename="../gis/CGisListWks.cpp" line="149"/>
         <source>Edit Area Points</source>
         <translation>Éditer les points de la surface</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="694"/>
+        <location filename="../gis/CGisListWks.cpp" line="696"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Sauvegarde de l'espace de travail. Patientez.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="735"/>
+        <location filename="../gis/CGisListWks.cpp" line="737"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Chargement de l'espace de travail. Patientez.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="918"/>
+        <location filename="../gis/CGisListWks.cpp" line="921"/>
         <source>Close all projects...</source>
         <translation>Fermer tous les projets...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="918"/>
+        <location filename="../gis/CGisListWks.cpp" line="921"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Ceci enlevera tous les projets de l'espace de travail.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="594"/>
-        <location filename="../gis/CGisListWks.cpp" line="1283"/>
-        <location filename="../gis/CGisListWks.cpp" line="1322"/>
+        <location filename="../gis/CGisListWks.cpp" line="596"/>
+        <location filename="../gis/CGisListWks.cpp" line="1296"/>
+        <location filename="../gis/CGisListWks.cpp" line="1335"/>
         <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
         <translation><b>Mise à jour des appareils</b><p>Mise à jour de %1<br/>Patientez...</p></translation>
     </message>
@@ -466,12 +471,12 @@
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="419"/>
+        <location filename="../gis/CGisWidget.cpp" line="444"/>
         <source>Cut Track...</source>
         <translation>Couper la trace...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="419"/>
+        <location filename="../gis/CGisWidget.cpp" line="444"/>
         <source>Do you want to delete the original track?</source>
         <translation>Voulez-vous garder la trace originale ?</translation>
     </message>
@@ -518,22 +523,22 @@
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="487"/>
+        <location filename="../CMainWindow.cpp" line="492"/>
         <source>Ele: %1%2</source>
         <translation>Altitude: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="613"/>
+        <location filename="../CMainWindow.cpp" line="618"/>
         <source>Load GIS Data...</source>
         <translation>Charger des données SIG...</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="647"/>
+        <location filename="../CMainWindow.cpp" line="652"/>
         <source>Select output file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="673"/>
+        <location filename="../CMainWindow.cpp" line="678"/>
         <source>Select file to load</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2152,34 +2157,47 @@ n'est pas une définition de système de coordonnées:
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="83"/>
-        <source>Sort By Time</source>
-        <translation>Trier par date</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="81"/>
+        <source>Sort along track (multiple)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="70"/>
-        <source>Keep Order of Project</source>
-        <translation>Conserver l'ordre du projet</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="86"/>
+        <source>Sort along track (single)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="99"/>
-        <source>Sort Along Track</source>
-        <translation type="unfinished"></translation>
+        <source>Sort By Time</source>
+        <translation type="vanished">Trier par date</translation>
+    </message>
+    <message>
+        <source>Keep Order of Project</source>
+        <translation type="vanished">Conserver l'ordre du projet</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="127"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="115"/>
         <source>Print diary</source>
         <translation>Imprimer le journal</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="106"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="130"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="150"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="94"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="118"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="138"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="147"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="71"/>
+        <source>Keep order of project</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="76"/>
+        <source>Sort by time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="135"/>
         <source>Rebuild diary.</source>
         <translation>Restaurer le journal...</translation>
     </message>
@@ -3655,8 +3673,9 @@ or
         <location filename="../gis/wpt/IScrOptWpt.ui" line="52"/>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="66"/>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="80"/>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="101"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="98"/>
         <location filename="../gis/wpt/IScrOptWpt.ui" line="115"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="129"/>
         <source>...</source>
         <translation></translation>
     </message>
@@ -3671,17 +3690,17 @@ or
         <translation><html><head/><body><p>Supprimer</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="98"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="112"/>
         <source><html><head/><body><p>Move waypoint to a new location.</p></body></html></source>
         <translation><html><head/><body><p>Déplacer le waypoint à une nouvelle position.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="112"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="126"/>
         <source><html><head/><body><p>Clone waypoint and move clone a given distance and angle.</p></body></html></source>
         <translation><html><head/><body><p>Dupliquer le waypoint et déplacer la copie par une distance et un angle donnés .</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="159"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="173"/>
         <source>TextLabel</source>
         <translation>Libellé</translation>
     </message>
@@ -4124,15 +4143,30 @@ or
         <translation>UTC</translation>
     </message>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="29"/>
+        <location filename="../units/ITimeZoneSetup.ui" line="32"/>
         <source>Local</source>
         <translation>Local</translation>
     </message>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="36"/>
+        <location filename="../units/ITimeZoneSetup.ui" line="42"/>
         <source>Automatic</source>
         <translation>Automatique</translation>
     </message>
+    <message>
+        <location filename="../units/ITimeZoneSetup.ui" line="75"/>
+        <source>Print date/time in </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../units/ITimeZoneSetup.ui" line="82"/>
+        <source>long format, or</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../units/ITimeZoneSetup.ui" line="92"/>
+        <source>short format</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IUnitsSetup</name>
@@ -4195,17 +4229,17 @@ or
     </message>
     <message>
         <location filename="../gis/CGisListDB.cpp" line="436"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="352"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="371"/>
         <source>Delete...</source>
         <translation>Supprimer...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="953"/>
+        <location filename="../gis/CGisListWks.cpp" line="956"/>
         <source>Delete project...</source>
         <translation>Supprimer le projet</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="953"/>
+        <location filename="../gis/CGisListWks.cpp" line="956"/>
         <source>Do you really want to delete %1?</source>
         <translation>Êtes-vous sûr de vouloir supprimer %1?</translation>
     </message>
@@ -4304,17 +4338,17 @@ ligne %2, colonne %3:
         <translation>Impossible d'enregistrer les données SIG...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="575"/>
+        <location filename="../gis/gpx/serialization.cpp" line="599"/>
         <source>Archived</source>
         <translation>Archivé</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="579"/>
+        <location filename="../gis/gpx/serialization.cpp" line="603"/>
         <source>Available</source>
         <translation>Disponible</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="583"/>
+        <location filename="../gis/gpx/serialization.cpp" line="607"/>
         <source>Not Available</source>
         <translation>Non disponible</translation>
     </message>
@@ -4391,7 +4425,7 @@ ligne %2, colonne %3:
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="142"/>
         <location filename="../gis/rte/CGisItemRte.cpp" line="45"/>
         <location filename="../gis/trk/CGisItemTrk.cpp" line="184"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="101"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="131"/>
         <source>_Clone</source>
         <translation>_Clone</translation>
     </message>
@@ -4438,14 +4472,14 @@ ligne %2, colonne %3:
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="535"/>
         <location filename="../gis/rte/CGisItemRte.cpp" line="154"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1773"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="378"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1775"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="448"/>
         <source>Changed links</source>
         <translation>Liens modifiés...</translation>
     </message>
     <message>
         <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="547"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1785"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1787"/>
         <source>Changed color</source>
         <translation>Couleur modifiée...</translation>
     </message>
@@ -4487,21 +4521,21 @@ Nom de fichier: %1</translation>
         <translation>Surfaces: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="351"/>
+        <location filename="../gis/prj/IGisProject.cpp" line="370"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
         <translation>Êtes-vous sûr de vouloir supprimer %1 du projet '%2'?</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="142"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1761"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="366"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1763"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="436"/>
         <source>Changed comment</source>
         <translation>Commentaire modifié</translation>
     </message>
     <message>
         <location filename="../gis/rte/CGisItemRte.cpp" line="148"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1767"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="372"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1769"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="442"/>
         <source>Changed description</source>
         <translation>Description modifiée</translation>
     </message>
@@ -4685,39 +4719,39 @@ Nom de fichier: %1</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1166"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1181"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1200"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1259"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1439"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1168"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1183"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1202"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1261"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1441"/>
         <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="104"/>
         <source>Edit name...</source>
         <translation>Éditer le nom...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1166"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1181"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1200"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1259"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1439"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1168"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1183"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1202"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1261"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1441"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="104"/>
         <source>Enter new track name.</source>
         <translation>Saisir le nouveau nom de la trace.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1368"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1370"/>
         <source>Hide points.</source>
         <translation>Cacher des points.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1414"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1416"/>
         <source>Show points.</source>
         <translation>Afficher les points.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1755"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="326"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1757"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="396"/>
         <source>Changed name</source>
         <translation>Nom modifié</translation>
     </message>
@@ -4776,42 +4810,42 @@ Nom de fichier: %1</translation>
         <translation type="vanished">Saisir le nouveau nom du waypoint.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="244"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="314"/>
         <source>Elevation: %1 %2</source>
         <translation>Altitude: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="255"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="325"/>
         <source>Proximity: %1 %2</source>
         <translation>Proximité: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="336"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="406"/>
         <source>Changed position</source>
         <translation>Position modifiée</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="342"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="412"/>
         <source>Changed elevation</source>
         <translation>Altitude modifiée</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="348"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="418"/>
         <source>Changed proximity</source>
         <translation>Rayon de proximité modifié</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="360"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="430"/>
         <source>Changed icon</source>
         <translation>Icône modifié</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="384"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="454"/>
         <source>Changed images</source>
         <translation>Images modifiées</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="390"/>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="460"/>
         <source>Add image</source>
         <translation>Ajouter une image</translation>
     </message>
diff --git a/src/mouse/CMouseNormal.cpp b/src/mouse/CMouseNormal.cpp
index 01bbeb5..8476c0e 100644
--- a/src/mouse/CMouseNormal.cpp
+++ b/src/mouse/CMouseNormal.cpp
@@ -107,6 +107,8 @@ void CMouseNormal::mouseMoveEvent(QMouseEvent * e)
         switch(stateItemSel)
         {
         case eStateIdle:
+            CGisWidget::self().mouseMove(point);
+
         case eStateHooverSingle:
         case eStateHooverMultiple:
         {
@@ -330,7 +332,10 @@ void CMouseNormal::slotAddWpt()
         return;
     }
 
-    new CGisItemWpt(pt, name, icon, project);
+    CGisItemWpt * wpt = new CGisItemWpt(pt, name, icon, project);
+    wpt->edit();
+
+
     canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
 }
 
diff --git a/src/mouse/CMouseRangeTrk.h b/src/mouse/CMouseRangeTrk.h
index 138ee3b..5afeb01 100644
--- a/src/mouse/CMouseRangeTrk.h
+++ b/src/mouse/CMouseRangeTrk.h
@@ -30,7 +30,7 @@ class CScrOptRangeTrk;
 
 class CMouseRangeTrk : public IMouse
 {
-    Q_OBJECT;
+    Q_OBJECT
 public:
     CMouseRangeTrk(CGisItemTrk& trk, CGisDraw * gis, CCanvas * parent);
     virtual ~CMouseRangeTrk();
diff --git a/src/mouse/CMouseWptBubble.cpp b/src/mouse/CMouseWptBubble.cpp
new file mode 100644
index 0000000..0eaf03d
--- /dev/null
+++ b/src/mouse/CMouseWptBubble.cpp
@@ -0,0 +1,88 @@
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "canvas/CCanvas.h"
+#include "gis/CGisWidget.h"
+#include "gis/wpt/CGisItemWpt.h"
+#include "mouse/CMouseWptBubble.h"
+
+#include <QtWidgets>
+
+CMouseWptBubble::CMouseWptBubble(const IGisItem::key_t &key, CGisDraw * gis, CCanvas * parent)
+    : IMouse(gis, parent)
+    , key(key)
+{
+    cursor      = QCursor(QPixmap("://cursors/cursorArrow.png"),0,0);
+}
+
+CMouseWptBubble::~CMouseWptBubble()
+{
+}
+
+void CMouseWptBubble::draw(QPainter& p, bool needsRedraw, const QRect &rect)
+{
+}
+
+void CMouseWptBubble::mousePressEvent(QMouseEvent * e)
+{
+    QPointF pos = e->pos();
+
+    CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(CGisWidget::self().getItemByKey(key));
+    if(wpt)
+    {
+        wpt->mousePress(pos);
+    }
+    else
+    {
+        canvas->resetMouse();
+    }
+}
+
+void CMouseWptBubble::mouseMoveEvent(QMouseEvent * e)
+{
+    QPointF pos = e->pos();
+
+    CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(CGisWidget::self().getItemByKey(key));
+    if(wpt)
+    {
+        wpt->mouseMove(pos);
+    }
+    else
+    {
+        canvas->resetMouse();
+    }
+}
+
+void CMouseWptBubble::mouseReleaseEvent(QMouseEvent *e)
+{
+    QPointF pos = e->pos();
+
+    CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(CGisWidget::self().getItemByKey(key));
+    if(wpt)
+    {
+        wpt->mouseRelease(pos);
+    }
+    else
+    {
+        canvas->resetMouse();
+    }
+}
+
+void CMouseWptBubble::wheelEvent(QWheelEvent * e)
+{
+}
diff --git a/src/gis/wpt/CScrOptWpt.h b/src/mouse/CMouseWptBubble.h
similarity index 62%
copy from src/gis/wpt/CScrOptWpt.h
copy to src/mouse/CMouseWptBubble.h
index 672ace9..8bbad05 100644
--- a/src/gis/wpt/CScrOptWpt.h
+++ b/src/mouse/CMouseWptBubble.h
@@ -16,38 +16,33 @@
 
 **********************************************************************************************/
 
-#ifndef CSCROPTWPT_H
-#define CSCROPTWPT_H
+#ifndef CMOUSEWPTBUBBLE_H
+#define CMOUSEWPTBUBBLE_H
 
 #include "gis/IGisItem.h"
-#include "mouse/IScrOpt.h"
-
-#include "ui_IScrOptWpt.h"
-#include <QWidget>
+#include "mouse/IMouse.h"
 
 class CGisItemWpt;
-class IMouse;
+class CGisDraw;
+class CCanvas;
+
 
-class CScrOptWpt : public IScrOpt, private Ui::IScrOptWpt
+class CMouseWptBubble : public IMouse
 {
     Q_OBJECT
 public:
-    CScrOptWpt(CGisItemWpt * wpt, const QPoint &point, IMouse *parent);
-    virtual ~CScrOptWpt();
-
-    void draw(QPainter& p);
+    CMouseWptBubble(const IGisItem::key_t& key, CGisDraw * gis, CCanvas * parent);
+    virtual ~CMouseWptBubble();
 
-private slots:
-    void slotDelete();
-    void slotEdit();
-    void slotCopy();
-    void slotMove();
-    void slotProj();
+    virtual void draw(QPainter& p, bool needsRedraw, const QRect &rect);
+    virtual void mousePressEvent(QMouseEvent * e);
+    virtual void mouseMoveEvent(QMouseEvent * e);
+    virtual void mouseReleaseEvent(QMouseEvent *e);
+    virtual void wheelEvent(QWheelEvent * e);
 
 private:
-    IGisItem::key_t key;
-    QPointF anchor;
+    const IGisItem::key_t& key;
 };
 
-#endif //CSCROPTWPT_H
+#endif //CMOUSEWPTBUBBLE_H
 
diff --git a/src/resources.qrc b/src/resources.qrc
index d1ec450..789ee00 100644
--- a/src/resources.qrc
+++ b/src/resources.qrc
@@ -140,6 +140,9 @@
         <file>icons/32x32/Save.png</file>
         <file>icons/32x32/ProfileToWindow.png</file>
         <file>icons/32x32/NoGo.png</file>
+        <file>icons/32x32/Bubble.png</file>
+        <file>icons/32x32/MoveArrow.png</file>
+        <file>icons/32x32/SizeArrow.png</file>
 
         <file>icons/48x48/2DFix.png</file>
         <file>icons/48x48/3DFix.png</file>
@@ -262,6 +265,10 @@
         <file>icons/48x48/Save.png</file>
         <file>icons/48x48/ProfileToWindow.png</file>
         <file>icons/48x48/NoGo.png</file>
+        <file>icons/48x48/Bubble.png</file>
+        <file>icons/48x48/MoveArrow.png</file>
+        <file>icons/48x48/SizeArrow.png</file>
+
 
         <file>icons/cache/32x32/bluepin.png</file>
         <file>icons/cache/32x32/cito.png</file>
diff --git a/src/units/CTimeZoneSetup.cpp b/src/units/CTimeZoneSetup.cpp
index eef1dc6..0b71611 100644
--- a/src/units/CTimeZoneSetup.cpp
+++ b/src/units/CTimeZoneSetup.cpp
@@ -26,7 +26,9 @@ CTimeZoneSetup::CTimeZoneSetup(QWidget *parent)
 
     QByteArray zone;
     IUnit::tz_mode_e mode;
-    IUnit::getTimeZoneSetup(mode, zone);
+    bool useShortFormat;
+
+    IUnit::getTimeZoneSetup(mode, zone, useShortFormat);
 
     switch(mode)
     {
@@ -54,6 +56,15 @@ CTimeZoneSetup::CTimeZoneSetup(QWidget *parent)
         tz++;
     }
 
+    if(useShortFormat)
+    {
+        radioShortFormat->setChecked(true);
+    }
+    else
+    {
+        radioLongFormat->setChecked(true);
+    }
+
     comboTimeZone->setCurrentIndex(comboTimeZone->findText(QString(zone)));
 }
 
@@ -65,6 +76,7 @@ void CTimeZoneSetup::accept()
 {
     QByteArray zone = comboTimeZone->currentText().toLatin1();
     IUnit::tz_mode_e mode = IUnit::eTZUtc;
+    bool useShortFormat = false;
 
     if(radioUtc->isChecked())
     {
@@ -83,7 +95,11 @@ void CTimeZoneSetup::accept()
         mode = IUnit::eTZSelected;
     }
 
+    if(radioShortFormat->isChecked())
+    {
+        useShortFormat = true;
+    }
 
-    IUnit::setTimeZoneSetup(mode, zone);
+    IUnit::setTimeZoneSetup(mode, zone, useShortFormat);
     QDialog::accept();
 }
diff --git a/src/units/ITimeZoneSetup.ui b/src/units/ITimeZoneSetup.ui
index 1833750..2313e88 100644
--- a/src/units/ITimeZoneSetup.ui
+++ b/src/units/ITimeZoneSetup.ui
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>398</width>
-    <height>96</height>
+    <height>106</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -21,6 +21,9 @@
        <property name="text">
         <string>UTC</string>
        </property>
+       <attribute name="buttonGroup">
+        <string notr="true">buttonGroup</string>
+       </attribute>
       </widget>
      </item>
      <item>
@@ -28,6 +31,9 @@
        <property name="text">
         <string>Local</string>
        </property>
+       <attribute name="buttonGroup">
+        <string notr="true">buttonGroup</string>
+       </attribute>
       </widget>
      </item>
      <item>
@@ -35,6 +41,9 @@
        <property name="text">
         <string>Automatic</string>
        </property>
+       <attribute name="buttonGroup">
+        <string notr="true">buttonGroup</string>
+       </attribute>
       </widget>
      </item>
      <item>
@@ -48,6 +57,9 @@
        <property name="text">
         <string/>
        </property>
+       <attribute name="buttonGroup">
+        <string notr="true">buttonGroup</string>
+       </attribute>
       </widget>
      </item>
      <item>
@@ -56,6 +68,50 @@
     </layout>
    </item>
    <item>
+    <layout class="QHBoxLayout" name="horizontalLayout_3">
+     <item>
+      <widget class="QLabel" name="label">
+       <property name="text">
+        <string>Print date/time in </string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QRadioButton" name="radioLongFormat">
+       <property name="text">
+        <string>long format, or</string>
+       </property>
+       <attribute name="buttonGroup">
+        <string notr="true">buttonGroup_2</string>
+       </attribute>
+      </widget>
+     </item>
+     <item>
+      <widget class="QRadioButton" name="radioShortFormat">
+       <property name="text">
+        <string>short format</string>
+       </property>
+       <attribute name="buttonGroup">
+        <string notr="true">buttonGroup_2</string>
+       </attribute>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
     <spacer name="verticalSpacer">
      <property name="orientation">
       <enum>Qt::Vertical</enum>
@@ -119,4 +175,8 @@
    </hints>
   </connection>
  </connections>
+ <buttongroups>
+  <buttongroup name="buttonGroup"/>
+  <buttongroup name="buttonGroup_2"/>
+ </buttongroups>
 </ui>
diff --git a/src/units/IUnit.cpp b/src/units/IUnit.cpp
index 8daa8fb..4a49313 100644
--- a/src/units/IUnit.cpp
+++ b/src/units/IUnit.cpp
@@ -29,6 +29,7 @@ const QPoint NOPOINT (NOINT, NOINT);
 
 IUnit::tz_mode_e IUnit::timeZoneMode = IUnit::eTZUtc;
 QByteArray IUnit::timeZone = "UTC";
+bool IUnit::useShortFormat = false;
 
 const char * IUnit::tblTimezone[] =
 {
@@ -587,7 +588,7 @@ QString IUnit::datetime2string(const QDateTime& time, bool shortDate, const QPoi
     }
 
     QDateTime tmp = time.toTimeZone(tz);
-    return tmp.toString(shortDate ? Qt::ISODate : Qt::SystemLocaleLongDate);
+    return tmp.toString((shortDate|useShortFormat) ? Qt::ISODate : Qt::SystemLocaleLongDate);
 }
 
 QByteArray IUnit::pos2timezone(const QPointF& pos)
diff --git a/src/units/IUnit.h b/src/units/IUnit.h
index 93477ea..a3946d9 100644
--- a/src/units/IUnit.h
+++ b/src/units/IUnit.h
@@ -84,13 +84,13 @@ public:
         ,eTZSelected
     };
 
-    static void getTimeZoneSetup(tz_mode_e& mode, QByteArray& zone)
+    static void getTimeZoneSetup(tz_mode_e& mode, QByteArray& zone, bool& format)
     {
-        mode = timeZoneMode; zone = timeZone;
+        mode = timeZoneMode; zone = timeZone; format = useShortFormat;
     }
-    static void setTimeZoneSetup(tz_mode_e mode, const QByteArray& zone)
+    static void setTimeZoneSetup(tz_mode_e mode, const QByteArray& zone, bool format)
     {
-        timeZoneMode = mode; timeZone = zone;
+        timeZoneMode = mode; timeZone = zone; useShortFormat = format;
     }
 
 protected:
@@ -100,6 +100,7 @@ protected:
 
     static tz_mode_e timeZoneMode;
     static QByteArray timeZone;
+    static bool useShortFormat;
 
 
 private:

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