[GRASS-SVN] r34025 - grass/trunk/gui/wxpython/gui_modules
svn_grass at osgeo.org
svn_grass at osgeo.org
Mon Oct 27 15:27:24 EDT 2008
Author: martinl
Date: 2008-10-27 15:27:24 -0400 (Mon, 27 Oct 2008)
New Revision: 34025
Modified:
grass/trunk/gui/wxpython/gui_modules/mapdisp.py
grass/trunk/gui/wxpython/gui_modules/toolbars.py
Log:
wxGUI/vdigit: fix object placement when display region is changed
(merge from devbr6, r34024)
Modified: grass/trunk/gui/wxpython/gui_modules/mapdisp.py
===================================================================
--- grass/trunk/gui/wxpython/gui_modules/mapdisp.py 2008-10-27 19:20:31 UTC (rev 34024)
+++ grass/trunk/gui/wxpython/gui_modules/mapdisp.py 2008-10-27 19:27:24 UTC (rev 34025)
@@ -736,6 +736,18 @@
if item and self.tree.IsItemChecked(item):
self.parent.digit.driver.DrawMap()
+ # translate tmp objects (pointer position)
+ if digitToolbar.GetAction() == 'moveLine':
+ if hasattr(self, "vdigitMove") and \
+ self.vdigitMove.has_key('beginDiff'):
+ # move line
+ for id in self.vdigitMove['id']:
+ # print self.pdcTmp.GetIdBounds(id)
+ self.pdcTmp.TranslateId(id,
+ self.vdigitMove['beginDiff'][0],
+ self.vdigitMove['beginDiff'][1])
+ del self.vdigitMove['beginDiff']
+
#
# render overlays
#
@@ -758,6 +770,7 @@
#
if len(self.polycoords) > 0:
self.DrawLines(self.pdcTmp)
+
if self.parent.gismanager.georectifying:
# -> georectifier (redraw GCPs)
if self.parent.toolbars['georect']:
@@ -781,7 +794,7 @@
Debug.msg (2, "BufferedWindow.UpdateMap(): render=%s, renderVector=%s -> time=%g" % \
(render, renderVector, (stop-start)))
-
+
return True
def DrawCompRegionExtent(self):
@@ -952,7 +965,7 @@
if not polycoords:
polycoords = self.polycoords
-
+
if len(polycoords) > 0:
self.plineid = wx.ID_NEW + 1
# convert from EN to XY
@@ -1193,7 +1206,7 @@
# add new point to the line
self.polycoords.append(self.Pixel2Cell(event.GetPositionTuple()[:]))
self.DrawLines(pdc=self.pdcTmp)
-
+
elif digitToolbar.GetAction() == "editLine" and hasattr(self, "vdigitMove"):
self.polycoords.append(self.Pixel2Cell(self.mouse['begin']))
self.vdigitMove['id'].append(wx.NewId())
@@ -1913,7 +1926,8 @@
# digitization tool
if self.mouse["use"] == "pointer" and digitToolbar:
digitClass = self.parent.digit
- if (digitToolbar.GetAction() == "addLine" and digitToolbar.GetAction('type') in ["line", "boundary"]) or \
+ if (digitToolbar.GetAction() == "addLine" and \
+ digitToolbar.GetAction('type') in ["line", "boundary"]) or \
digitToolbar.GetAction() == "editLine":
# add line or boundary -> remove last point from the line
try:
@@ -1984,11 +1998,6 @@
and hasattr(self, "vdigitMove"):
dx = self.mouse['end'][0] - self.mouse['begin'][0]
dy = self.mouse['end'][1] - self.mouse['begin'][1]
- if self.vdigitMove.has_key('beginDiff'):
- if digitToolbar.GetAction() == 'moveLine':
- dx += self.vdigitMove['beginDiff'][0]
- dy += self.vdigitMove['beginDiff'][1]
- del self.vdigitMove['beginDiff']
if len(self.vdigitMove['id']) > 0:
# draw lines on new position
@@ -2168,12 +2177,10 @@
ce = newreg['w'] + (newreg['e'] - newreg['w']) / 2
cn = newreg['s'] + (newreg['n'] - newreg['s']) / 2
if hasattr(self, "vdigitMove"):
- xo = self.Cell2Pixel((self.Map.region['center_easting'], self.Map.region['center_northing']))
- xn = self.Cell2Pixel((ce, cn))
- self.vdigitMove['beginDiff'] = (xn[0] - xo[0], xn[1] - xo[1])
- for id in self.vdigitMove['id']:
- self.pdcTmp.RemoveId(id)
-
+ # xo = self.Cell2Pixel((self.Map.region['center_easting'], self.Map.region['center_northing']))
+ # xn = self.Cell2Pixel(ce, cn))
+ tmp = self.Pixel2Cell(self.mouse['end'])
+
# calculate new center point and display resolution
self.Map.region['center_easting'] = ce
self.Map.region['center_northing'] = cn
@@ -2181,6 +2188,15 @@
self.Map.region["nsres"] = (newreg['n'] - newreg['s']) / self.Map.height
self.Map.AlignExtentFromDisplay()
+ if hasattr(self, "vdigitMove"):
+ tmp1 = self.mouse['end']
+ tmp2 = self.Cell2Pixel(self.vdigitMove['begin'])
+ dx = tmp1[0] - tmp2[0]
+ dy = tmp1[1] - tmp2[1]
+ self.vdigitMove['beginDiff'] = (dx, dy)
+ for id in self.vdigitMove['id']:
+ self.pdcTmp.RemoveId(id)
+
self.ZoomHistory(self.Map.region['n'], self.Map.region['s'],
self.Map.region['e'], self.Map.region['w'])
@@ -2885,7 +2901,7 @@
(e, n, distance_seg, distance_tot), 0)
else:
self.statusbar.SetStatusText("%.2f, %.2f" % (e, n), 0)
-
+
event.Skip()
def OnDraw(self, event):
Modified: grass/trunk/gui/wxpython/gui_modules/toolbars.py
===================================================================
--- grass/trunk/gui/wxpython/gui_modules/toolbars.py 2008-10-27 19:20:31 UTC (rev 34024)
+++ grass/trunk/gui/wxpython/gui_modules/toolbars.py 2008-10-27 19:27:24 UTC (rev 34025)
@@ -567,6 +567,10 @@
else:
# initialize toolbar
self.toolbar[0].ToggleTool(self.action['id'], True)
+
+ # clear tmp canvas
+ if self.action['id'] != id:
+ self.parent.MapWindow.ClearLines(pdc=self.parent.MapWindow.pdcTmp)
def OnAddPoint(self, event):
"""Add point to the vector map Laier"""
@@ -583,16 +587,18 @@
'type' : "line",
'id' : self.addLine }
self.parent.MapWindow.mouse['box'] = 'line'
- self.parent.MapWindow.polycoords = [] # reset temp line
+ ### self.parent.MapWindow.polycoords = [] # reset temp line
def OnAddBoundary(self, event):
"""Add boundary to the vector map layer"""
Debug.msg (2, "VDigitToolbar.OnAddBoundary()")
+ if self.action['desc'] != 'addLine' or \
+ self.action['type'] != 'boundary':
+ self.parent.MapWindow.polycoords = [] # reset temp line
self.action = { 'desc' : "addLine",
'type' : "boundary",
'id' : self.addBoundary }
self.parent.MapWindow.mouse['box'] = 'line'
- self.parent.MapWindow.polycoords = [] # reset temp line
def OnAddCentroid(self, event):
"""Add centroid to the vector map layer"""
More information about the grass-commit
mailing list