Hi ryan,
When you create the window, assign it to a variable, then call the hide() or destroy() method on the window. Use hide if you will be reusing the window.
Here is some sample code which brings up a window with 3 buttons. The first brings up an (imaginary) error in a new window, the second closes the app, and the third closes the other window ( the one with the error ). There is also a button on the error window to close itself.
Hope this helps
thinker
| [reply] [d/l] |
Thanks,
I already understand and have this type of thing working. The problem arises because glade2perl makes each window into a package and it is invoked as such: window2->app_run which returned nothing to assign to a variable because it hands control to Gtk->main within the app_run sub.
It looks like i was missing some of the default code that glade2perl puts at the top of each package. It puts a destroy_Form sub as well as toplevel_hide, toplevel_close and toplevel_destroy subs.
Now that I have them in there I can call any of them and it works. The destroy_Form sub calls Gtk->main_quit. The other 3 subs call: shift->get_toplevel->hide/close/destroy, and still work even when I supply no arguments to them from within a button click handler in the same package.
I hope this is what I'm supposed to be doing, at least it seems to work on the surface, who knows what it is doing or how much memory I'm chewing up needlessly behind the scenes :)
I thought I was going batty having to try to call methods of an object from within that class when I had no reference to that object to base the call on! - I was oblivious to the fact that subroutines were specially made to do what I was trying to do and I simply didn't cut and paste them correctly from the glade2perl output :|
Ryan *hides* :)
| [reply] |