This morning I started getting the following exception when generating code from wxGlade:
<pre> Traceback (most recent call last): File "c:\temp\wxGlade\application.py", line 394, in generate_code class_names=class_names) File "c:\temp\wxGlade\xml_parse.py", line 503, in __init__ . . . File "c:\temp\wxGlade\xml_parse.py", line 593, in endElement self.code_writer.add_class(obj) File "c:\temp\wxGlade\codegen\py_codegen.py", line 640, in add_class indentation = prev_src.spaces[code_obj.klass] KeyError: 'FancyListControl' </pre>
There was only one mention of a similar problem on the wxGlade mailing list. The solution posted there was to start a new project – not really an option at this stage of development.
So after a little digging, I found a different solution.
The item causing the problem is a fancy subclass of ListControl defined in another module. I had placed a wx.Panel in the sizer slot, and had then changed the class to my fancy ListControl. Is the problem now obvious? This fancy list control is not equivalent to a wx.Panel from wxGlade’s perspective. Removing the panel and instead adding a ListControl with my fancy control as the class name fixed everything up.
So, in summary, use the closest matching wxGlade class (ListControl instead of Panel) when using your own classes.