|
@@ -1,170 +0,0 @@
|
|
|
-"""
|
|
|
-MODULE: rules.py
|
|
|
-
|
|
|
-CLASSES:
|
|
|
- * RulesText
|
|
|
-
|
|
|
-PURPOSE: Dialog for interactive entry of rules for r.colors,
|
|
|
- r.reclass, r.recode, and v.reclass
|
|
|
-
|
|
|
-AUTHORS: The GRASS Development Team
|
|
|
- Michael Barton (Arizona State University)
|
|
|
-
|
|
|
-COPYRIGHT: (C) 2007 by the GRASS Development Team
|
|
|
- This program is free software under the GNU General Public
|
|
|
- License (>=v2). Read the file COPYING that comes with GRASS
|
|
|
- for details.
|
|
|
-
|
|
|
-"""
|
|
|
-
|
|
|
-import os
|
|
|
-import sys
|
|
|
-
|
|
|
-import wx
|
|
|
-
|
|
|
-import gcmd
|
|
|
-import gselect
|
|
|
-import globalvar
|
|
|
-
|
|
|
-class RulesText(wx.Dialog):
|
|
|
- def __init__(self, parent, id=wx.ID_ANY, title=_("Enter rules"),
|
|
|
- pos=wx.DefaultPosition, size=wx.DefaultSize,
|
|
|
- style=wx.DEFAULT_DIALOG_STYLE,
|
|
|
- cmd=None):
|
|
|
- wx.Dialog.__init__(self, parent, id, title, pos, size, style)
|
|
|
-
|
|
|
- """
|
|
|
- Dialog for interactively entering rules
|
|
|
- for map management commands
|
|
|
-
|
|
|
- @param cmd command (given as list)
|
|
|
- """
|
|
|
- self.parent = parent
|
|
|
- self.cmd = cmd # map management command
|
|
|
- self.inmap = '' # input map to change
|
|
|
- self.outmap = '' # output map for reclass/recode
|
|
|
- self.rules = '' # rules for changing
|
|
|
- self.overwrite = False
|
|
|
-
|
|
|
- if self.cmd[0] == 'r.colors':
|
|
|
- label1 = _('Create new color table using color rules')
|
|
|
- label2 = _('Raster map:')
|
|
|
- label3 = None
|
|
|
- label4 = _('Enter color rules')
|
|
|
- seltype = 'cell'
|
|
|
- elif self.cmd[0] == 'r.reclass':
|
|
|
- label1 = _('Reclassify raster map using rules')
|
|
|
- label2 = _('Raster map to reclassify:')
|
|
|
- label3 = _('Reclassified raster map:')
|
|
|
- label4 = _('Enter reclassification rules')
|
|
|
- seltype = 'cell'
|
|
|
- elif self.cmd[0] == 'r.recode':
|
|
|
- label1 = _('Recode raster map using rules')
|
|
|
- label2 = _('Raster map to recode:')
|
|
|
- label3 = _('Recoded raster map:')
|
|
|
- label4 = _('Enter recoding rules')
|
|
|
- seltype = 'cell'
|
|
|
- elif self.cmd[0] == 'v.reclass':
|
|
|
- label1 = _('Reclassify vector map using SQL rules')
|
|
|
- label2 = _('Vector map to reclassify:')
|
|
|
- label3 = _('Reclassified vector map:')
|
|
|
- label4 = _('Enter reclassification rules')
|
|
|
- seltype = 'vector'
|
|
|
-
|
|
|
- # set window frame title
|
|
|
- self.SetTitle(label1)
|
|
|
-
|
|
|
- sizer = wx.BoxSizer(wx.VERTICAL)
|
|
|
- boxSizer = wx.GridBagSizer(hgap=5, vgap=5)
|
|
|
- boxSizer.AddGrowableCol(0)
|
|
|
-
|
|
|
- row = 0
|
|
|
- boxSizer.Add(item=wx.StaticText(parent=self, id=wx.ID_ANY, label=label2),
|
|
|
- flag=wx.ALIGN_CENTER_VERTICAL,
|
|
|
- pos=(row,0))
|
|
|
-
|
|
|
- self.selectionInput = gselect.Select(parent=self, id=wx.ID_ANY, size=globalvar.DIALOG_GSELECT_SIZE,
|
|
|
- type=seltype)
|
|
|
- boxSizer.Add(item=self.selectionInput,
|
|
|
- pos=(row,1))
|
|
|
- row += 1
|
|
|
-
|
|
|
- if self.cmd[0] != 'r.colors':
|
|
|
- boxSizer.Add(item=wx.StaticText(parent=self, id=wx.ID_ANY, label=label3),
|
|
|
- flag=wx.ALIGN_CENTER_VERTICAL,
|
|
|
- pos=(row, 0))
|
|
|
- self.selectionOutput = gselect.Select(parent=self, id=wx.ID_ANY, size=(300,-1),
|
|
|
- type=seltype)
|
|
|
- self.selectionOutput.Bind(wx.EVT_TEXT, self.OnSelectionOutput)
|
|
|
- boxSizer.Add(item=self.selectionOutput,
|
|
|
- pos=(row,1))
|
|
|
- row += 1
|
|
|
- # TODO remove (see Preferences dialog)
|
|
|
- self.ovrwrtcheck = wx.CheckBox(parent=self, id=wx.ID_ANY, label=_('overwrite existing file'))
|
|
|
- self.ovrwrtcheck.SetValue(self.overwrite)
|
|
|
- boxSizer.Add(item=self.ovrwrtcheck,
|
|
|
- pos=(row, 1))
|
|
|
- self.Bind(wx.EVT_CHECKBOX, self.OnOverwrite, self.ovrwrtcheck)
|
|
|
- row += 1
|
|
|
-
|
|
|
- boxSizer.Add(item=wx.StaticText(parent=self, id=wx.ID_ANY, label=label4),
|
|
|
- flag=wx.ALIGN_CENTER_VERTICAL,
|
|
|
- pos=(row, 0))
|
|
|
- helpbtn = wx.Button(parent=self, id=wx.ID_HELP)
|
|
|
- boxSizer.Add(item=helpbtn, flag=wx.ALIGN_RIGHT, pos=(row, 1))
|
|
|
- row += 1
|
|
|
-
|
|
|
- self.rulestxt = wx.TextCtrl(parent=self, id=wx.ID_ANY, value='',
|
|
|
- pos=wx.DefaultPosition, size=(400,150),
|
|
|
- style=wx.TE_MULTILINE |
|
|
|
- wx.HSCROLL |
|
|
|
- wx.TE_NOHIDESEL)
|
|
|
- self.rulestxt.SetFont(wx.Font(10, wx.FONTFAMILY_MODERN, wx.NORMAL, wx.NORMAL, 0, ''))
|
|
|
- boxSizer.Add(item=self.rulestxt, pos=(row, 0), flag=wx.EXPAND, span=(1, 2))
|
|
|
-
|
|
|
- sizer.Add(item=boxSizer, proportion=1,
|
|
|
- flag=wx.ALL ,border=10)
|
|
|
-
|
|
|
- line = wx.StaticLine(parent=self, id=wx.ID_ANY, size=(20,-1), style=wx.LI_HORIZONTAL)
|
|
|
- sizer.Add(item=line, proportion=0,
|
|
|
- flag=wx.GROW | wx.ALIGN_CENTER_VERTICAL | wx.ALL, border=5)
|
|
|
-
|
|
|
- btnsizer = wx.StdDialogButtonSizer()
|
|
|
-
|
|
|
- btn = wx.Button(self, wx.ID_OK)
|
|
|
- btn.SetDefault()
|
|
|
- btnsizer.AddButton(btn)
|
|
|
-
|
|
|
- btn = wx.Button(self, wx.ID_CANCEL)
|
|
|
- btnsizer.AddButton(btn)
|
|
|
- btnsizer.Realize()
|
|
|
-
|
|
|
- sizer.Add(item=btnsizer, proportion=0,
|
|
|
- flag=wx.EXPAND | wx.ALL | wx.ALIGN_CENTER, border=5)
|
|
|
-
|
|
|
- self.SetSizer(sizer)
|
|
|
- sizer.Fit(self)
|
|
|
-
|
|
|
- # bindings
|
|
|
- self.Bind(wx.EVT_BUTTON, self.OnHelp, helpbtn)
|
|
|
- self.selectionInput.Bind(wx.EVT_TEXT, self.OnSelectionInput)
|
|
|
- self.Bind(wx.EVT_TEXT, self.OnRules, self.rulestxt)
|
|
|
-
|
|
|
- def OnSelectionInput(self, event):
|
|
|
- self.inmap = event.GetString()
|
|
|
-
|
|
|
- def OnSelectionOutput(self, event):
|
|
|
- self.outmap = event.GetString()
|
|
|
-
|
|
|
- def OnRules(self, event):
|
|
|
- self.rules = event.GetString().strip()
|
|
|
- if self.cmd[0] == 'r.recode':
|
|
|
- self.rules = self.rules + '%s' % os.linesep
|
|
|
-
|
|
|
- def OnHelp(self, event):
|
|
|
- gcmd.RunCommand('g.manual',
|
|
|
- quiet = True,
|
|
|
- entry = self.cmd[0])
|
|
|
-
|
|
|
- def OnOverwrite(self, event):
|
|
|
- self.overwrite = event.IsChecked()
|