Opus 3D revisited

So yes, writing a Window framework was indeed a stupid idea and I've given up. I've decided instead to rewrite Opus, my low-poly 3D modeller, using Qt. I like Qt personally.

I've been developing the above for the main workspace area. It's a SplitWidget. You can take any child widget and split it horizontally or vertically, making it clone its child widget. You can also remove widgets, collapsing their split back down. I'm working on a system to maximize a widget to the entire area of the split widget manager window and restore it.

It'll mean a nice, flexible central area for the package. I've just been running a sanity check that randomly splits and collapses widgets for about two hours and nothing leaks or gets lost so seems pretty stable. A child widget just derives from SplitWidgetChild and implements the obligatory virtual clone() method and you're good to go.

I seem to be suffering from the common phenomena that is a variant of the inner platform effect - when developing with Qt Creator, you tend to end up wanting your application to look like Qt Creator, since it is so damn sexy, hence the tool bar design. This application will be Windows only since I'm using Direct3D for the rendering (no, I don't want cross platform and don't want to use OpenGL but thank you anyway) but Qt makes the development cycle far faster and more flexible. I use it all day at work for our software, which is progressing very well incidentally, and am fully converted.

I'm in the process at work of writing bindings for QScript, based on EMCAScript, to be able to script a lot of the work our software does via scripts stored in our database. With this in mind, I'm going to skip the whole horrendous DLL plugin approach I was starting to use with the Win32 version of Opus and provide all the plugin support via Javascript.

I've noted, by the way, that the amazing intellisense of Qt Creator seems very less amazing when using non-Qt code. I guess the reason Creator always seemed to outshine VS in this respect is because it is more domain-specific. Oh well, it still rocks.