|
@@ -26,6 +26,7 @@ import glob
|
|
|
import shutil
|
|
|
import copy
|
|
|
import platform
|
|
|
+import codecs
|
|
|
|
|
|
### i18N
|
|
|
import gettext
|
|
@@ -46,6 +47,8 @@ import wx.lib.filebrowsebutton as filebrowse
|
|
|
import wx.lib.mixins.listctrl as listmix
|
|
|
import wx.lib.scrolledpanel as scrolled
|
|
|
|
|
|
+sys.stderr = codecs.getwriter('utf8')(sys.stderr)
|
|
|
+
|
|
|
class GRASSStartup(wx.Frame):
|
|
|
"""!GRASS start-up screen"""
|
|
|
def __init__(self, parent = None, id = wx.ID_ANY, style = wx.DEFAULT_FRAME_STYLE):
|
|
@@ -54,7 +57,7 @@ class GRASSStartup(wx.Frame):
|
|
|
# GRASS variables
|
|
|
#
|
|
|
self.gisbase = os.getenv("GISBASE")
|
|
|
- self.grassrc = self._read_grassrc()
|
|
|
+ self.grassrc = self._readGisRC()
|
|
|
self.gisdbase = self.GetRCValue("GISDBASE")
|
|
|
|
|
|
#
|
|
@@ -376,32 +379,32 @@ class GRASSStartup(wx.Frame):
|
|
|
|
|
|
self.Layout()
|
|
|
|
|
|
- def _read_grassrc(self):
|
|
|
+ def _readGisRC(self):
|
|
|
"""!Read variables from $HOME/.grass7/rc file
|
|
|
"""
|
|
|
grassrc = {}
|
|
|
-
|
|
|
+
|
|
|
gisrc = os.getenv("GISRC")
|
|
|
-
|
|
|
+
|
|
|
if gisrc and os.path.isfile(gisrc):
|
|
|
try:
|
|
|
rc = open(gisrc, "r")
|
|
|
for line in rc.readlines():
|
|
|
key, val = line.split(":", 1)
|
|
|
- grassrc[key.strip()] = val.strip()
|
|
|
+ grassrc[key.strip()] = utils.DecodeString(val.strip())
|
|
|
finally:
|
|
|
rc.close()
|
|
|
|
|
|
return grassrc
|
|
|
|
|
|
def GetRCValue(self, value):
|
|
|
- "Return GRASS variable (read from GISRC)"""
|
|
|
-
|
|
|
+ """!Return GRASS variable (read from GISRC)
|
|
|
+ """
|
|
|
if self.grassrc.has_key(value):
|
|
|
return self.grassrc[value]
|
|
|
else:
|
|
|
return None
|
|
|
-
|
|
|
+
|
|
|
def OnWizard(self, event):
|
|
|
"""!Location wizard started"""
|
|
|
from gui_modules import location_wizard
|
|
@@ -583,10 +586,10 @@ class GRASSStartup(wx.Frame):
|
|
|
def UpdateMapsets(self, location):
|
|
|
"""!Update list of mapsets"""
|
|
|
self.FormerMapsetSelection = wx.NOT_FOUND # for non-selectable item
|
|
|
-
|
|
|
+
|
|
|
self.listOfMapsetsSelectable = list()
|
|
|
self.listOfMapsets = utils.GetListOfMapsets(self.gisdbase, location)
|
|
|
-
|
|
|
+
|
|
|
self.lbmapsets.Clear()
|
|
|
|
|
|
# disable mapset with denied permission
|
|
@@ -600,10 +603,10 @@ class GRASSStartup(wx.Frame):
|
|
|
gisdbase = self.gisdbase)
|
|
|
|
|
|
if not ret:
|
|
|
- raise gcmd.CmdError("")
|
|
|
+ raise gcmd.GError(_("No mapsets available in location <%s>") % locationName)
|
|
|
|
|
|
for line in ret.splitlines():
|
|
|
- self.listOfMapsetsSelectable += line.split(' ')
|
|
|
+ self.listOfMapsetsSelectable += line.split(' ')
|
|
|
except:
|
|
|
gcmd.RunCommand("g.gisenv",
|
|
|
set = "GISDBASE = %s" % self.gisdbase)
|
|
@@ -639,7 +642,7 @@ class GRASSStartup(wx.Frame):
|
|
|
self.listOfLocations[self.lblocations.GetSelection()]))
|
|
|
else:
|
|
|
self.listOfMapsets = []
|
|
|
-
|
|
|
+
|
|
|
disabled = []
|
|
|
idx = 0
|
|
|
try:
|