[GRASS-dev] how to start wx vdigit?

William Kyngesburye woklist at kyngchaos.com
Sun Mar 9 14:56:51 EDT 2008

OK, here's what I got:

I wanted to start with an empty vector map, so I tried to create one  
from the GUI.  Error in console:

Traceback (most recent call last):
   File "/Applications/GRASS-6.3.app/Contents/MacOS/etc/wxpython/ 
wxgui.py", line 433, in OnMenuCmd
     menuform.GUI().ParseCommand(cmd, parentframe=self)
   File "/Applications/GRASS-6.3.app/Contents/MacOS/etc/wxpython/ 
gui_modules/menuform.py", line 1390, in ParseCommand
     get_dcmd=get_dcmd, layer=layer)
   File "/Applications/GRASS-6.3.app/Contents/MacOS/etc/wxpython/ 
gui_modules/menuform.py", line 608, in __init__
   File "/Applications/GRASS-6.3.app/Contents/MacOS/etc/wxpython/ 
gui_modules/menuform.py", line 1050, in __init__
     txt3.SetValue(p['value']) # parameter previously set
   File "/BinaryCache/wxWidgets/wxWidgets-11~57/Root/System/Library/ 
unicode/wx/_controls.py", line 2249, in SetValue
TypeError: in method 'SpinCtrl_SetValue', expected argument 2 of type  

So I used v.edit from the Terminal to create one.

Now, added to the GUI display list, right-click (yes, the toolbar  
combo box is not there), start editing, and I get a dialog:

Unable to initialize display driver, see README file for more info.

Details: 'NoneType' object has no attribute 'OpenMap' (dynamic module  
does not define init function (init_grass6_wxvdigit))

It looks like the vdigit toolbar appears, and stays up, but the  
display list contextual menu still says "start editing" (stop is  
disabled), so it's probably not fully initialized, as the error says.

I'm not sure if this is from the way I setup my test build or  
something else.

Here is what I did to get it compiled: since _gdi_.so is technically  
an extension to [wx]Python, I figure that it should get loaded (maybe  
automatically?) by wxPython.  So instead of directly linking it into  
vdigit, I used an OSX linker flag "-undefined dynamic_lookup" to tell  
the linker that the gdi.so symbols will be found at runtime.

But, I'm not sure it gdi is guaranteed to be loaded.  Maybe it needs  
something in the vdigit code to trigger loading the extension,  
equivalent to import in Python code?  Or maybe import it in  
grass6_wxvdigit.py, before importing _grass6_wxvdigit.so?

On Mar 9, 2008, at 1:26 PM, Martin Landa wrote:

> Hi,
> there currently two ways
> 1) add vector map layer into the layer tree, right click and from
> contextual menu choose 'Start editing'
> 2) select in Map display window toolbar 'Digitize' (the last tool in
> the toolbar), then from enabled vdigit toolbar choose vector map layer
> you want to edit (this map must be present the current layer tree). I
> remember there was bug on Mac connected to wxComboBox inside wxToolbar
> instance. So maybe you cannot see these comboboxes in the toolbars.
> Then first way should work for you.
> Martin

William Kyngesburye <kyngchaos*at*kyngchaos*dot*com>

"Time is an illusion - lunchtime doubly so."

- Ford Prefect

More information about the grass-dev mailing list