[GRASS-dev] [GRASS GIS] #1137: wxGUI doesn't work in Windows
GRASS GIS
trac at osgeo.org
Wed Aug 25 07:54:19 EDT 2010
#1137: wxGUI doesn't work in Windows
---------------------+------------------------------------------------------
Reporter: glynn | Owner: grass-dev@…
Type: defect | Status: new
Priority: blocker | Milestone: 6.4.0
Component: wxGUI | Version: unspecified
Keywords: | Platform: MSWindows XP
Cpu: All |
---------------------+------------------------------------------------------
In menuform.py, getInterfaceDescription() attempts to insert the full path
to grass-interface.dtd in the --interface-description output, using:
{{{
p = re.compile('(grass-interface.dtd)')
p.search(cmdout)
cmdout = p.sub(globalvar.ETCDIR + r'/grass-interface.dtd', cmdout)
}}}
But the first argument to the !RegexObject.sub() method is a replacement
'''pattern''', not a literal string, meaning that certain backslash
sequences have special meaning.
This is problematic if globalvar.ETCDIR contains a recognised backslash
sequence, which is quite likely on Windows. In particular, \g is used to
insert the contents of a named or numbered group, and ETCDIR will almost
certainly contain this sequence as part of "\grass-". This results in the
error:
{{{
File "C:\msys\1.0\home\glynn\src\grass-7.0\dist.i686-pc-
mingw32\etc\gui\wxpython\gui_modules\menuform.py", line 1997, in
getInterfaceDescription
cmdout = p.sub(globalvar.ETCDIR + r'/grass-interface.dtd', cmdout)
File "C:\Program Files\Python26\lib\re.py", line 273, in _subx
template = _compile_repl(template, pattern)
File "C:\Program Files\Python26\lib\re.py", line 260, in _compile_repl
raise error, v # invalid expression
sre_constants.error: bad group name
}}}
Also, even without the error, the "\1" in "\1.0" would end up being
replaced by the first parenthesised group (grass-interface.dtd).
As the pattern is a literal string, I don't see any reason to use regular
expression. It may as well just use e.g.:
{{{
cmdout.replace('grass-interface.dtd', os.path.join(globalvar.ETCDIR,
'grass-interface.dtd'))
}}}
which also fixes the use of the wrong directory separator.
Also, if the DTD is supposed to be specified by a full path, the
implementation of --interface-description should be fixed, rather than
patching the output afterwards.
Priority set to "blocker" as this can make the wxGUI effectively non-
functional. Executing any command will trigger the error if $GISBASE
contains the wrong characters (this may be specific to Python 2.6; I can't
see any other reason why it wouldn't have been noticed earlier).
Platform set to "MSWindows" (applies to all versions) as backslashes in
pathnames are uncommon on other platforms (although technically
permitted).
Tested with the latest 7.0, but the code is identical in 6.x.
--
Ticket URL: <http://trac.osgeo.org/grass/ticket/1137>
GRASS GIS <http://grass.osgeo.org>
More information about the grass-dev
mailing list