I have a question concerning wxRuby/wxWidgets. I’m getting my feet wet
with a simple application that holds one Wx::Frame called VwX.
When my application gets closed, I want the user to decide whether the
app really will shut down. If it shuts down: Save the last changes or
not? Typical Yes/No/Cancel situation. So I do this: (Remark:
VwXEvOnClose(event) is the “on_close” event of my Wx::Frame):
case command
when Wx::ID_CANCEL
event.veto
when Wx::ID_YES
save_my_changes
event.skip
else
event.skip
end
end
This works as it is supposed to. However, I noticed that the call to
“event.veto” might just as well be missing without any problems. OTOH,
the calls to “event.skip” are essential: If I dont call these, the
application simply won’t shut down. Any ideas why the veto is
unimportant?
I have a question concerning wxRuby/wxWidgets. I’m getting my feet wet
with a simple application that holds one Wx::Frame called VwX.
As noted, wxruby-users is a better place to ask questions specifically
about wxRuby.
When my application gets closed, I want the user to decide whether the
app really will shut down. If it shuts down: Save the last changes or
not? Typical Yes/No/Cancel situation. So I do this: (Remark:
VwXEvOnClose(event) is the “on_close” event of my Wx::Frame):
…
This works as it is supposed to. However, I noticed that the call to
“event.veto” might just as well be missing without any problems. OTOH,
the calls to “event.skip” are essential: If I dont call these, the
application simply won’t shut down. Any ideas why the veto is
unimportant?
The veto method only applies to close events; the documentation explains
that:
“If you don’t destroy the window, you should call Wx::CloseEvent#veto to
let the calling code know that you did not destroy the window. This
allows the Wx::Window#close function to return true or false depending
on whether the close instruction was honoured or not.”
The veto method only applies to close events; the documentation explains
that:
“If you don’t destroy the window, you should call Wx::CloseEvent#veto to
let the calling code know that you did not destroy the window. This
allows the Wx::Window#close function to return true or false depending
on whether the close instruction was honoured or not.”
hth
alex
Hello Alex,
this sounds like the method doesn’t actually perform the veto, it just
informs the calling code that the window wasn’t destroyed. Makes
sense, thank you. I only read the “short” documentation which states:
“Call this from your event handler to veto a system shutdown or to
signal to the calling application that a window close did not happen.
You can only veto a shutdown if wxCloseEvent::CanVeto returns true.”
This sounded to me that there are cases when you actually perform the
veto. Case closed anyway: I will leave the method call in, of course.
Alec, thank you, too, for the hint with the wxruby-users mailing list.
I will reserve this for the harder cases, though, as this newsgroup
was absolutely fit for the task!
Thanks everybody,
Rainer
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.