From: John R. <jr...@ce...> - 2004-05-12 05:10:57
|
Attempting to call Wx::XmlResource::LoadOnPanel(Wx::Panel, Wx::Dialog, Name) causes the following wxAssert failures. The problem occurs using wxPerl-0.19 with wxWidgets 2.4.2 on both OSX and Linux using GDK. Equivalent C++ programs work fine on both platforms. Regards, John Ralls The wxAssert failure messages: 14:57:24: Debug: ../../../../include/wx/object.h(327): assert "ptr" failed: wxStaticCast() used incorrectly 14:57:33: Debug: ../../../../contrib/src/xrc/xh_sizer.cpp(148): assert "wxAssertFailure" failed: Incorrect use of sizer: parent is not 'wxDialog', 'wxFrame' or 'wxPanel'. A minimal program: use strict; use Wx::XRC; my $app = TestApp->new; $app->MainLoop; package TestApp; use strict; use base qw(Wx::App); sub OnInit { my ($self) = @_; my $fr = TestFrame->new; $fr->Show(1); return 1; } package TestFrame; use strict; use base qw(Wx::Frame); use Wx qw(wxDefaultPosition wxDefaultSize wxVERSION_STRING wxOK wxICON_INFORMATION wxPOINT wxSIZE wxEXPAND wxITEM_NORMAL); our $minimalQuit = 1; sub new { my $class = shift; my ($self, $toolbar, $menubar); $self = $class->SUPER::new( undef, -1, 'SimpleTest', wxPOINT(50, 50), wxSIZE(450, 340) ); $self->SetAutoLayout(1); $$self{xr} = Wx::XmlResource->new; $$self{xr}->InitAllHandlers; $$self{xr}->Load('SimpleDialog.xrc'); my $menuFile = Wx::Menu->new; $menuFile->AppendString($minimalQuit, "E&xit\tAlt-X", "Quit the program", wxITEM_NORMAL); my $menuBar = Wx::MenuBar->new; $menuBar->Append($menuFile, "&File"); my $dlg = Wx::Dialog->new; $$self{xr}->LoadOnDialog($dlg, $self, 'DIALOG1'); my $pnl = Wx::Panel->new; $$self{xr}->LoadOnPanel($pnl, $dlg, 'PANEL1'); my $szr = $dlg->GetSizer; $szr->Prepend($pnl, 1, wxEXPAND); $dlg->ShowModal; return $self; } The corresponding resource file: <?xml version="1.0" ?> <resource> <object class="wxDialog" name="DIALOG1"> <title>Simple Dialog</title> <object class="wxBoxSizer"> <orient>wxVERTICAL</orient> <object class="sizeritem"> <object class="wxBoxSizer"> <orient>wxHORIZONTAL</orient> <object class="sizeritem"> <object class="wxButton" name="wxID_OK"> <label>OK</label> </object> <flag>wxALL</flag> <border>5</border> </object> <object class="sizeritem"> <object class="wxButton" name="wxID_CANCEL"> <label>Cancel</label> </object> <flag>wxALL</flag> <border>5</border> </object> </object> <flag>wxALIGN_CENTER|wxEXPAND</flag> </object> </object> <style>wxDEFAULT_DIALOG</style> </object> <object class="wxPanel" name="PANEL1"> <object class="wxBoxSizer"> <orient>wxVERTICAL</orient> <object class="sizeritem"> <object class="wxTextCtrl" name="myText"/> <option>1</option> <flag>wxALIGN_CENTER|wxALL|wxEXPAND</flag> <border>5</border> <minsize>200,-1</minsize> </object> <object class="sizeritem"> <object class="wxButton" name="myButton"> <label>Button</label> </object> <flag>wxALIGN_CENTER|wxALL</flag> <border>5</border> </object> </object> <style></style> </object> </resource> |
From: Mark W. <ma...@ne...> - 2004-05-14 12:09:18
|
Hi, I have only just started using ToolBar's hence the questions ... Since I am unable to subclass the ToolBar is there any way that I can find a specific Tool based on the index/id. I am looking for something like: my $tool = $toolbar->GetTool( 2 ); # get the second tool in the list or my $tool = $toolbar->Find( 'Print' ); # find the tool with text 'Print' or my $tool = $toolbar->Find( 1 ); # find the first tool in the list I cannot find anything in the docs am I missing something? Any help appeciated. Thanks Mark |