This week I've set aside afternoons for learning some more about QT, and answering some of the key questions we set ourselves. I built a little GUI app today, and confirmed that SVG images can be used for icons; I also cross-compiled it on Windows 7, and it works there too. Testing the app on XP, though, I ran into the same dependency issues as before; with a suitable collection of DLLs I could get it to run, but I couldn't get any SVG images to show up. I think deployment on Windows is going to be a rather difficult issue; we need to get it solved before we go any further. However, I'm hopeful that we can have a fully SVG-based GUI, which is great.
ØE came by on an arranged visit to talk about many things, including Cocoon/eXist, which they're planning to use for a project soon, and the idea of an annotation server, something we're also planning for the PKP project. We talked about a framework whereby the concerns would be well separated, with the document publication engine and the annotation system living on separate servers and communicating over a stateless API, and determined that most likely, you would want the annotation server to pull content from the publication server and integrate it into its own pages. We will collaborate on a schema fragment for storage and/or transmission of annotations, and on the nature of the APIs on each side.
Got the QT IDE installed on Windows, and built an application, in order to find out about dependencies, redistribution etc. It seems that you basically have to redistribute three core dlls, along with (possibly) some MS VC++ dlls, in order for apps to function, but you're allowed to redistribute the QT dlls; as far as the MS VC++ dll(s) are concerned, we'd have to see under what circumstances they're needed, where they're likely to be missing from a system, and whether it's practical to redistribute them. QT seems to work OK on Windows 7, although it's not supported formally on that platform.
Several things emerged from my brief trawl through examples and help today:
- The default text editing component is rudimentary, but a WebKit browser control can be used to provide sophisticated editing.
- QT has a similar system of Actions associated with widgets as Delphi does.
- The QT QIcon object seems to handle SVG, and will handle scaling automatically if necessary (at least, scaling downwards), as well as the generation of disabled variants. This promises to make action icons simpler than they are in Delphi.
Yesterday, I'd tried and failed to build the Phonon Music Player example project; the error was "cannot find lphonon". A quick Google led to my creating a symbolic link from a phonon library in /usr/lib; I had libphonon.so.4, but it was presumably looking for libphonon.so, so I did sudo ln -s /usr/lib/libphonon.so.4 /usr/lib/libphonon.so
, and was then able to build the project and listen to audio files successfully.
At home, I got QT creator working with no problem at all, but installing on the work machine had a couple of glitches; first, I'd forgotten which of a list of libraries I'd installed prior to installing QT, so I sent myself that list from home; then when starting the app, it thought the examples were not installed (couldn't solve this, but I can still open all the examples manually, so no worries); and finally, trying to compile an app resulted in an error stating that no default QT version was set, so I had to go into the Tools / Options dialog, add a new QT version, and browse to the directory /home/mholmes/qtsdk-2009.03/qt
, which it identified as QT 4.5.2. After setting this as the default version, example apps compile and run OK.
After spending last week in DH's excellent workshop on text-analysis, I bought a copy of Minitab to use on a text-analysis project related to the Colonial Despatches, which will probably result in a paper. Took a while to get an account set up on the retailer's site, demonstrate my educational status, make the purchase, then fill in and submit the Pro-D cheque req form, but I now have the software working on my Windows XP VM.
Worked through examples of compiling dictionaries based on the del.icio.us API and building recommendation functions from them. So far so good...
Started working through the examples in Collective Intelligence, learning Python syntax as I go, and trying to figure out similarity metrics. The math is beyond me, especially when it comes to the more complicated metrics like Jaccard Coefficients or Tanimoto Scores, but given that I can disentangle the arithmetic of the algorithms, I don't really need to understand why they do what they do. I might work on a Delphi application in parallel to the Python, so that I'm forced to re-code the examples in a way that makes me understand them.
Looking at how best to script Inkscape to rasterize svg source files.
Inkscape can be scripted via Python, but for the project at hand this might be more than we need. I suspect that we can write a much simpler bash script that will do everything by calling inkscape from the CLI and using built-in functions. A bit of reading here: showed me that I can do something like this:
/Applications/Inkscape.app/Contents/Resources/bin/inkscape -D -e ~/Desktop/11.png --export-area-canvas ~/Desktop/11.svg and produce a png that retains the canvas bounding box. If I drop the --export-area-canvas bit I lose the bounding box and have a zero-margin png. I can adjust the width and height with -w and -h in the usual way: pass it a width and let Inkscape do the math to arrive at a suitable height.