Opened 11 years ago

Last modified 8 years ago

#1959 new defect

wingrass wx carto composer: Image causes traceback

Reported by: hamish Owned by: grass-dev@…
Priority: major Milestone: 6.4.6
Component: wxGUI Version: svn-develbranch6
Keywords: cartographic composer, wingrass Cc:
CPU: x86-32 Platform: MSWindows XP

Description

Hi,

testing latest 6.5svn nightly wingrass build.

If you open the wxGUI cartographic composer and pick 'add map element' then "Image" (better to call that 'map decorations'?; better to make menu item "EPS Image" than lead user down a false path?) you get the following PyAssertionError in the wxGUI command console:

Traceback (most recent call last):
  File "C:\Program Files\GRASS GIS 6.5.svn\Python27\lib
\site-packages\wx-2.8-msw-
unicode\wx\lib\filebrowsebutton.py", line 140, in OnChanged

self.changeCallback(evt)
  File "c:\Program Files\GRASS GIS
6.5.svn\etc\wxpython\psmap\dialogs.py", line 4272, in
OnDirChanged

self.OnImageSelectionChanged(None)
  File "c:\Program Files\GRASS GIS
6.5.svn\etc\wxpython\psmap\dialogs.py", line 4304, in
OnImageSelectionChanged

self.ClearPreview()
  File "c:\Program Files\GRASS GIS
6.5.svn\etc\wxpython\psmap\dialogs.py", line 4386, in
ClearPreview

mask = wx.Mask(buffer, wx.WHITE)
  File "C:\Program Files\GRASS GIS 6.5.svn\Python27\lib
\site-packages\wx-2.8-msw-unicode\wx\_gdi.py", line 1212, in
__init__

_gdi_.Mask_swiginit(self,_gdi_.new_Mask(*args, **kwargs))
wx._core
.
PyAssertionError
:
C++ assertion "!bitmap.GetSelectedInto()" failed at
..\..\src\msw\bitmap.cpp(1509) in wxMask::Create(): bitmap
can't be selected in another DC
Traceback (most recent call last):
  File "c:\Program Files\GRASS GIS
6.5.svn\etc\wxpython\psmap\frame.py", line 663, in
OnAddImage

dlg = ImageDialog(self, id = id, settings =
self.instruction)
  File "c:\Program Files\GRASS GIS
6.5.svn\etc\wxpython\psmap\dialogs.py", line 4093, in
__init__

self.OnDirChanged(None)
  File "c:\Program Files\GRASS GIS
6.5.svn\etc\wxpython\psmap\dialogs.py", line 4272, in
OnDirChanged

self.OnImageSelectionChanged(None)
  File "c:\Program Files\GRASS GIS
6.5.svn\etc\wxpython\psmap\dialogs.py", line 4304, in
OnImageSelectionChanged

self.ClearPreview()
  File "c:\Program Files\GRASS GIS
6.5.svn\etc\wxpython\psmap\dialogs.py", line 4386, in
ClearPreview

mask = wx.Mask(buffer, wx.WHITE)
  File "C:\Program Files\GRASS GIS 6.5.svn\Python27\lib
\site-packages\wx-2.8-msw-unicode\wx\_gdi.py", line 1212, in
__init__

_gdi_.Mask_swiginit(self,_gdi_.new_Mask(*args, **kwargs))
wx._core
.
PyAssertionError
:
C++ assertion "!bitmap.GetSelectedInto()" failed at
..\..\src\msw\bitmap.cpp(1509) in wxMask::Create(): bitmap
can't be selected in another DC

and no image selection gui window. On my linux it works.

thanks, Hamish

(trac logging itself out every 5 minutes! argh)

Change History (8)

comment:1 by hamish, 11 years ago

Keywords: wingrass added

comment:2 by annakrat, 11 years ago

Please try r56120.

in reply to:  2 comment:3 by annakrat, 11 years ago

Replying to annakrat:

Please try r56120.

OK, this works. However we have different problem now. Apart from missing refresh of the image in the dialog (hopefully fixed in r56133), I get 'IOError: error when accessing file' when I select eps file. See this question. This is problem for the eps files like grasslogo.eps or compass_in/exterior.eps because they don't have 'showpage' command inside unlike the newer eps north arrows. Adding this command would probably solve the problem, but I am not sure if it safe. EPS specification allows it.

Another error when drawing eps in draft mode (r56134).

comment:4 by annakrat, 11 years ago

Fixes r56120, r56121 (from #1960), r56133, r56134 seems to work, applied to 64 and 7 (r56135, r56136).

Still there is the issue with 'showpage' related to certain eps files.

in reply to:  4 comment:5 by hamish, 11 years ago

Replying to annakrat:

Still there is the issue with 'showpage' related to certain eps files.

thanks for the fixes, will try them out tomorrow.

I don't really enjoy the idea of modifying base data to work around a bug in PIL, I'd much prefer if the python people were encouraged into fixing their own bug. The whole point of EPS is to be a page-less version of PostScript, so adding a form feed end-of-page command to it seems like an ugly solution to me. Nonetheless, the eps2eps program adds showpages to them, and the authors of that know better than I do about it. Does it work to just do:

  echo " showpage" >> file.eps

?

What happens within the north arrow .eps files in ps/ps.map/decorations/ doesn't much bother me since I plan to replace them with native grass symbol versions anyway. :-) (so they render more cleanly, can be used in the regular GUI map display with d.graph, etc.)

btw, I've been meaning to respond properly to an old email: the symbol sections grew somewhat organically from Radim's original set, rearranging them into more logical categories in trunk would be a nice thing. authoring them by hand is not so bad once you get used to it. see the IconSymbols wiki page, and sketching with some graph paper then counting off the coordinates helps a lot.

one day we'll get svg + eps + d.graph + grass symbols + ps.map all working nicely together; it's been on the wish-list for a long time..

Hamish

comment:6 by hamish, 11 years ago

Fredrik Lundh wrote:

I'll look into this for 1.1.5.

what version are we shipping with wingrass? (my local python-imaging on linux is ver 1.1.7)

Hamish

in reply to:  6 comment:7 by annakrat, 11 years ago

Replying to hamish:

Fredrik Lundh wrote:

I'll look into this for 1.1.5.

what version are we shipping with wingrass? (my local python-imaging on linux is ver 1.1.7)

1.1.7 too. It's not clear to me why it behaves differently on Windows.

comment:8 by neteler, 8 years ago

Milestone: 6.4.36.4.6
Note: See TracTickets for help on using tickets.