[GRASS-SVN] r48273 -
grass/branches/releasebranch_6_4/gui/wxpython/gui_modules
svn_grass at osgeo.org
svn_grass at osgeo.org
Tue Sep 13 16:09:03 EDT 2011
Author: annakrat
Date: 2011-09-13 13:09:03 -0700 (Tue, 13 Sep 2011)
New Revision: 48273
Modified:
grass/branches/releasebranch_6_4/gui/wxpython/gui_modules/psmap.py
grass/branches/releasebranch_6_4/gui/wxpython/gui_modules/psmap_dialogs.py
Log:
wx.psmap: fix color setting; read and write page orientation (merge from trunk, r48271)
Modified: grass/branches/releasebranch_6_4/gui/wxpython/gui_modules/psmap.py
===================================================================
--- grass/branches/releasebranch_6_4/gui/wxpython/gui_modules/psmap.py 2011-09-13 20:08:04 UTC (rev 48272)
+++ grass/branches/releasebranch_6_4/gui/wxpython/gui_modules/psmap.py 2011-09-13 20:09:03 UTC (rev 48273)
@@ -389,7 +389,6 @@
if not filename:
return
# load instructions
- #filename = '/home/anna/Desktop/reading.txt'
readObjectId = []
readInstruction = Instruction(parent = self, objectsToDraw = readObjectId)
ok = readInstruction.Read(filename)
@@ -402,6 +401,7 @@
self.canvas.UpdateMapLabel()
self.canvas.dragId = -1
self.canvas.Clear()
+ self.canvas.SetPage()
#self.canvas.ZoomAll()
self.DialogDataChanged(self.objectId)
@@ -414,6 +414,7 @@
val = dlg.ShowModal()
if val == wx.ID_OK:
self.canvas.SetPage()
+ self.getInitMap()
self.canvas.RecalculatePosition(ids = self.objectId)
dlg.Destroy()
@@ -446,6 +447,7 @@
if self.currentPage == 0:
self.cursorOld = self.canvas.GetCursor()
else:
+ self.cursorOld = self.previewCanvas.GetCursor()
self.previewCanvas.GetCursor()
self.mouse["use"] = "zoomin"
if self.currentPage == 0:
@@ -742,7 +744,8 @@
instrFileFd.flush()
instrFileFd.close()
- mapInitRect = GetMapBounds(instrFile)
+ page = self.instruction.FindInstructionByType('page')
+ mapInitRect = GetMapBounds(instrFile, portrait = (page['Orientation'] == 'Portrait'))
grass.try_remove(instrFile)
region = grass.region()
Modified: grass/branches/releasebranch_6_4/gui/wxpython/gui_modules/psmap_dialogs.py
===================================================================
--- grass/branches/releasebranch_6_4/gui/wxpython/gui_modules/psmap_dialogs.py 2011-09-13 20:08:04 UTC (rev 48272)
+++ grass/branches/releasebranch_6_4/gui/wxpython/gui_modules/psmap_dialogs.py 2011-09-13 20:09:03 UTC (rev 48273)
@@ -240,6 +240,7 @@
env = grass.gisenv()
comment += "# location: %s\n" % env['LOCATION_NAME']
comment += "# mapset: %s\n" % env['MAPSET']
+ comment += "# page orientation: %s\n" % self.FindInstructionByType('page')['Orientation']
border = ''
if not self.FindInstructionByType('map'):
border = 'border n\n'
@@ -313,11 +314,15 @@
return
# first read file to get information about region and scaletype
isRegionComment = False
+ orientation = 'Portrait'
for line in file:
if '# g.region' in line:
self.SetRegion(regionInstruction = line)
isRegionComment = True
break
+ if '# page orientation' in line:
+ orientation = line.split(':')[-1].strip()
+
if not isRegionComment:
self.SetRegion(regionInstruction = None)
# then run ps.map -b to get information for maploc
@@ -325,7 +330,7 @@
map = self.FindInstructionByType('map')
region = grass.region()
map['center'] = (region['n'] + region['s']) / 2, (region['w'] + region['e']) / 2
- mapRect = GetMapBounds(self.filename)
+ mapRect = GetMapBounds(self.filename, portrait = (orientation == 'Portrait'))
map['rect'] = mapRect
proj = projInfo()
toM = 1.0
@@ -360,6 +365,9 @@
kwargs['id'] = wx.NewId()
kwargs['vectorMapNumber'] = vectorMapNumber
vectorMapNumber += 1
+ elif instruction == 'paper':
+ kwargs['Orientation'] = orientation
+
ok = self.SendToRead(instruction, buffer, **kwargs)
if not ok: return False
buffer = []
@@ -499,13 +507,14 @@
if not page:
page = PageSetup(wx.NewId())
self.AddInstruction(page)
+ else:
+ page['Orientation'] = orientation
#
return True
def SendToRead(self, instruction, text, **kwargs):
- #print 'send to read', instruction, text
psmapInstrDict = dict(paper = ['page'],
maploc = ['map'],
scale = ['map'],
@@ -667,7 +676,7 @@
if self.instruction['scaleType'] == 0: #match map
map = self.instruction['map']
if self.instruction['mapType'] == 'raster':
- comment = "# g.region rast=%s cols=%s rows=%s\n" % (map, region['cols'], region['rows'])
+ comment = "# g.region rast=%s nsres=%s ewres=%s\n" % (map, region['nsres'], region['ewres'])
else:
comment = "# g.region vect=%s\n" % (map)
elif self.instruction['scaleType'] == 1:# saved region
@@ -784,12 +793,12 @@
return instr
- def Read(self, instruction, text):
+ def Read(self, instruction, text, **kwargs):
"""!Read instruction and save information"""
instr = {}
self.cats = ['Width', 'Height', 'Left', 'Right', 'Top', 'Bottom']
self.subInstr = dict(zip(['width', 'height', 'left', 'right', 'top', 'bottom'], self.cats))
-
+
if instruction == 'paper': # just for sure
for line in text:
if line.startswith('paper'):
@@ -807,7 +816,6 @@
GError(_("Failed to read instruction %(file)s.\nUnknown format %(for)s") % \
{ 'file' : instruction, 'for' : format })
return False
-
else:
# paper
# width ...
@@ -820,7 +828,10 @@
except (IndexError, KeyError):
GError(_("Failed to read instruction %s.") % instruction)
return False
-
+
+ if 'Orientation' in kwargs and kwargs['Orientation'] == 'Landscape':
+ instr['Width'], instr['Height'] = instr['Height'], instr['Width']
+
self.instruction.update(instr)
return True
@@ -1800,9 +1811,9 @@
size = (110,-1)
#sizers
mainSizer = wx.BoxSizer(wx.VERTICAL)
- pageBox = wx.StaticBox(self, id = wx.ID_ANY, label =" Page size ")
+ pageBox = wx.StaticBox(self, id = wx.ID_ANY, label = " %s " % _("Page size"))
pageSizer = wx.StaticBoxSizer(pageBox, wx.VERTICAL)
- marginBox = wx.StaticBox(self, id = wx.ID_ANY, label = " Margins ")
+ marginBox = wx.StaticBox(self, id = wx.ID_ANY, label = " %s " % _("Margins"))
marginSizer = wx.StaticBoxSizer(marginBox, wx.VERTICAL)
horSizer = wx.BoxSizer(wx.HORIZONTAL)
#staticText + choice
@@ -3225,7 +3236,8 @@
if self.vPropertiesDict['hcolor'] != 'none':
self.colorPicker.SetColour(convertRGB(self.vPropertiesDict['hcolor']) )
else:
- self.colorPicker.SetColour('black')
+ self.colorPicker.SetColour(convertRGB('black'))
+
self.gridBagSizerO.Add(self.outlineCheck, pos = (0, 0), span = (1,2), flag = wx.ALIGN_CENTER_VERTICAL, border = 0)
self.gridBagSizerO.Add(widthText, pos = (1, 1), flag = wx.ALIGN_CENTER_VERTICAL, border = 0)
@@ -3256,7 +3268,7 @@
if self.vPropertiesDict['color'] != 'none':
self.fillColorPicker.SetColour(convertRGB(self.vPropertiesDict['color']) )
else:
- self.fillColorPicker.SetColour('black')
+ self.fillColorPicker.SetColour(convertRGB('black'))
self.colorColRadio = wx.RadioButton(panel, id = wx.ID_ANY, label = _("color from map table column:"))
self.colorColChoice = self.getColsChoice(parent = panel)
@@ -5622,11 +5634,17 @@
return projinfo
-def GetMapBounds(filename):
- """!Run ps.map -b to get information about map bounding box"""
+def GetMapBounds(filename, portrait = True):
+ """!Run ps.map -b to get information about map bounding box
+
+ @param filename psmap input file
+ @param portrait page orientation"""
+ orient = ''
+ if not portrait:
+ orient = 'r'
try:
bb = map(float, grass.read_command('ps.map',
- flags = 'b',
+ flags = 'b' + orient,
quiet = True,
input = filename).strip().split('=')[1].split(','))
except (grass.ScriptError, IndexError):
More information about the grass-commit
mailing list