Pain

Had an extremely painful and lengthy tooth extraction today. The local anaesthetic is wearing off and the pain is increasing. Damn all you people that reassured me it wouldn’t be painful. [Update]: OK, I just read planet gnome and feel a bit bad at complaining about tooth pain when some people are recovering from cancer… Congrats to Manu on his recovery 🙂

]]>

Fix-it Saturday

Fuelled by the outrage, anger and misery caused by not receiving my Metroid Prime 3 pre-order (I was hoping for a little enjoyment before having my tooth pulled out on Tuesday :(), I’ve fixed a couple of things today. First was my Wii’s crappy component output; I’ve read that it’s out-of-spec, which sounds about right given the two TVs I’ve had have both had problems with it. Long-story short, the problem is bright colours are over-exposed (causing detail to be lost) and no amount of brightness/contrast adjustment will fix them – added a resistor to the luma channel of the component cable, Bob’s-your-uncle, sorted 🙂 Second fix, been using a rapidly-failing wireless track-ball to interact with my ‘media-box’ (in quotes, as it’s just a stock Ubuntu gutsy machine). I would be using Elisa and my lovely media centre remote a friend donated to me, but it would appear that Elisa has resigned itself to being outright sucky (sorry Elisa guys, but 0.1 series was usable, 0.3 series can’t even keep a video in sync and navigation is a complete mess.. but I’m sure it’ll get better, right? :)) Anyway, I took the time to look up how to configure totem with lirc (completely undocumented, nice!) and sorted that out. That wasn’t enough, however, I wanted some basic desktop-wide navigation with my remote-control, so I hacked up ‘presskey‘ using libfakekey. Just a crappy short C app that uses libfakekey to send key presses. In combination with my ~/.lircrc, I can now navigate through folders, start watching videos, seek through videos, switch through apps, etc., all with my remote and all without installing some horrible media centre. Further potential good news, daf was messing around with libjana and python and found a shortcut to instantiate jana widgets through python without bindings… Perhaps he’ll work on starting up some jana bindings?? 🙂

]]>

Splitting up with libjana

Jana (libjana, libjana-ecal and libjana-gtk + tests and examples) are now in their own separate repository, away from openmoko-dates2. I doubt anyone has checked them out, but just in case, new repository URLs: https://svn.o-hand.com/repos/jana/trunk
https://svn.o-hand.com/repos/dates/branches/openmoko2 It is also now configured and installed as a dynamic library. As multiple applications are using it (openmoko-dates, openmoko-today, openmoko-worldclock) and it gradually increases in size and functionality, it makes less sense to link it statically. I’ll try and update my PPA on the weekend with some more of these OpenMoko applications, but no promises – my desktop computer is temporarily broken (:() and Metroid Prime 3 is out this Friday (:)). I did take on some of the ‘suggestions’ made in my previous blog with the digital clock in libjana-gtk, but I’m going to refrain from posting a screenshot. If anyone’s genuinely interested in helping (either with patches, or real criticism), they’re more than welcome 🙂 Thinking of patches, Iain wrote an excellent patch for JanaGtkWorldMap that I hope to integrate tomorrow and use in the world clock application… Unfortunately, didn’t get too much done today, just been one of those days… Think I might be coming down with something again, was a heck of a struggle to get out of bed this morning :/ Looking forward to a relaxing weekend. On the subject, last weekend I went back down to Southampton to visit a couple of friends, and got to complete Portal. Which is just about the best game I’ve played in years, definitely a reason to either own an Xbox 360 or a reasonable PC running Windows (seriously!) It just about off-sets the disappointment that is the Halo 3 single-player/cooperative campaign… And it was good to see uni friends again of course.

]]>

OpenMoko bling

Its been decided (from demand) that libjana be compiled as a dynamic library in OpenMoko/OpenEmbedded, due to the difficulty/breakage of staging a static library, and the fact that it gets used in multiple apps; so that makes it more viable to use in other apps. With that in mind, I’ve added a bit of bling to the Today app, in the form wallpaper support and JanaGtkClock: Also, I finished off the digital display 🙂 Of course, the wallpaper is optional and, as always, the theme controls the colours.

]]>

libjana knows when you sleep

New widget: JanaGtkWorldMap A world-map widget that (optionally) shows the daylight hours for a given time/date. Like the clock (also featured in the corner), it’s fully scalable and uses theme colours. Has functions to translate back and forth between latitude/longitude and x/y too, so I’m expecting a libjana-gtk/gypsy mash-up from a certain Mr. Burton (no pressure) 🙂

]]>

Try out openmoko-dates

Ok, I realise that dev packages, even with doc packages, are pretty useless without examples… So I took a little time today and packaged up the tests and examples, libmokoui2 (with documentation) and openmoko-dates, and added them to my repository. So if you liked Dates before, perhaps you want to try out openmoko-dates, or check out the new back-end library. I’d like to think that libjana is the calendaring/time equivalent to libempathy; please don’t make me cry that I’m wrong 🙂
Also, a friend pointed out that I got the source lines wrong yesterday (after I asked him to test it..), so here are the proper ones: deb http://ppa.launchpad.net/cwiiis/ubuntu gutsy main restricted universe multiverse
deb-src http://ppa.launchpad.net/cwiiis/ubuntu gutsy main restricted universe multiverse Feedback would really be appreciated!

]]>

libjana packages for Ubuntu gutsy

Thanks to Ubuntu’s new Personal Package Archives, there are now libjana packages available for Ubuntu gutsy. I haven’t packaged openmoko-dates/libmokoui yet as there’s a critical bug in MokoFingerScroll I only noticed yesterday (I’d been developing on a dual-core laptop previously, which seems to mask the bug…) that stops it from being useful. I will add libmokoui, openmoko-dates and perhaps more openmoko bits when I get the time. I also haven’t packaged the examples/tests yet as I just haven’t had the time/inclination to sort it out, but I will in due course (meanwhile, check out the svn).
Anyway, if you want to try out any of the libjana bits, the development files and documentation are all packaged and ready to go. The libraries are compiled static (and the pkg-config files reflect this, so it’s not something you need to worry about), as they’re pretty small and not really ready to be used as a dll. The documentation is accessible through devhelp when installed. The /etc/apt/sources.list lines: deb

MokoFingerScroll event magic

So, spent some time at MobileBarCamp and at work this Monday, re-organising MokoFingerScroll and how it synthesises events. Previously, all events would be intercepted and only after the cursor button was raised would a whole ‘click’ event be synthesised. This is probably how it works in Qtopia, as they seem to have the same problems in their similar widget in Qtopia phone edition (which I recently tried on the OpenMoko phone).
Now, when the mouse is clicked, an enter and a button-down event are sent to the underlying widget – then all following motion events are transformed and forwarded onto that widget too. When the mouse is raised, if scrolling occured, a leave event is sent, then a button-raise event are sent. If no scrolling occured, we want the underlying widget to respond to the click, so we send the button-raise event first, then the leave event.
The up-shot of this is, text selections work in MokoFingerScroll (hah, take that Qtopia! +1 GTK!) and behaviour of widgets in MokoFingerScroll is just overall more reliable and predictable (for example, buttons present their ‘pressed’ state while you hold down on them now). There are still a couple of kinks to work out, but this is much better than the previous method.

]]>