One of the more heated points in the ongoing KDevelop team meeting here in Munich is the good old language war - while I love (and hate just as much) Perl, Alex likes Ruby, Roberto JavaScript and I’m sure we can find someone who prefers Python.
Since Revision 797621 of KDevPlatform, scripting via Kross is now supported. This allows everyone to write an extension to KDevelop in his favorite scripting language. Since I’m most familiar with QtScript (yes, I did forget all my Perl a moment ago), here’s an example KDevelop script:
function documentLoaded(doc) {
print(KDevTools.toDocument(doc).url());
}
documentController = KDevTools.toDocumentController(KDevCore.documentController());
documentController.documentLoaded.connect(docLoaded);
This little script will listen to all documentLoaded signals from the document controller and outpout the URL of the file once it’s loaded.
So, let’s load a file:
documentController.openDocument("test.cpp");
and watch the URL being printed to command line. The available scripting backend could already be used to implement a simple “switch header/source” plugin, that opens the corresponding *.h/*.cpp file when invoked.
For the moment, the “casts” using KDevTools are required as long as I don’t understand how to auto-convert meta-types in a script-independent way
My goal for this meeting - implement a version control system plugin completely in a scripting language, so it can be deployed without headache for all supported OSes.
… literally means “love goes through the stomach”. What better way to announce some of the delights that await the weekend visitors of the KDevelop team meeting? As if free coffee including a free USB coffee warmer wasn’t enough!
This Saturday (April 12), carefully buttered fresh Bavarian Brezn will be served from 9:00 in the morning. This peak of taste bud stimuli will be accompanied by another non-plus-ultra of cuisine - our local specialities shop, which is usually closed on Saturdays, is going make a one-time exception just for us and freshly bake Poğaça - delightful small rolls filled with tasty cheese.
For the ones that prefer sweet things, don’t worry - there will be German Fruchtplunder and Turkish Baklava - after eating those, pure sugar will taste sour.
More information, including a visual guide on how to get there, can be found on the KDevelop wiki.
I’m happy to announce (no April joke this time) that every attendee to the KDevelop developer meeting in Munich will get a free USB hub (4 port) with integrated coffee cup lukewarmer! No more cold coffee, this wonderful device will make sure that your perfect brew will stay hot warm slightly above room temperature at all time:

There are still some free seats, please check the KDevelop wiki for registration info and instructions on how to get there.
Disclaimer: Cup not included in offer. However, coffee and tea are free during the meeting
You might have wondered why there weren’t many blog entries about the acquisition - it was mostly due to legal reasons. Luckily, these have been resolved today, so I’m really happy that I can blog about the myriads of internal projects that we now have access to:
Reading about Benjamin getting motivated to work on KDE on OS X got me motivated, too. So, one svn checkout later, I realized that before I can even start with KDE 4, I need a bunch of dependency libraries, which are obtainable from Finc or MacPorts. Since I’m not very patient (and low on disk space), I decided to do something about it.
A low hanging fruit is to remove the dependency on the image libraries (e.g. PNG, JPG, JPEG 2000, TIFF) and let OS X do the work. After a 2 days hack, I came up with a Qt Image IO plugin that uses Mac OS X’s ImageIO Framework (source code). It requires Qt >= 4.3 and probably OS X >= 10.5.
The plugin can load all image formats supported by OS X, including animated ones (e.g. animated GIFs), but doesn’t handle image properties yet. Once it matures, I can fix the CMake build scripts to stop looking for libpng and friends, and finally start configuring kdelibs on OS X 
The Qt D-Bus accessibility bridge is now at labs.trolltech.com. You can find the bridge, an introspection tool and a port of Dasher that shows how to manipulate text edits through D-Bus.
If you find a widget that doesn’t expose enough information or behaves badly, please let us know.
After porting Qtopia Core to Mac OS X, the next step was clear:

Okay, it was a weekend hack, so no fonts yet (unless you prefer blocks instead of glyphs) and no qvfb (vnc is the only output driver at the moment).
The wiggly example in the screen shot is a native Windows application and does not link to any win32 UI libraries. It does all the rendering itself and exports it through vnc. This allows Windows developers to develop embedded applications and test the look&feel without running a complete OS emulator.
Of course, this requires some discipline while developing, but since Qt features a pretty complete OS abstraction (file system, sockets etc.), it’s possible to develop a Qtopia Core application in a team with mixed OSes without too many headaches.
No source code yet since it’s in quite an early stage, please send me a mail if you’re interested in a patch.
Just to see how easy it is to port Qtopia/Core to other platforms, I gave Qtopia/Core on Mac OS X a try. A few patches later:

The example is not using any Mac OS X libraries to draw. Instead, it uses shared memory to communicate directly with qvfb, Qt’s virtual frame buffer. The virtual frame buffer is a native OS X application, built with Qt/Mac. It simulates an embedded device that doesn’t have a windowing system. So now, you have three options to run your favourite Qt application natively on the Mac - Aqua native, Mac/X11 and through qvfb.
Since dynamic_cast doesn’t reliably work between library boundaries, Qt introduced qobject_cast to safely cast between QObject subclasses. There’s just one requirement - the class you want to cast to must contain a Q_OBJECT macro. Without the macro, qobject_cast would fail at runtime, which makes it tedious to debug.
Qt 4.3 now includes a compile check that makes sure the Q_OBJECT macro is present when casting objects. If you get a compile error in a function called qYouForgotTheQ_OBJECT_Macro, just add the Q_OBJECT macro to the class and lean back knowing that you just saved yourself some debugging time.
If you want to see IAccessible2 based accessibility via D-Bus on your desktop, you can download the
ia2-demo and start playing with it. Note that this is still work in progress, but feel free to send me your comments.