The week in qooxdoo (2010-10-29)

Here’s no trick, but a treat for you: the weekly status update.


Localized Strings

The variousqxh* locator types are now able to find qooxdoo widgets that use localized strings for their labels by looking for the translated text:

qxh=*/[@label="Localized Label"]

Improved wildcard support

Locators using wildcards, i.e. “*“, like the one above frequently led to tests failing with an error message like “too much recursion”. This was due to circular references within the widget hierarchy of many qooxdoo applications, especially those with large amounts of widgets. By keeping track of visited widgets, the qxh locators now avoid this problem. As a an added benefit, the execution of wildcard locators was sped up significantly.


For a complete list of tasks accomplished during the last working week, use this bugzilla query.

Selenium Testing

Steven M. Cherry of Hericus Software, provider of a fine solution for continuous integration and bug tracking called Zed Builds and Bugs, let everybody know about their benefits of qooxdoo-based automated testing. That’s what he had to say:

“Hi All, I just posted a blog entry and video about how I’ve been able to use Selenium with qooxdoo to automate the testing of my application. Not only that, when I run within Firefox I can take screenshots directly via JavaScript and capture them to png files for my documentation. It really saves me a lot of time.

The video is interesting to watch the automation in play and see it walk through the portion of the application that I captured.

Thanks to everyone for continuing to make qooxdoo one of the nicest toolkits out there for web applications”

Well, thanks Steven, it’s particularly great that you let others know about such a useful real-life case of automated Selenium testing with qooxdoo. With qooxdoo’s excellent built-in support for Selenium, there’s no excuse for not GUI testing your apps anyway…

Contrib: Dialog 0.3

This time Christian Boulanger had an update for his Dialog contrib, and he’s also asking for help on the theming side:

“Hi everyone, just to let you know that I release version 0.3 of the qooxdoo-contrib Dialog package. This is a small update: in addition to some bug fixes, it adds two dialog types, “error” and “warning”, callable with dialog.Dialog.warning() and dialog.Dialog.error(). This additions have been made possible by Fahri Sönmez, who kindly contributed a patch.

While we’re at it, I am still hoping that some theme-guru gets interested and involved in the Dialog project, which still needs to be made themeable. Dialogs are bread-and-butter widgets in web application development, and it would be nice if the qooxdoo community had a set of versatile and styleable dialog widgets. I feel like I’ve done my part 😉 and I am not a theme person.”

You can find the latest Dialog version in the contrib demobrowser. If you can help with the theming (which maybe is a good opportunity to digg deeper into qooxdoo theming if you haven’t yet), please let Christian know.

That’s it for today. Happy Halloween everyone! Note: next Monday the core team will enjoy another holiday, so we’ll be back at work on Tue.

The week in qooxdoo (2010-10-22)

Here is the weekly status update:

Event System

The event models, which the various browsers implement, are quite different: Firefox, Safari, Chrome and Opera provide the DOM 2 event model, but Internet Explorer provides a proprietary Microsoft event model. But with the new IE9, which now also implements the DOM 2 event model, we decided for this browser to use the DOM 2 event model instead of the old Microsoft event model. In the past the event model was mostly determined by browser sniffing, but now we are continuing to switch to feature detection. It is implemented in the current trunk with revision 23560. All trunk users, please keep an eye on event-related issues and file reports if you notice problems, thanks.


For a complete list of tasks accomplished during the last working week, use this bugzilla query.

Real-life Example: Foxmemo

Peyman Vasegh has some updates to share for the Foxmemo application, which allows to create and manage all kind of web forms without any programming knowledge.

Let’s hear what he says:

  • web-based, multi-user and cross platform environment to develop AJAX projects.
  • Creates Forms rapidly, without any programming (Demo->Admin GUI link)
  • Offers 3 types of Forms: Standard, Simplified (Demo->Office->Appointments) and Overwritten (same as your playground) (Demo->I.T.->Trans. Log)
  • Easy to manipulate Forms, such as adding a new widget, restructure the layout, update user credentials (Demo -> Admin GUI)
  • Forms can be inter-connected via zLinkOne (one-to-one) and zLinkMany (one-to-many) widgets
  • Handle BEFORE INSERT/UPDATE/DELETE triggers in simple pythonic statements. For example, (#python: return ”) proceeds with the transaction; while (#python: return ‘message’) aborts the current transaction and shows ‘message’ to user (sample in downloaded-file->/vfoxmemo/server/
  • Aesthetic (thanks to qooxdoo!), mature (Python, PostgreSQL), well tested and stable (since qooxdoo 0.7)
  • Seamlessly integrates existing (D)HTML files/portals (through Overwritten Form types)
  • Integrable to Apache 2.0 via mod_python
  • Locally installable (downloadable zip files)
  • It’s free! Basic technical support via email is free, too.

Have a look yourself. Maybe you noticed already that he updated the live demo with the recent DarkTheme contribution.

That’s it for the moment, bye.

The week in qooxdoo (2010-10-15)

Welcome back to the weekly summary.

Patch Releases

Certainly you have seen the patch releases that shipped a few days ago. If you have apps that are based on the previous qooxdoo versions, upgrade to the latest releases qooxdoo 1.2.1 and 1.1.2. If you are still on older qooxdoo releases, you should consider to migrate to those latest versions.


A long-standing bug has been closed, which concerned the initialization of static class attributes, but not those alone. Consider this piece of a qooxdoo class map:

static :  {
  mystatic : new qx.util.format.DateFormat("yyyy-MM-dd")

As discussed previously constructs like this introduce load-time dependencies for the class which are not covered by the usual class sorting. Run-time dependencies of DateFormat‘s construct method are “lifted” to load-time dependencies of the class that includes the above snippet. This has to be accounted for.

This lifting of run-time dependencies of used classes to load-time dependencies of the using class affects all values of a qooxdoo class map which are immediate function calls, object instantiations or the defer function. The new implementation of the dependency analysis makes it possible to use such constructs safely.


For a complete list of tasks accomplished during the last working week, use this bugzilla query.

Job Opportunities

While rather new, you should already know about a page that allows everyone to offer – or request – qooxdoo-related jobs and services. Currently, there are job opportunities for three different qooxdoo projects: one is about app development within 1&1 (right, the company behind qooxdoo), the others are contract-to-hire offers in the US and UK, respectively. If you are interested, check ’em out.

Service Offers

Talking about job offers: If you happen to be a company or a self-employed freelancer, why wouldn’t you want to offer your services as experts for qooxdoo application development at the same page? Feel free to let others know (“Login” to the page, using your existing wiki account or by requesting a new one).

See you again next week.

qooxdoo 1.2.1 and 1.1.2 released

Two patch releases are shipping, which include bugfixes for some critical bugs. They are meant to be backwards compatible to their previous releases. Nothing needs to be changed in the JavaScript code of your existing apps, if they are based on those previous releases. In short: Use 1.2.1 for your 1.2-based app, 1.1.2 for your 1.1.x-based app.

Both releases now account for changes in the latest Beta versions of Firefox 4 and IE9, well ahead of their final releases. In addition 1.2.1 fixes a Windows-specific regression when using combined images.

See the release notes for qooxdoo 1.2.1 or qooxdoo 1.1.2, respectively.