JH:
ActiveState's
Komodo IDE has a
GUI builder built in for building
Tk GUIs. It is itself written in
Tcl/Tk (based off
SpecTcl, although most of that code went out with the trash folder long ago ...). Previously
Komodo has shipped on
Windows,
Linux and
Solaris. We are currently porting it to OS X, GUI Builder included. This page shows a before and after, with some comments.
GUI Builder Before edit
This used all the classic Tk controls, with some megawidgets from
BWidget and some custom-rolled stuff. For all intents and purposes, this worked fine on Windows and unix variants. It isn't so happy for Aqua, as you can see ...
GUI Builder After edit
OK, this isn't "complete", but works for alpha look and feel satisfaction.
Comments edit
OK, I should comment on the many changes I had to make. First off though, a significant chunk of time spent was just transitioning to
tile and themed widgets. This work will eventually be used across all platforms. The next part was working with various issues in the themed widgets, where it wasn't appropriate, they didn't quite work right (eg, scrollbar), or an appropriate widget wasn't available (eg, having to use menubuttons instead of spinboxes, which is actually
more correct from a Aqua HIG pov).
Mind you, I am aware that the Aqua HIG would entail much more rewriting, but this was an attempt to port what existed. There will have to be more done later. I just wanted to ensure that it worked, and didn't look like total crap.
For those wanting to repro the above changed for their own apps, using
tile (
converting to being a more appropriate verb) is the first task. I also am currently using a modified Tk for things like themed toplevels. See some other points on this at
Aqua toplevels.
Maybe one day I'll find time to annotate those pictures, but there are over a dozen significant changes worth commenting on (which I'll get to eventually). In any case, you will still find several visual oddities in the "native" version, which I am aware of. For the most part, they are either bugs (scrollbars just have issues ...) or widget elements that require more elaborate efforts to port.