Category: Dinjam

Dinjam Qml progress


It is late already, I have to go to work tomorrow… today… so this will be a short status update. Today I had enough motivation to work on the Qml frontend of Dinjam again 🙂 and it shows off with SOME results 🙂

We can load scripts and they can actually do something. So this Dialog (with the white area in it) is actually a QGraphicsView subclass created by the Base script (the same script used in the desktop version) YAY 🙂

So that’s it for now =) Hopefully I can soon continue working on it…

Btw: happy new year 😛 hope everyone had a good start 🙂

Dinjam Status Report 12/2010


Just a short update on the current status of Dinjam. I didn’t have much time recently but still there was some progress. First of all I want to welcome back Peter, a member of the original Dinjam team – he recently joined back by contributing 2 patches to the build system. Thanks.

Hopefully there is much more to come 🙂

On another note I invested some time into fixing the Scriptmanager interaction as well as Document interaction across library and the frontends. The functionality is still not 100% (I think) and it is pretty hackish/not yet cleaned up – but it is working initially – maybe not yet as good as master but we are getting there 🙂

And because Christmas is nearing here a little Screenshot of the latest version of Dinjam mobileui branch.

What is often forgot by opensource projects is their homepage. I try not make the typical mistakes and create a easy to keep up2date site early on. Therefore I’m in the process of setting up joomla on Sourceforge (see dinjams project page).

See ya soon hopefully with more updates 🙂

As mentioned in my last blog entry about Dinjam I’m in the progress of separating the core stuff of Dinjam into a library (libdinjam) and creating Uis for different scenarios (like mobile usage).

There are 4 different uis in the works – even though I’m not sure all of them will ever be finished (more about that later).

1.) Desktop (QWidget based)

This is the traditional Ui as it has always been with the Ui designed using Qt Designer and the QGraphicsScene created from within the scripts.

Atm Scripts are broken in the sense of that there are no C++ exports of for example documentmanagement. (and there are some other broken pieces everywhere)

2.) Meego Touch Framework (MTF) (QGraphicsView based)

A new ui based on the MTF developed by Nokia/Intel for Meego. Atm I’m trying to setup a devel environment but it is not as easy as I had hoped – I’m trying the qemugl approach from the wiki – but the image won’t boot using kvm (just stops at loading the kernel) and without it starts X and then stops (no handset UX shows up). How to get network up and running can be found here.

After packaging libmeegotouch and meegotouchtheme for ArchLinux I can now sort of execute/link/use meego applications although there is some really weird gconf stuff going on and I’m not sure if my system is correctly set up now. Maybe I’ve got to set up a Fedora VM or something similar. Or just wait for PR 1.3 of Maemo to easily dualboot Meego natively on my N900 to execute directly on my N900.

Basically everything here are placeholders – as I just recently found out that meego applications run at all (before I had a white square and nothing else appearing).

3.) QML Ui (QDeclarativeView based)

QML or “Qt Quick” how the cool guys at Nokia are calling it seems to be the future Nokia envisions for app development. Combined with their ongoing lab project QSceneGraph which should bring enormous performance gains as all painting will shift from QPainter to OpenGL/on GPU based painting, this may really be the future – at least in the long run. I must admit that the whole affair is really new stuff to me so I’m having a pretty hard time figuring out how to transform a traditional ui into a QML based version.

I’m currently trying basic things like navigating between a basic menu to another page showing an about dialog – and I want to make that happen using a nice transition – and not showing/hiding elements but instead loading them as I need them (to save ressources). Sadly I wasn’t able to find any QML application out there using such an approach… I’m looking for the pages concept of MTF I think…

Anyway… here’s my first try…

So what works? The quit button – and About switches to another page – but atm without a nice sliding transition effect and using show/hide of the different rectangles… not nice imho.

4.) Qt Components (QML based)

The last frontend Dinjam may provide in the future is the Qt Components based one – although atm there isn’t much progress as Qt Components itself are not really anywhere atm. Afaik there exists some sort of a Meego “style” atm and an incomplete MX “style”, with a plasma (KDE) “style” in the working (see this post on plasma-devel mailing list) but there is not really anything useable atm I could plug into. At least to my knowledge.

So no screenshot for that one 😦


So what is still left to do? A LOT! It starts out with library recompiles as soon as I switch platform (3 object files want to relink again), cmake fixes to incorporate the possibility to build not only one but many/all platforms at once. And of course: finish those uis.

