A trip down memory lane
Saturday, 17 November 2012
I was digging through some old backups on Friday looking to see if I had any old versions of the Qt source code lying around after Eirik mentioned during his devdays talk that the release tar balls for lots of the early releases including Qt 1.0 had got lost... I didn't find those, but I found some gems I didn't know I had.
Read More
An Unexpected Journey
Saturday, 19 May 2012
Recently, when building qt5, I'd started noticing some very strange errors from the configure script. The errors seemed to indicate that an awk script was being used as a filename - very strange. Even stranger was that other people weren't hitting this issue - just me. Never a good sign. Today, I finally got around to debugging it and the issue was rather weird.
Read More
What's New in Qt 5 for SSL?
Saturday, 14 April 2012
With the availability of the Qt 5 alpha, I thought I'd try to summarise what's been done in the SSL stack. Most of the changes in Qt 5 for SSL are incremental improvements, or things that will form the basis of future changes. In this post I'll try to highlight the main changes:
Read More
Using GnuTLS with QTcpSocket
Saturday, 14 January 2012
It's been quite a while since I last wrote a blog post, but it's not because I haven't been coding, in fact quite the opposite. The Qt opengov project is finally underway and I've been doing quite a lot of work on the various SSL classes. I'm now an official Qt approver, so as you can see the process of getting non-nokia developers the ability to commit to Qt is working.
Read More
Qt SSL Update
Sunday, 6 November 2011
It's been a while since I blogged, so I thought I'd post an update on what I've been up to.
Along with nearly a thousand other Qt developers, I headed over to Munich for the Qt Dev Days. It was my first time at the event, and I was surprised just how big it was. There were a lot of interesting talks, with highlights including Jens' talks on Qt Quick components for the desktop and using QML for rapid prototyping and Peter's talk on Secure Networking.
Read More
SSL at the Qt Contributor Summit
Sunday, 3 July 2011
I haven't written any posts for a few weeks, so I figure it's time for an update. I, along with a bunch of other people who hack on Qt, attended the Qt Contributor Summit in Berlin. This was a very useful event, since it brought together a good mixture of both Nokia developers and external developers - as I would have hoped, KDE was one of the most common afiliations. One of the main things I wanted to do during the event was get together with the people responsible for the Qt SSL code and ensure that the plans for Qt5 will meet the needs of KDE (and others who want non-trivial SSL usage).
Read More
Improving SSL Security with Certificate Change Notification
Sunday, 22 May 2011
Improving the security of SSL is a hot topic these days, and trust in certifcate authorities is rightly at an all time low. One way of improving the situation that doesn't rely on believing that a 3rd party will actually do their job properly is to notify users when the certificate for a site changes. There are already extensions for some browsers that offer this facility, so I sat down today to write a proof of concept that looked at how this implemented in Qt.
Read More
QPcap - A Qt-Style Wrapper Around libpcap
Saturday, 19 March 2011
I've been working on a new library for the last couple of weeks that provides a Qt style API for libpcap. For those who aren't familiar with it, libpcap is the library used for capturing raw packets used by tools like tcpdump and wireshark. The pcap library has been around for years, and is built in C rather than C++. The API is pretty simple, but it's not one that can be trivially integrated into a gui application. The aim of the library I've been working on is to make using packet capture in Qt programs a simple matter of using a QObject and connecting to its slots.
Read More
Loading and Scaling Images in a Thread
Saturday, 22 January 2011
In a previous blog post, I showed a simple example of using threads to perform complex calculations (SHA hashes) in a worker thread. I used them there because generating the hash of a DVD ISO can take a while, and GUIs that block make everyone cry. In this post, I'll use the same technique to load and scale an image whilst still letting my GUI startup instantly.
Read More
Getting the details of an SSL connection
Sunday, 9 January 2011
SSL is a pretty complex topic, and whilst Qt makes the APIs pretty easy to use, there's a lot going on underneath and it can be hard to debug. In order to make life a bit easier, I've written a simple tool that will connect to an SSL service then dump every piece of information Qt makes available concerning it. Of course the aim here is both that the tool be useful in itself, and also that it provide a good illustration of how to use the APIs concerned.
Read More
Rendering UI files to PDF
Monday, 3 January 2011
As a followup to my previous blog post about rendering widgets to SVG, lets take a look at rendering them to PDF. I won't go into as much detail as the previous blog post since the code is mostly the same. This time, instead of a renderToSvg() method, we have a renderToPdf() method. All the rest of the code is basically the same as the previous example.
Read More
Rendering UI files to SVG
Monday, 3 January 2011
In response to a question on IRC yesterday, here's a quick example for the New
Year - rendering designer's UI files to SVG using QSvgGenerator. As usual, the
code is simple since Qt gives us everything we need.
Read More
Implementing a Reusable Custom QNetworkReply
Saturday, 28 August 2010
In my last blog post, I showed how to use a proxy QNetworkAccessManager to restrict network accesses to sites included in a whitelist. One limitation the previous version had is that it stopped the disallowed requests by rewriting the request itself to be to an invalid url. This then caused the default implementation of QNetworkAccessManager to generate an error reply for us. This post will look at how to create a custom reply directly, to allow us to display messages to the user etc. or even provide 'virtual' content.
Read More
A White-listing QNetworkAccessManager
Saturday, 5 June 2010
My last blog post showed how a proxy class can be used to monitor the requests being made by a QNetworkAccessManager, and illustrated it using an example that displayed those requests graphically. This post will cover another use of proxy QNetworkAccessManagers, specifically modifying requests and responses. The example we'll use is a very simple one, we'll look at a class that will restrict a QNetworkAccessManager so that it can only access domains listed in a white-list.
Read More
QNetworkAccessManager Proxy Classes
Saturday, 1 May 2010
This blog post will demonstrate how you can tap into QNetworkAccessManager (QNAM), the class is used by QtWebkit for all its networking. QNAM is also the recommended API for high-level networking protocols such as HTTP in Qt. The class is very simple, but provides some powerful features like disk caching, cookie handling, and support for Socks and HTTP proxies. There are many cases when it is useful to be able to watch the requests being made through QNAM, and this can be acheived using a proxy QNAM class.
Read More
Tokamak4 - A New Hope
Wednesday, 24 February 2010
Today I'm leaving Tokamak 4, so I thought I'd write a post about what I've been up to while I've been here.
The first day or so I spent getting my machine sorted out as trunk was causing some issues with my graphics driver leading to a hang in the DRI layer of the kernel. I also had a chance to triage some ksnapshot bug reports and look over some patches. The next day was largely taken up with talks about the current status of the various parts of plasma, kwin and related technologies. We got a little hacking done but not much as it was more important to make sure we're all coordinating our development. The remaining days became a bit of a blur, so in no particular order: I refactored the plasma javascript scriptengine to make it easier to use it with QScriptEngines that are created externally. This is required before we can integrate things like QML. Worked out what is required for QML integration to be implemented in a way that is compatible with our existing javascript bindings etc. This will require some small changes to the API offered by Qt for QML, which may be a problem. If we don't get those changes then QML is likely to be trapped outside the main engine which will reduce what it can do unless we write another set of bindings. Made some fixes to the webslice applet to improve error handling. Started work on an idea I've had in the back of my head for a while, I won't say too much about it here, but I'll include a pretty picture to whet your appetite: In addition to this I've taken part in lots of discussions on topics ranging from activities/contexts, scripting of animations, silk and more. I'd like to thank Will and the rest of the openSuSE team for making this such a pleasant and productive sprint.
A Simple Threading Example
Thursday, 14 January 2010
A topic that I've not mentioned in any of my blog posts is threading, not because I have anything against it, simply because a simple use-case hadn't come up. Today I was coding something easy to describe, where using threads was a good solution, so let's take a look at it.
Read More
Cutting the Web Down to Size
Tuesday, 20 October 2009
A feature that has been floating around in a few places but hasn't been a significant feature in KDE is web slicing. This is the ability to take a piece of a web page (commonly a div) and render it as a standalone object. It's useful for stuff like putting a weather forcast on your desktop, watching new comments on a forum etc. This weekend I made a start on implementing it as tool for Project Silk.
Read More
Adding custom objects to Qt Webkit
Sunday, 5 July 2009
One question I've seen come up several times on #qt and qt-interest is how to
add custom (application specific) APIs to those available by default in
QtWebKit. This is actually pretty easy (once you know how) as I'll show
below. This post will show a simple example of how to make an object available
from javascript, including calling methods on the object and returning values
from C++.
Read More
First Hack with ItemsViewsNG
Friday, 10 April 2009
People reading planet will have seen Thomas Zander's post about the new ItemViews framework the Trolls^H^H^HQt Software guys have been working on. It's very experimental right now, but I thought I'd have a quick look. I decided that a fun hack to write would be to take a standard listview that displays a list of URLs (boring!) and write a custom view that instead displays the rendered web page. I only spent a couple of hours on it, so the code is a hack (eg. you need to resize it to get the pages to display once they've loaded) but the results look ok. The whole code for this example comes in under 120 lines.
Read More
Querying a Wiki Using Qt
Sunday, 11 January 2009
I spent a little time yesterday working on a class that provides
a wrapper around the MediaWiki API. It makes quite a nice example
of how the QNetworkAccessManager API can be combined with
QXmlStreamReader to quickly access web services. The code, as you'll
see, is very simple.
Read More
Advertising
Monday, 29 September 2008
Just watched a very clever advert for the new iphone.
It's a manual, it shows you how to download (and buy) new apps. It's very short, just one feature User ends up having fun - playing game, and then call from a guy Interupting you in the middle of the game is presented as a feature! Slogan about this changing everything (not sure how it's supposed to do so) The advert seems well put together, but I wonder if we couldn't create something similar regarding KDE features?
Read More
Akademy 2008
Thursday, 14 August 2008
As you've seen from all the stores on the dot and on planetkde this week has seen all the KDE developers gathering in Mechelen in Belgium. The organisation this year has been excellent - even the network (usually the achilles heel of KDE conferences) has worked from day one.
Read More
New Plasma Widgets Design
Monday, 14 April 2008
This is the draft design for a new widget API for plasma, it will be appearing on techbase later, but here's what we're thinking.
General Notes The intention of this API is to provide a very simple way for users to create plasma applets. The API can be used both for scripting and from C++. For the simple javascript API, this API will be all that is provided allowing us to run untrusted applets as they will not have access to any dangerous facilities.
Read More
Plasma Sprint Day One
Saturday, 12 April 2008
After a day's work at the Plasma sprint, there's already quite a lot of news
to report. After a lot of trawling through log files, I was able to fix the
problem that was preventing the Plasma binding plugin from loading. In the end
it was something simple (as usual) namely that the method that allows the
plugin to load was not being compiled into the module since it was missing
from the generated .pri file. Once this was fixed, it was simply a matter of
changing the name of the extension we load from 'qt.plasma' to
'org.kde.plasma' to match a fix in the generator and we had a successfully
loading set of bindings.
Read More
QtScript Web Browser
Monday, 24 March 2008
As some of you may have seen, Kent has released the QtScript binding generator on Troll Tech labs. I've been playing with the code for a bit, and as with KJSEmbed one of the first tests was to make sure you could use it to write a simple web browser. Kent recently added support for QUiLoader to the bindings and as a result, I can use the QWebView designer plugin to make things simple. The result is a basic web browser in less than 10 lines of javascript:
Read More
Qtscript Binding Generator
Monday, 10 March 2008
In 4.0 plasma had support for writing applets using Qt's built in javascript interpreter QtScript, but the facilities have been fairly limited. In KDE 3.x KJSEmbed gave us reasonably complete bindings to the Qt and KDE api's, allowing us to write applications such as a web browser in 10 lines of javascript. I'm glad to say that some plans that were discussed at the KDE conference in Glasgow are now a reality and Kent has released a qtscript binding generator based on the one used for QtJambi. The result is that we will very soon have good access to the Qt API from qtscript.
Read More
XML Doesn't Beep
Thursday, 17 January 2008
I learnt a something new about XML today, a part of the specification that deals one of the many edge cases that exist in every file format. To illustate this, lets take a look at a few examples. Why is this XML document well-formed :
Read More
Programming Styles - Why Encapsulation is a Good Thing
Friday, 21 December 2007
I was reading a blog post on beautiful code about different styles of programming earlier this week. The author was comparing the 'ruby style' of direct access to member variables with the getter/setter pattern common in Java code. His basic question was is this simply a matter of your programming background?
Read More
EEE PC
Sunday, 9 December 2007
I finally got my hands on an EEE PC on Friday after having waited for nearly a month for the one I ordered by mail order to arrive. I found out that 'Toys R Us' had some stock and checked that the one in manchester had some. Now I've just got the difficult decision of whether to cancel my original order or not!
Read More
QtScript is also good for tiny things
Sunday, 14 October 2007
Here's a quick example of why it's nice to have a script interpreter embedded in Qt: Plasma's KRunner has a calculator which used code borrowed from the KDE 3.x minicli. The old code started up the bc command line calculator then displayed the result - not exactly an efficient way to do things. I've just committed a change that makes it use QtScript and the code is trivial:
Read More
Plasma Scripting
Sunday, 29 July 2007
I've made some decent progress in the scripting support for plasma today with the addition of the ability to access QPainter, QTimer and QFont from scripts. I've also improved a few other bits of the code. The result is that I've now been able to reimplement a functioning version of the plasma analog clock applet in Javascript. There's obviously more to be done, but I think this shows that things are progressing pretty well and along the right lines. The clock looks just like the C++ one (except I turned on the standard background so it can be distinguished as being the js one).
Read More
Back from Glasgow
Tuesday, 10 July 2007
Well, I'm back from Glasgow and have now almost recovered. The conference was great, and I'd like to thank all the organising team for their efforts. For me things were quite productive, with some nice steps forward in my QtScript code (my bindings are now dynamically loaded plugins for example) and lots of useful discussions about topics from improving the library facilities for scripts. I also managed to make a start on a plasma applet container that lets you write applets in Javascript.
Read More
Animating Widgets
Tuesday, 6 March 2007
Qt 4 includes a useful class called QTimeLine that can form the basis of animations, it's used in QGraphicsView but is also more generally applicable. I did a bit of hacking this weekend and wrote a class that illustrates how it can be used to create a fairly general mechanism for animating QWidgets. The code as it stands needs some work, but it can animate the properties of any QWidgets. You basically say widget X has propery P which should vary from A to B. For example:
Read More
QtScript 105
Monday, 12 February 2007
I've done a bit more stuff with QtScript in order to keep up with the changes in the Qt snapshots. The API has changed a bit to make things more consistent, and I've updated the demo code I had to work with the new version. The changes to support the new API were pretty simple, and basically amount to using factory methods on QScriptEngine to create your script values. The cast operator qscript_cast has also been renamed and is now qscriptvalue_cast, but it works as before.
Read More
QtScript 104
Friday, 19 January 2007
So far, I've only accessed QObjects, slots and UI files, we need to do better to be able to do anything useful as the Qt 4 API has a lot of methods that aren't accessible that way. To do this, we'll use Javascript prototypes. A prototype is basically the object we can consider an instance to be 'cloned' from (philosophy people can think of it as the platonic ideal of the object) - from a purely implementation point of view, it's enough to know that it's the first place the interpreter will look for something that isn't implemented directly by an object.
Read More
QtScript 102
Sunday, 7 January 2007
I've done a bit of tidying up of the QtScript code I was working on, so here's another version. Now, as well as being able to create individual widgets, you can load UI files from Designer. I've also cleaned up the API for calling exec().
Read More
QtScript 103
Sunday, 7 January 2007
Now we can create widgets and load .ui files, we can take the time to fix a few other things. Initially, we could create widgets, but we couldn't specify their parents. Handling this is quite a small change:
Read More
QtScript 101
Saturday, 6 January 2007
As you might have read in Kent's blog post yesterday, the latest Qt 4.3 snapshots just gained a javascript interpreter. I had a bit of a play with it yesterday and it's pretty neat. Unfortunately it doesn't expose any fun objects by default, so I decided to make it possible to create QWidgets.
Read More
Yet another CMake Blog
Sunday, 6 August 2006
Since everyone else is blogging on build systems today, I thought I'd join in. Overall CMake seems to be working out ok, but like anything else, it is not without its problems. One problem I had with it was fixed in the new release this weekend though - you no longer need to write:
Read More
I hate telemarketers
Tuesday, 1 August 2006
I just got a spam call from some telemarketers called Eurointerview who are based in Germany. They seem to think that because they're not in the UK the telephone preference service doesn't apply to them, and presumably that because they're calling the UK the German laws don't apply either. If anyone has any spare junk mail they don't want they could give it to them at: EuroInterview GmbH, Hansestraße 69, 48165 Muenster, Germany. Phone: +49 (0) 2501-968-0, Fax: +49 (0) 2501-968-190, E-Mail: info@eurointerview.com.
Read More
First steps towards Kasbar 4
Sunday, 21 May 2006
Over the last few days I've started working a rewrite of Kasbar for Qt 4. This is a rewrite rather than a straight port because lots of the code in kasbar was there to work around limitations in X11 that will not apply once we have a composition manager. In addition, the old code was massively over complex because the features got added over time until the original design was swamped. I am however able to make use of some of the old code as basis for the new version, and many of the ideas will remain the same.
Read More
KJSEmbed 4, small steps
Thursday, 30 March 2006
I finally got some time to spend on KDE last weekend, so on Sunday I started working on a new binding generator for KJSEmbed on Qt 4. In the KDE 3 version I used Doxygen to generate XML output then processed that with XSLT (using xsltproc) to produce the C++ code for the bindings. Unfortunately this provded to be a bit too inflexible, and difficult for other developers (who weren't familiar with XSLT) to work on. The new code uses KJSEmbed's DOM bindings to process the Doxygen output and seems to be a lot easier to work with - [mX] was making improvements within a few hours of the first commits. This also means we might be able to make the bindings self-hosted in KDE 4 which would be nice.
Read More
KPassivePopup
Thursday, 9 March 2006
Well, after a long break I've finally had a chance to work on KDE again. As a start, I've been trying to get KPassivePopup into a sane state in the KDE 4 libraries. The first step was moving all the internals of the class into the internal data class, which was a bit of a pain but pretty easy. To make things more interesting, it turns out that the API that worked fine on X11, is actually ambiguous on win32 and macos X due to different definitions of WId in Qt, the fix was to remove the ambiguous constructors (which I'd planned anyway as part of making a more Qt4-style API). The question moving forward is if this class needs to allow subclasses to define new visual representations (probably via a decorator of some kind), or if it's better to say there are the following presentation types and that's it. Does anyone who's using the class have any thoughts on this?
Read More
Scripting, Malaga and KDE 4
Sunday, 4 September 2005
I'm now back from Malaga and have just about recovered, so I thought I'd blog a little about the discussions etc. I've been involved in over there. For me, obviously, the big questions were about scripting. Until now, KDE has been weak in the area of scripting applications - this will not be true of KDE 4.
Read More
Scripts with a KDE Feel
Sunday, 28 August 2005
At the party last night I got asked to put my presentation from yesterday online. So, for now I've put it online on my website http://xmelegance.org/. Thanks to everyone who came, I hope you found it useful.
Read More
Qt 4 Work
Wednesday, 18 May 2005
Some progress has been made on the Qt 4 front this week. I've implemented a simple QHttp based version of XMLHttpRequest that will ultimately be bound to KJSEmbed/Qt4. This will mean that the scripts will be able to access web based XML services such as news feeds, weather reports etc. I've now also got a working build environment to begin helping with the kdelibs porting effort. A couple of hints for getting Qt 4 working with the KDE 4 branch:
Read More
KJSEmbed 4
Wednesday, 11 May 2005
Well, I've just got back from London visiting my brother. A note for anyone who plans to visit the Turner Whistler Monet exhibition at Tate Britain - make sure you book. The queues are unbelievable, I've never seen anything like it at a gallery here.
Read More
The trouble with DConf
Friday, 15 April 2005
There's been lot of discussion on the XDG list about a proposal called 'DConf'. Unfortunately, it seems to me to have missed some rather important issues. The most obvious question in any sort of common configuration is system is 'What configuration can be shared?'.
Read More
Trinary operator in python
Friday, 15 April 2005
Here's an example of an easy and compact way to simuate the trinary operator in python. It is not short circuit like the one in C, but it is pretty simple:
Read More
Kasbar and Kicker
Sunday, 3 April 2005
I'm wondering about kicker and kasbar in KDE 4. If we can make kicker's abilities powerful enough to support the features kasbar needs, then maybe it should be less of a standalone app. At the moment, maintaining kasbar is nightmare because it makes kicker do a bunch of things it wasn't designed to support (assuming kicker was ever designed at all!).
Read More
Well, I drew a new avatar...
Friday, 1 April 2005
I decided I didn't like the photo I had here before, so I drew a new avatar. What do you think?
Preparing for Qt4
Saturday, 26 March 2005
I've started looking into porting KJSEmbed to Qt 4. To begin with, I've recreated most of the Q_CLASSINFO demo I posted recently using the Qt 4 equivalents. Listing the slots of an object is even easier than before, as is finding a marker interface:
Read More
KListViewSearchLine Rocks!
Sunday, 13 March 2005
KListViewSearchLine is a great class - I just added search capability to to kdcop with 2 lines of code and a little bit of work in designer!
First filter
Read More
When you add stuff to KDE Libs...
Saturday, 12 March 2005
Reviewing some of the new code that has been added to kdelibs for 3.4, I've noticed a few old problems recurring. Some of the new classes are missing d pointers, this will be a pain in the future and should not have happenned. I strongly urge anyone writing stuff for kdelibs (or interfaces that plugins etc. will talk to for that matter) to review the doc on binary compatibility I link below.
Read More
Avoiding marker interfaces
Sunday, 27 February 2005
I was talking Ian Geiser last night on IRC about ways to allow you to dynamically query KParts for their interfaces. This would for example allow you to avoid having to link special interface classes, or to use marker classes to identify your capabilities.
Read More
Duplication in open source
Friday, 27 August 2004
One thing that people constantly seem to carp on about in Open Source circles is
the frequency with which there are several apps that do the same thing. They then
generally go on to say that the developers should work on whatever their favourite
application is. The implicit assumption here is that having multiple apps is wasteful,
but I don't agree that this is the case.
Read More
Re mpyne's gstreamer blog
Tuesday, 24 August 2004
Since mpyne's blog on planetkde doesn't allow comments I'll post this here: You are incorrect that KDE requires glib thanks to arts - use the ARTS_1_1_BRANCH like most of the core team. That way you can avoid glib entirely. glib is a major barrier to acceptance of gstreamer (and to other technologies).
Read More
Coming soon to a CVS repository near you
Friday, 20 August 2004
It's been a little while since I posted what I've been up to, so here's an update. I've been busy at work, so I've had less time for KDE than I would have liked, but even so I've made good progress on kasbar 3. One of the projects I've been working on in my day job will also be open source and may be of interest to some people.
Read More
Don't worry annma
Thursday, 19 August 2004
Don't worry annma, your not the only one missing the conference. I'm going to be stuck enjoying the thunderstorms here in Manchester.
I would hate you a lot clee
Monday, 2 August 2004
Clee, I'm dead set against you (or anyone else) splitting up kdelibs. This is a poor idea for a large number of reasons which have pointed out before.
KasBar 3NG
Saturday, 24 July 2004
I've been doing some work in the last few weeks to get Kasbar ready for the KDE 3.3 release. The code is now looking good, and doing this has given me some ideas for some major Kasbar enhancements for the next KDE release. I've fixed the progress indicator code - you now get a progress bar just below the icon label for any progress dialog. This works even if the window is minimised. The overall effect of this is really quite cool and I've found it works really well. I've also fixed the version indicator in the about dialog, and some minor display problems with the display of the license text. I've also fixed a problem that was reported with the positioning of the popup in some circumstances. To make up for the dull work above, I've created a branch in which I'm working on a massively souped version of Kasbar. I've already done a lot of work reworking the drawing code and added a number of new features:
Read More
First Thoughts on Qt4
Saturday, 10 July 2004
Last night I downloaded the Qt 4 preview and had a play with it, so far I'm very happy. The new painter code seems great and the GL painting demo suggests a lot fun ideas.
Read More
KJSEmbed gains momentum
Monday, 21 June 2004
A few minutes ago, I was thinking that kjsembed is picking up users less quickly than I would have expected (given how easy it is to use). In the short time between then and now I've found out about two people/projects using it that I wasn't aware of, which has cheered me up. The first is the Kalyxo project which is aiming to improve KDE/Debian integration. It seems they're using it to write a gui for building Debian packages. Apparantly they're missing support for Process which isn't in the 3.2 release, making me very tempted to make an interim release of KJSEmbed available. The version in HEAD has much more power than the previous release, and as far as I'm aware has no particular 3.3 dependencies. The second thing I found was a blog entry on PlanetKDE from Sandro Giessl where he talked about a script he's written in kjsembed that lets you get the pronunciation for words from the webster online dictionary. The script is pretty neat and makes good use of the features of KJSEmbed: loading guis from .ui files, embedding KParts and support for KIO::NetAccess. The fact he found it pretty easy to use is a good sign too. I wonder if we should have some sort of website to which people can upload useful scripts they've written, maybe a section of KDE-apps.org or something? Anyway, it's nice to know that people are finding this code useful, and it encourages me to continue working on it. So, if you're doing something with kjsembed, even if it's just quick hacks etc. please let me know!
Read More
Being Earnest is Nice, but Being Useful is More Important
Friday, 21 May 2004
Last night I was able to commit to CVS the first cut of a kjsembed app I'm working on that will be useful to anyone - even if they don't care about scripting. The app I'm talking about is called Imunge and is intended to be a styleguide compliant tool for manipulating images.
Read More
KDE is Best Linux Desktop
Wednesday, 21 April 2004
Just a quick note to say KDE won best linux desktop for KDE 3.2 last night!
Ready for UK Expo
Monday, 19 April 2004
Well, I'm all set for the UK expo now. Hopefully I'll see some of you there. I'm only going to be around on the second day, but the booth will be manned on both. See you there!
Read More
Nat, Miguel, FUD and other buzzwords
Monday, 29 March 2004
It's hard to see what's going on at Novell right now, and recent comments by Nat and Miguel aren't making things any clearer. They're claiming that they're not aware of any SuSE development using Qt other than YaST, ignoring all the SuSE sponsored KDE development (including new hires such as the developer of the KDE-OpenOffice GUI glue). Nat says he's 'Novell/SuSE Desktop Lead' hmm. I wonder could that be 'Novell/SuSE Ximian Desktop Lead' perhaps - after all he said he was VP of Novell Desktop Services a few months ago, missing out the crucial word Ximian which indicated the limitation of his scope. Unfortunately Nat and Miguel don't seem concerned about confining what they say to the declared policy of the company they work for, perhaps they know something we don't, perhaps they just wish it was true? If any of the Novell guys attending the Linux Expo UK would like to explain what on earth they're doing I would be most happy to listen, either as a UK KDE Representative, an editor of the Dot or a user and developer of KDE.
Read More
UsageMonitor - A New Tool for Usability
Friday, 12 March 2004
One thing that recent dicussions about usability have highlighted is how much our decisions are currently based on personal opinions rather than hard facts. Aaron has recently been trying to address this by asking people how much they use the various buttons in the konqueror toolbar, but this is both labour intensive and inaccurate. So, I've written the 'Usage Monitor' plugin. The Usage Monitor is a KParts plugin that records a log message whenever a KAction is fired. The log simply notes the action that was activated and how it was done - eg. was it via the toolbar, a menu or a keyboard shortcut. By analysing this log it is possible to measure which parts of an applications GUI are being used, and which are not. If a reasonable users can provide sample data using this tool, then we can build up an acurate picture of things we could previously on guess at. The plugin itself is tiny at around 150 lines of code, and works with any application that supports KPart plugins (which covers most KDE apps these days). No modifications are needed to the application itself, and you don't need to tweak the monitor for your app either. The code is a good example of the power of the XMLGUI framework as it shows how easy it makes creating tools that can apply throughout KDE. In this case, it even lets you track the use of actions provided by plugins and embeded kparts as well as the main application. Here is a sample log recorded from Konqueror:
Read More
Usability Teams - A Problem or a Solution
Sunday, 7 March 2004
Aaron has posted a blog entry about developes 'fearing' usability teams, I've replied to his post itself by a comment but I'd like to provide a fuller view of things here.
Read More
ADSL from tomorrow, look out XPath and KJSEmbed here I come
Tuesday, 2 March 2004
My ISP confirmed last night that my ADSL should be working from tomorrow, so I'll be getting back to work on XPath and KJSEmbed. Hurray!
I hate moving too
Tuesday, 24 February 2004
I just moved house (like aseigo) and I second his thought on how much it sucks. My ISP was due to reconnect me to my ADSL today, but this morning I got a call saying it could be another week. Arghhhhhh!
Read More
Making a start on XPath
Wednesday, 28 January 2004
I've started taking another look at how to best add support for XPath to KHTML. I've got a bunch of code I'm busy reexamining that lets you define an AST for XPath. It needs cleaning up but I think it is a decent first cut.
Read More
Autogeneration of JS bindings is a go!
Monday, 29 December 2003
There's good news to report today, I added the first autogenerated binding to the CVS last night! The binding provides access to QDir but the tool is generic and should work on anything we can access as a JSOpaqueProxy (this limitation will be lifted later). There are still some rough edges, and the constructor functions aren't autogenerated yet but basically it works. The next step will be to clean things up a little and to add support for default function arguments. This should be pretty simple.
Read More
Quicky demo of image effects in JS
Sunday, 9 November 2003
Here's a nice piccy of a water colour effect that was created using Javascript. It was originally one of the n7y pics - enjoy!
KJSEmbed reorganisation complete - many fixes
Sunday, 2 November 2003
This didn't seem to work first time, so I'll try again:
I did a major reorganisation of the code just before the freeze hit. This caused a lot of breakage (eg. the wrapper classes were borked, as was KPart support), fortunately things are working again now. One important change is the use of separate classes to handle proxies for QVariant types and opaque pointers, this makes the code a hell of a lot easier to understand. Now that the structural stuff is done, Ian Geiser's SQL bindings seem to be basically working (though the QObject wrapper class needs a couple of bugs squashing) so the only thing that's left actually broken is the QPainter wrapper class. All in all, this code is looking good for the 3.2 release.
Read More
KJSEmbed marches on
Sunday, 12 October 2003
I haven't written much about KJSEmbed for the last couple of weeks because I've been concentrating on squashing bugs in kasbar, but over the last couple of days I've had a chance to work on some kjsembed stuff that has been becoming more and more important.
Read More
KJSEmbed support for event handling
Saturday, 6 September 2003
KJSEmbed can now handle events. At the moment only mouse events, but the rest will come soon. The example below shows how this can be used in practice. Note that I haven't committed this code yet, so it'll be a couple of days before you can use it.
Read More
KJSEmbed now supports enums!
Thursday, 28 August 2003
I've just committed some basic support for enums to kjsembed. This means that enums published by QObjects using the Q_ENUM declaration can be used by scripts. At the moment, the constants are properties of the proxy object itself rather than the class, but the basics are there.
Read More
Creation of KParts, opaque QVariant support, void * support...
Sunday, 17 August 2003
Lots of new features in KJSEmbed over the last few days. I got a new factory method implemented that lets you create read-only parts! This has let me knock together an example that uses KHTMLPart to provide a web browser - total code 22 lines (including blanks and comments). There is also now support for any QVariant type - even those that aren't explicitly suported.
Read More
Things are coming along nicely
Saturday, 2 August 2003
I managed to get a first pure-KJSEmbed application working last night. It's only a basic text editor, but it creates its own KMainWindow and has acess to the action collection. Combined with the signal/JS function code I added recently I think we're almost at the point where KJSEmbed can be used to create real applications rather than just simple wizards etc.
Read More