Wednesday 29 July 2009

The Plan Of Action

One of the fun things when creating a language binding for a over-sized library is deciding what to do first. With wxWidgets, I think I started with getting some basic functionality working and then randomly implemented widgets as I came across them.

For QtMax, I think a good course of action is to work through implementing the various examples provided with Qt. This should result in a working API along with a fairly rich set of documented, working examples.

I'm currently working through the widget examples, since the UI-side is probably one of the most used features of the library.
Other than losing my way a little with QPainter (and subsequently slinking over to the qt-interest mailing list to ask for assistance), it's coming along very well. As of this post, we have working examples of lineedit, analogclock and translucentclock. Although, to be fair, the translucent clock example comes from the Qt magazine (Qt Quarterly). But it looked cool, so I couldn't resist ;-)

Saturday 25 July 2009

Qt did MaxGUI

I forgot to mention, last time, that in the beginning of 2007 I knocked together a basic MaxGUI module using Qt as a backend. It was mostly done as some C++ practise, as I was essentially picking it up (C++) as I went along learning the API itself.

Interestingly, it mostly worked, but at the time, being GPL only on Windows, I wasn't overly keen on supporting it - and it's not like there aren't already enough MaxGUI modules floating around as it is!

One advantage to the "MaxGUI wrap" thing, is of course that one only needs to wrap a very small portion of the API, rather than every single method and class. The disadvantage is obvious - in that you only get a nibble of the whole Qt cake.

But you know me... experiment, tinker, kludge...

.. perhaps I'll resurrect it enough to have MaxIDE working in Qt...

Thursday 23 July 2009

In the beginning...

...there was BlitzMax + MaxGUI.

Nice as MaxGUI is, it's not really designed for big applications, and is a bugger to get everything looking good across platforms - which is the whole point of a write-once-compile-for-three-platforms application.

...then came BlitzMax + wxWidgets, otherwise known as wxMax. wxMax is a BlitzMax language-binding of the wxWidgets API, written by someone who should probably know better!
As a cross-platform applicaiton framework, it is very good indeed. It covers more than simply the GUI, with tools such as PDF generation.

Qt, is very similar to wxWidgets, but for a couple of facts.
The first, is that it renders its own UI, rather than trying to use the native gadgets (which wxWidgets does). As long as it looks the same, then how things are rendered isn't too important.
The second, is that Qt already has Cocoa support (in Qt 4.5), and has cross-platform support for WebKit (the engine that Safari uses to render web pages).
Otherwise, the two are very similar in functionality.

So why Qt, if wxWidgets is already good enough?

Well, why not?
There's no harm in having more choice :-)

Now that Qt is LGPL, it's also easier to develop applications for it that are intended to run on all three platforms (Linux, Mac and Win32). Previously, Win32 was GPL or Commercial only.

Anyway, I'll hopefully be writing about my adventures here...

Stay tuned ;-)