Well, here is a new update. Perhaps a slight detour but I believe a worthwhile one. I seem to end up writing a custom UI system for every project I make which ends up wasting a lot of time. To avoid that going forward I've started putting together a UI system in C++ as a plugin.
I'm only a few days in to is so far (by which I mean maybe 2 hours a day squeezed in after work) so there isn't a huge amount to show yet but I've put together a little video of visible progress so far.
Watch it in HD
I have a lot more planned out on paper as well as a few bits you can't see in the video that aren't ready to show off yet. The UI plugin allows you to hook up your functions to UI events so using a command such as '
gui_attachEvent "btnOk", "click", "btnOk_click"' would fire the DBPro function 'btnOk_click' when the button control with the id 'btnOk' was clicked. It also lets you hook in your own functions for the rendering of each element so that whilst the functionality is fully handled by the plugin, each application can look completely different with full control of the aesthetics.
It also, as
is shown in the video, allows you to render the UI to a separate render target meaning you can put the UI onto a 3d surface, such as an in-game laptop for example.
I have a lot more to do. I have a rather large list of other controls to add (19, not including sub-sets) as well as finishing off the windows (adding resizing and minimize/maximize/close buttons, allowing snapping, making the aforementioned features configurably optional) and making a simple mark-up language so you can use something akin to HTML to create interfaces.
Either way, I think it is looking pretty promising so far. More updates/videos soon hopefully!
[Edit]
Just for fun, here is the (relevant) source code from the example in the video.
gui_createWindow "wMain", "Main Window", 64, 64, 256, 320
gui_createWindow "wSub", "Sub Window", 512, 128, 480, 240
gui_setWindowRenderer "gui_renderer_window"
gui_update
gui_render
gui_cleanUp
function gui_renderer_window(_title as string, _x as integer, _y as integer, _width as integer, _height as integer)
d3d_color 86, 105, 71, 255
d3d_box _x, _y, _x + _width, _y + _height
d3d_color 34, 41, 29, 255
d3d_box _x + 4, _y + 28, _x + _width - 4, _y + _height - 4
d3d_color 255, 255, 255, 255
d3d_startText
d3d_text 1, _x + 8, _y + 6, 0, _title
d3d_endText
endFunction
[/Edit]

Previously TEH_CODERER.