In the wxGUI, "save display to graphic file" is not working in
wingrass and should not work in linux, because SaveToFile uses
wx.BufferedPaintDC() which is in this case illegal because it can only
be used inside of an EVT_PAINT event handler [0], and SaveToFile is
not an EVT_PAINT event handler, that handler is OnPaint. The last bit
of the traceback is

_gdi_.BufferedPaintDC_swiginit(self,_gdi_.new_BufferedPaintD
C(*args, **kwargs))
wx._core
.
PyAssertionError
:
C++ assertion "wxAssertFailure" failed at
..\..\src\msw\dcclient.cpp(219) in wxPaintDC::wxPaintDC():
wxPaintDC may be created only in EVT_PAINT handler!


This affects all branches and the just released 6.4.2.

A fix for 6.4.svn would be:

--- mapwindow.py        (revision 50929)
+++ mapwindow.py        (working copy)
@@ -471,7 +471,7 @@
             # set back old coordinates
             textinfo['coords'] = oldCoords

-        dc = wx.BufferedPaintDC(self, ibuffer)
+        dc = wx.BufferedDC(None, ibuffer)
         dc.Clear()
         self.PrepareDC(dc)
         self.pdc.DrawToDC(dc)


Works for me on Linux and Windows.

Markus M

[0] http://wxpython.org/docs/api/wx.BufferedPaintDC-class.html
_______________________________________________
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev

Reply via email to