From: Iain R. <iai...@gp...> - 2004-04-22 11:11:59
|
Hopefully a simple one for the assembled minds but one I haven't been able to answer from the manual or Google... Are user defined events possible in WxPerl? If so, can someone offer a code fragment to demonstrate their use? The other (related?) question is about the wexperl startup sequence. I have a command line app that takes about a minute to run (checking filesystems and database connections etc) which I have converted to WxPerl. The interface is fine (single windows with treeview) and runs as expected when started using a menu choice. I'd like to have it start running automatically when the app starts (i.e. no menu choice needed) but can't work out a clean way to do this. The ideas I've had are: 1. User defined event In the startup code, use AddEventPending (??) to put a user defined event into the queue, the main loop can then start and the event will trigger my code in due course. Yields at various points will allow the app to remain responsive. 2. Run in startup code The app shows nothing until ALL processing is done (about a minute). This seems less than ideal. 3. Run from the idle loop This is possible but does mean checking a flag variable every time for something that only ever runs once. Not too inefficient but seems a little clumsy. 4. Run multithreaded - one for the GUI and one for the processing code Possible (once I play with some IPC) but seems like overkill. Any hints / suggestions? Essentially, all I want to do is shift code from the app startup (OnInit, constructors etc) to being triggered from the main event loop. In C (from memory) I used to do this by adding a user defined event (or events) to the message queue and the event loop would fire things off when the app was ready. The wxWindows docs seem to suggest that this is possible using AddEventPending and EVT_CUSTOM but I haven't been able to get it working. Google turned up a message from 2001 stating that user defined events were not YET in WxPerl but I would assume that they have now been implemented. Iain |