I think the best step would be to first get the desktop ui working again and then slowly start creating the others. It remains to be seen how to integrate a QGraphicsScene/View with MTF/QML. Interesting times ahead… that’s for sure.

Stay tuned for more updates. I hope I won’t disappoint you

To end this post: Orbit/Directui anyone? 😛 anyone strange enough to create a KDE ui? 😛

Dinjam revival and CMake magic

Beside of sex, love and rock’n’ roll there are also other things going on… 🙂 (yeah I know those things are laaame in comparison ^^)

Dinjam is going to get a revival as a mobile app for maemo or meego (have I mentioned that before?). I’m planning to do that using a library and mulitple frontends.

One of the frontends planned is a Qml frontend using Qt Quick Components. Another one is a native libmeegotouch UI. And of course the already existing frontend using traditional QWidgets.

Currently everything is in a broken state – and can be found in my mobileui branch on gitorious.

The current status is that CMake migration is in the progress… the library is already created but I’m not sure yet if I need some export macros? or how I should handle include paths… I also need to figure out what has to be cleaned up from the desktop (widget based) ui into the library and how I can strip down those components…

Next will be that I’ve gotta figure out how I can use the QGraphicsView in Qml OR how I can paint from within QtScript onto the Qml Scene… I would like to be able to animate the View (roll it to the side like a paper or something like that …)

So if anyone has got any idea on how to do this I would really appreciate it 🙂

Maybe you are asking yourself what has kept me busy and why it took so long for those small looking steps… well life… and cmake… this grandious build system had something against my complex folder structure… yeah… until I found out how to use it the right way(tm)…. did you know that CMake had an include statement? using it you can include other CMakeLists and therefore you can set variables in a subdir and still use this variable in the topdir where you included the list… who needs add_subdirectory if you can use include? 😛 cool thing… 🙂

I found that solution through the help of a german qt forum 🙂 thanks. so for all my german readers (are there any? oO): here you can find the thread.

Cu next time 🙂


Maybe you’ve been struggling in the past to get scripting into your application? Hard task isn’t it?

NO.. you get pretty good scripting capabilities using the qtscriptgenerator

They expose nearly 100% of the Qt api.. I hear you crying: “BUT THAT’S A SECURITY THREAT!” .. and I fully agree.. so it’s still up to you, to decide what you wanna do… maybe only allowing to use part of the qt modules, maybe just exporting some classes/functions.. it’s up to you to decide, which scripting capabilities you want to offer your developers and how you want to prevent scriptkiddies from taking over your machine 😀

This whole stuff is still really new to me so forgive me if I told ya complete bull**** ^^

I’m also looking forward to the kdevelop bindingsgenerator getting ripped out and ported to be useful for normal bindings.. reason for this is that as far as I’ve heard recently the qtscriptgenerator is pretty out of date technologywise and the kdevelop bindingsgenerator is much better from the technical pov..

Hope we’ll be looking into a bright scripting future.. the possibilities are just too cute to resist 😀

*me goes back to ripping apart amaroks scripting/khotnewstuff capabilities :D*
*me likes the approach they’ve taken :-)*



Cause I’ve finished my work in my internship shortly before the end of the first half and my mentor is at vacation I have some spare time to do all the silly stuff I would never have taken time for if I were at home 😀

One example: atm I’m trying to port khotnewstuff to Qt only (meaning that I try to rip out all not working/useless functions from khotnewstuff and fetch all dependencies from the underlying libs (kdelibs)… believe me.. that is a hell of a task..

My first approach was porting the whole thing at once, just dragging in all the dependencies it needed (which left me at about 80 classes with kio not even completely ported :D)

So my current approach is getting rid of all methods not needed, combining some classes, and trying to port each part one by one.. Currently I’m fighting with KArchive .. got rid of all compile errors.. though linker errors remain.. some of them may be related to the underlying platform (Windows – forced to use that at work 😦 ) but even if that’s the case.. I need to get it working on Windows..

You may wonder why I try to achieve this? Fun? Laziness of writing my own system? 😀 Those are all valid reasons but my biggest reason was that I want to integrate this thingy with Dinjam (the scriptable datamodeller we will be working on next year)

I think I’ll dedicate another post to Dinjam and it’s design *me wants to start hacking*

So.. think that’s it for now.. if someone can help me to achieve this port I would be more than glad 🙂