From: Scott L. <sla...@th...> - 2002-09-11 07:28:38
|
I'm playing with XRC and ran into a couple problems. I copied wxGTK/contrib/samples/xrc/rc/resource.xrc to try to make it work with the following script (so far). Below are resource.xrc (for reference) and the errors. #!/usr/bin/perl -w # Testing XRC use strict; MyApp->new()->MainLoop(); package MyApp; use base qw(Wx::App); use Wx qw(:everything); use Wx::XRC; use Wx::Event qw(EVT_MENU); sub OnInit { my $self = shift; my ($frame, $xr, $menubar); $frame = Wx::Frame->new( undef, -1, 'Test', wxDefaultPosition, wxSIZE(400,500) ); $frame->SetAutoLayout(1); $self->SetTopWindow($frame); $xr = Wx::XmlResource->new(); $xr->InitAllHandlers(); $xr->Load('./resource.xrc'); $menubar = $xr->LoadMenuBar('mainmenu'); $frame->SetMenuBar($menubar); # EVT_MENU($menubar, $xr->GetXRCID('menu_about'), \&OnAbout); $frame->Show(1); } sub OnAbout { my ($self, $event) = @_; wxMessageBox( 'The main text', 'About something', wxOK|wxICON_INFORMATION, $self ); } 1; __END__ <?xml version="1.0"?> <resource> <object class="wxMenuBar" name="mainmenu"> <style>wxMB_DOCKABLE</style> <object class="wxMenu" name="menu_file"> <label>$File</label> <style>wxMENU_TEAROFF</style> <object class="wxMenuItem" name="menu_about"> <label>$About...</label> <bitmap>filesave.gif</bitmap> </object> <object class="separator"/> <object class="wxMenuItem" name="menu_dlg1"> <label>Dialog 1</label> </object> <object class="wxMenuItem" name="menu_dlg2"> <label>Dialog 2</label> </object> <object class="separator"/> <object class="wxMenuItem" name="menu_quit"> <label>E$xit\tAlt-X</label> </object> </object> </object> <object class="wxToolBar" name="toolbar"> <style>wxTB_FLAT|wxTB_DOCKABLE</style> <margins>2,2</margins> <object class="tool" name="menu_open"> <bitmap>fileopen.gif</bitmap> <tooltip>Open catalog</tooltip> </object> <object class="tool" name="menu_save"> <bitmap>filesave.gif</bitmap> <tooltip>Save catalog</tooltip> </object> <object class="tool" name="menu_update"> <bitmap>update.gif</bitmap> <tooltip>Update catalog - synchronize it with sources</tooltip> </object> <separator/> <object class="tool" name="menu_quotes"> <bitmap>quotes.gif</bitmap> <toggle>1</toggle> <tooltip>Display quotes around the string?</tooltip> </object> <object class="separator"/> <object class="tool" name="menu_fuzzy"> <bitmap>fuzzy.gif</bitmap> <tooltip>Toggled if selected string is fuzzy translation</tooltip> <toggle>1</toggle> </object> </object> <object class="wxDialog" name="dlg1"> <object class="wxBoxSizer"> <object class="sizeritem"> <object class="wxBitmapButton"> <bitmap>fuzzy.gif</bitmap> <focus>fileopen.gif</focus> </object> </object> <object class="sizeritem"> <object class="wxPanel"> <object class="wxStaticText"> <label>fdgdfgdfgdfg</label> </object> <style>wxSUNKEN_BORDER</style> </object> <flag>wxALIGN_CENTER</flag> </object> <object class="sizeritem"> <object class="wxButton"> <label>Buttonek</label> </object> <border>10d</border> <flag>wxALL</flag> </object> <object class="sizeritem"> <object class="wxHtmlWindow"> <htmlcode><h1>Hi,</h1>man</htmlcode> <size>100,45d</size> </object> </object> <object class="sizeritem"> <object class="wxNotebook"> <object class="notebookpage"> <object class="wxPanel"> <object class="wxBoxSizer"> <object class="sizeritem"> <object class="wxHtmlWindow"> <htmlcode>Hello, we are inside a <u>NOTEBOOK</u>...</htmlcode> <size>50,50d</size> </object> <option>1</option> </object> </object> </object> <label>Page</label> </object> <object class="notebookpage"> <object class="wxPanel"> <object class="wxBoxSizer"> <object class="sizeritem"> <object class="wxHtmlWindow"> <htmlcode>Hello, we are inside a <u>NOTEBOOK</u>...</htmlcode> <size>50,50d</size> </object> </object> </object> </object> <label>Page 2</label> </object> <usenotebooksizer>1</usenotebooksizer> </object> <flag>wxEXPAND</flag> </object> <orient>wxVERTICAL</orient> </object> </object> <object class="wxDialog" name="dlg2"> <object class="wxBoxSizer"> <orient>wxVERTICAL</orient> <object class="sizeritem" name="dfgdfg"> <object class="wxTextCtrl"> <size>200,200d</size> <style>wxTE_MULTILINE|wxSUNKEN_BORDER</style> <value>Hello, this is an ordinary multiline\n textctrl....</value> </object> <option>1</option> <flag>wxEXPAND|wxALL</flag> <border>10</border> </object> <object class="sizeritem"> <object class="wxBoxSizer"> <object class="sizeritem"> <object class="wxButton" name="wxID_OK"> <label>Ok</label> <default>1</default> </object> </object> <object class="sizeritem"> <object class="wxButton" name="wxID_CANCEL"> <label>Cancel</label> </object> <border>10</border> <flag>wxLEFT</flag> </object> </object> <flag>wxLEFT|wxRIGHT|wxBOTTOM|wxALIGN_RIGHT</flag> <border>10</border> </object> </object> <title>Second testing dialog</title> </object> </resource> ERROR 1) Can't make a Bitmap. An error dialog pops up, related to <bitmap>filesave.gif</bitmap> in the menubar, with this information: ! No handler found for image type. - XRC resource: Cannot create bitmap from 'bitmap'. I'm not sure what it means. I also tried save.xpm. ERROR 2) GetXRCID If I uncomment the EVT_MENU(... OnAbout) line, on stderr, there is this message Usage: Wx::XmlResource::GetXRCID(str_id) at ./ex.pl line 30. It refers to $xr->GetXRCID('menu_about') What does it want for `str_id' (which XS says is type wxChar *). In wxwindows, they do: XMLID("menu_about") . And that's as far as I got so far. |