Going Native with Komodo's GUI Builder

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

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

OK, this isn't "complete", but works for alpha look and feel satisfaction.



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.