Split all the Control implementations into their own files and renamed the containerctrls implementation files to say tab instead as they only hold Tab. This is the first part of what should hopefully be the final restructuring.
Chagned Checkbox.OnClicked() to Checkbox.OnToggled(). The code restructure will allow this.
Applied previous commit's change to the test program.
Set up the Control restructure and migrated the Windows implementation over. Lots of repetition, but hopefully more correct and maintainable!
More TODOs.
I am a dolt; make Checkbox.Checked() return a bool directly on Windows.
Migrated the GTK+ backend to the new Control system. Added controlParent to deal with interface issues; need to apply this to the Windows backend too.
Migrated the Mac OS X backend to the new Control setup.
Standardized basegetAuxResize() on the GTK+ backend to match the Mac OS X backend and controlbase.sh.
Did the previous commit, but for the Windows backend.
Converted the new Windows Control code to use interfaces instead of controlbase, just like the GTK+ and Mac OS X backends do now.
Split apart the Windows Window code so that the same window class can be used for both top-level windows and tab pages (next commit). This makes things slightly messy in the short term, but this will all be cleaned up soon, and has the advantage of taking care of the sizer mess~
Changed Tab on Windows to store each control in a *layout (see previous commit). Now I can throw out containerShow()/containerHide()/Show()/Hide(). This also will let me do the right thing with sizer and dialog base units again, and even get rid of sizer's confusion once and for all!