find patches attached ;-)
Besides the split command patch, there is also another patch that
slightly changes the splitting behavior: IMHO it's desirable to keep the
split point in both segments for several reasons:
- there is no need for the user to consider the direction of the track
and to remember in which segment the split point will end
- the sum of the length of both segments equals the length of the
original track
- splitting at the first or last track point will not result in empty
segments
Regards,
Michael
--
[email protected]:~ > ps -ef | grep msblast.exe
502 25710 25707 0 0:00.01 ttys001 0:00.01 grep msblast.exe
Puh, that was lucky!
From 0af30c904412838df89a2cc2d64ea805b7e635c5 Mon Sep 17 00:00:00 2001
From: Michael Klein <[email protected]>
Date: Wed, 7 Mar 2012 21:51:23 +0100
Subject: [PATCH 1/4] fixed typo
---
src/locale/qlandkartegt_de.ts | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/locale/qlandkartegt_de.ts b/src/locale/qlandkartegt_de.ts
index ffe9ca9..6addd1e 100644
--- a/src/locale/qlandkartegt_de.ts
+++ b/src/locale/qlandkartegt_de.ts
@@ -2865,7 +2865,7 @@ ist keine gültige Koordinatensystemdefinition
<message>
<location filename="../CGeoDB.cpp" line="219"/>
<source>Add to database</source>
- <translation>Zur Datanbank hinzufügen</translation>
+ <translation>Zur Datenbank hinzufügen</translation>
</message>
<message>
<location filename="../CGeoDB.cpp" line="220"/>
--
1.7.9
From 219343925d2ea21a5db503f05987fa7857600c9b Mon Sep 17 00:00:00 2001
From: Michael Klein <[email protected]>
Date: Wed, 7 Mar 2012 21:53:24 +0100
Subject: [PATCH 3/4] add "Split Track" command to context menu
---
src/CMouseMoveMap.cpp | 9 +++++++++
src/CMouseMoveMap.h | 3 ++-
2 files changed, 11 insertions(+), 1 deletions(-)
diff --git a/src/CMouseMoveMap.cpp b/src/CMouseMoveMap.cpp
index 5ed54d2..9249597 100644
--- a/src/CMouseMoveMap.cpp
+++ b/src/CMouseMoveMap.cpp
@@ -221,6 +221,7 @@ void CMouseMoveMap::contextMenu(QMenu& menu)
menu.addAction(QPixmap(":/icons/iconGoogleMaps16x16.png"),tr("Open
Pos. with Google Maps"),this,SLOT(slotOpenGoogleMaps())); //TODO: Google Maps
right click
menu.addAction(QPixmap(":/icons/iconClipboard16x16.png"),tr("Copy Pos.
Trackpoint"),this,SLOT(slotCopyPositionTrack()));
menu.addAction(QPixmap(":/icons/iconEdit16x16.png"),tr("Edit Track
..."),this,SLOT(slotEditTrack()));
+ menu.addAction(QPixmap(":/icons/iconEditCut16x16.png"),tr("Split Track
..."),this,SLOT(slotSplitTrack()));
}
menu.addSeparator();
@@ -469,6 +470,14 @@ void CMouseMoveMap::slotEditTrack()
}
}
+void CMouseMoveMap::slotSplitTrack()
+{
+ if(selTrkPt)
+ {
+ CTrackDB::self().splitTrack(selTrkPt->idx);
+ }
+}
+
void CMouseMoveMap::slotOpenGoogleMaps() //TODO: Open Google Maps
{
QString position;
diff --git a/src/CMouseMoveMap.h b/src/CMouseMoveMap.h
index ddb1ef5..32b1492 100644
--- a/src/CMouseMoveMap.h
+++ b/src/CMouseMoveMap.h
@@ -52,7 +52,8 @@ class CMouseMoveMap : public IMouse
void slotAddWpt();
void slotCopyPositionTrack();
void slotEditTrack();
- void slotOpenGoogleMaps(); //TODO: GOOGLE MAPS
+ void slotSplitTrack();
+ void slotOpenGoogleMaps(); //TODO: GOOGLE MAPS
void slotCopyPosDegree();
void slotCopyPosGrid();
--
1.7.9
From 3885a3767a81a6749d0e2e4501e8e1efc3ccc149 Mon Sep 17 00:00:00 2001
From: Michael Klein <[email protected]>
Date: Wed, 7 Mar 2012 21:51:38 +0100
Subject: [PATCH 2/4] when splitting a track, retain split point in both
segments
---
src/CTrackDB.cpp | 16 +++++++++-------
1 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/src/CTrackDB.cpp b/src/CTrackDB.cpp
index 600c78f..9c5c05b 100644
--- a/src/CTrackDB.cpp
+++ b/src/CTrackDB.cpp
@@ -786,24 +786,26 @@ void CTrackDB::splitTrack(int idx)
CTrack * theTrack = highlightedTrack();
if(theTrack == 0) return;
- int i;
- QList<CTrack::pt_t>& track = theTrack->getTrackPoints();
- QList<CTrack::pt_t>::iterator trkpt = track.begin();
+ QList<CTrack::pt_t>& track = theTrack->getTrackPoints();
+ if(track.size() < idx - 1) return;
+
+ QList<CTrack::pt_t>::iterator trkpt, splitpt = track.begin() + idx;
CTrack * track1 = new CTrack(this);
track1->setName(theTrack->getName() + "_1");
track1->setColor(theTrack->getColorIdx());
- for(i = 0; (i <= idx) && (trkpt != track.end()); ++i)
+
+ for (trkpt = track.begin(); trkpt != splitpt + 1; ++trkpt)
{
- *track1 << *trkpt++;
+ *track1 << *trkpt;
}
CTrack * track2 = new CTrack(this);
track2->setName(theTrack->getName() + "_2");
track2->setColor(theTrack->getColorIdx());
- for( ;(trkpt != track.end()); ++i)
+ for (trkpt = splitpt; trkpt != track.end(); ++trkpt)
{
- *track2 << *trkpt++;
+ *track2 << *trkpt;
}
addTrack(track1, true);
--
1.7.9
From 2c4d436664035cb92d4a923a5c18bb2e87c77bc5 Mon Sep 17 00:00:00 2001
From: Michael Klein <[email protected]>
Date: Wed, 7 Mar 2012 21:54:13 +0100
Subject: [PATCH 4/4] stop mouse tracking while the context menu is executing
this works around a race condition on (at least) OS X where mouse move
events were dispatched between clicking a context menu item and executing
the respective action slot.
---
src/CCanvas.cpp | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/src/CCanvas.cpp b/src/CCanvas.cpp
index f4be4e4..84c84c2 100644
--- a/src/CCanvas.cpp
+++ b/src/CCanvas.cpp
@@ -806,7 +806,9 @@ void CCanvas::raiseContextMenu(const QPoint& pos)
mouse->contextMenu(menu);
QPoint p = mapToGlobal(pos);
+ setMouseTracking(false);
menu.exec(p);
+ setMouseTracking(true);
}
--
1.7.9
------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Qlandkartegt-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/qlandkartegt-users