Back in Business

The score editor project has come off the back burner and is now up front. I still have work to do with regards to my thesis but I expect I'll have that done before mid-summer. Right now the focus is on the following:
  • Completing the port from Java. This task is mostly done, and we just need to implement
    • MIDI playback, and
    • loading/saving of project files.
  • Rendering of both scores and tablature.
  • Create a website (partially done).
  • Fix some bugs and glitchy behaviour.'
So not much really. I'm really hoping to get the first public beta out before 2012, so here's hoping! For anyone interested, here are some of the technologies I'm currently using, all of which I enjoy:
  • Qt SDK
    • Qt Libraries
    • Qt Creator (highly recommended for C++ dev)
  • Boost C++ Libraries
    • Mostly for Boost Signals, which I prefer over the Qt signals/slots system due to it being far more flexible
  • Redmine
    • For internal project management (currently)
  • Django + virtualenv
    • For website dev (I edit everything with vim)
  • Inkscape
    • For vector graphics, which we use to produce the paths for various shapes (e.g., clefs and rests)
  • Git
    • For version control, which I highly recommend. Who knew branch-based development could be so easy? I also love being able to commit locally, and manually tweaking my commits.

New Beginnings

For anyone who still happens to read this blog, or for anyone who falls upon it, I'm hoping to get back to blogging a little more soon. I very recently successfully defended my M.Sc. thesis, so now I have plenty of free time to write code and blog, amongst other things.

Elided Labels in Qt

So for one of my projects I was dissatisfied with the fact that a QLabel whose horizontal size policy is Qt::Ignored will have its text clipped instead of having an ellipsis at the end (or somewhere in there). I whipped together a simple extension to QLabel that puts an ellipsis at the end based on the current size of the label. It's not complete in general (e.g., doesn't really support multiple lines), but for me it gets the job done. Feel free to use this code for whatever purpose you please (i.e., it's in the public domain).

elidedlabel.hpp
elidedlabel.cpp