jdtoronto has asked for the wisdom of the Perl Monks concerning the following question:
I have a rather large Perl/Tk application, the codebase for which stretches back as far as 1997. It refuses to stop growing and for some totally inapparent reason, people keep wanting to use it and ask for all sorts of additions. I am now faced with making some changes that I think require a major overhaul - and I don't know how to do this, hence I supplicate myself before you seeking enlightenment.
Originally the whole thing was written following the example of Mastering Perl/Tk and was a single great big script. That was fine until it got to about 3000 lines. So I started to abstract logical sections into modules, which usually relate to something like a Tk::NoteBook panel, or some other chunk of GUI with logic. The config handle, the dbh handle and the MainWindow are all created near the top of the current 3700 line main code. The individual Tk::NoteBook panels are then 'created' and when the module is loaded a hash of configuration variables is passed in, like this:
You can probably figure out what is happening, the -mw config variable is the MainWindow handle and is used to add the GUI elements, the -cfg and -dbh get the config and database handles.my $excluder = MyApp::Exclude->new( -mw => $mw, -monitor => $monitor, -cfg => $cfg, -dbh => $dbh, ); $excluder->draw();
I want to add a Tk::StatusBar to the bottom of the main window, that's the easy part. But how do I expose the various methods for maniuplating the status bar to the many and varied places in my code which may want to toggle a little annunciator block, or manipulate a progress bar, or change a label text?
How do I structure something like this? Especially when some objects - which need ultimately to manipulate the MainWindw status bar, might be created by another object thus placing the child at a 'distance' from the Main?
I have tried understanding TheDamian through Object Oriented Perl and Perl Best Practices but my poor feeble brain seems to be not getting something.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: How to structure LARGE Perl/Tk application?
by renodino (Curate) on Sep 11, 2006 at 21:37 UTC | |
by TGI (Parson) on Oct 01, 2008 at 22:10 UTC | |
by renodino (Curate) on Oct 02, 2008 at 16:31 UTC |