Thanks for your comments. As you may guess, I've barely started with Wx, so I didn't even notice Wx::Dialog yet :-) Now that I've tried it, there seems to be a problem with not creating any top level window within Wx::App::OnInit. I have this:
sub OnInit {
my $self = shift;
$$cancel = LoginWindow->new(
$user,
$passwd,
undef, # Parent window
-1, # Window id
'Login', # Title
[200,200], # position X, Y
[200,150], # size X, Y
wxCAPTION | wxSYSTEM_MENU
)->ShowModal;
}
If ShowModal returns true, the app hangs, if it returns false, then I get this error from this code within Wx::App:
my $ret = Wx::_App::Start($this,$this->can('OnInit'));
Wx::_croak( 'OnInit must return a true return value' )
unless $ret || Wx::wxMAC(); # why does OnInit always return 0 on M
+ac?
In the WxWindows documentation, it says to return a false value from OnInit to exit the application. I don't know why WxPerl would require a true value; it seems like a bug to me. I think I would like to just set $$cancel and then return false from OnInit unconditionally.
Update: Ahh, if I wrap the call to the App constructor in an eval, I don't get the error message, and I can filter for that particular message in $@, but I still think returning false from OnInit should be perfectly valid.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.