Since I've begun to focus on the query part of Thor, the UI is starting to matter more and more. Until now I've gotten by with a GLUT-based display window and status readout, while control was handled by the keyboard and the right-click menu. This was getting rather tedious to code for (especially if I wanted anything fancier) and so I've now moved on to using GLUI. Getting it to build on Mac OS X required changing its
CC variable in its makefile to
CC=gcc -framework OpenGL -framework GLUT, but beyond that the resulting
libglui.a was usable as is. The API uses a very simple callback based approach, and although the library itself is done in C++, it sticks to very basic features (i.e. inheritance is about as fancy as it gets). The automatic control layout is good enough (though perhaps somewhat lacking in documentation - to get the text input labels to be right aligned I had to go through the source code and figure out that I was supposed to modify the
text_x_offset member). Right now all of the controls are in their own window, but I may want to merge the two in the future (this requires a bit more work to integrate with the usual GLUT event callbacks).
I've also made some more progress with the MySQL storage backend. Thanks to CocoaMySQL modifying tables and checking results isn't quite as tedious. I've also changed my table structure a bit: there are now
strokes tables, mirroring my
Stroke C++ objects. Saving is handled well, and now the next thing is to add a simple primitive categorizer (like the angle distribution one) so that I can have some kind of basic query working.