Intercepting events with wxRuby/wxWidgets

R

Rainer

Hello everybody,

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):

def VwXEvOnClose(event)
dlg = MessageDialog.new(nil, "Save changes?", "MyApp",
Wx::YES_DEFAULT|Wx::CANCEL|Wx::YES_NO|Wx::ICON_EXCLAMATION)
command = dlg.show_modal
dlg.destroy

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?
 
A

Alec Ross

In message
Hello everybody,

I have a question concerning wxRuby/wxWidgets. I'm getting my feet wet
with a simple application that holds one Wx::Frame called VwX.
....

wxruby-users is a good place to post this kind of question.

HTH

Alec
 
A

Alex Fenton

Rainer said:
Hello everybody,

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."

hth
alex
 
R

Rainer

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top