Navigation

Why use QxTransformer?

QxTransformer is a toolkit for rapid application development with the qooxdoo framework. It takes care of the most tedious parts of writing applications with qooxdoo - GUI building can be done almost entirely without javascript, which is only needed for event handling and business logic. 

qooxdoo is a powerful and flexible framework, which lets you build fancy and interactive web-based GUIs. Compared to traditional HTML interfaces, qooxdoo provides not only a much better look and provides widgets known from desktop operating system, but also frees you from the traditional and cumbersome “input, submit & page refresh” model.

However, coding a GUI entirely in javascript has a number of disadvantages compared to the traditional HTML way:

  • Bulding a sophisticated GUI with javascript is error-prone. Even though javascript syntax check and code completion exist in every good editor,
    it is very easy to make mistakes that will only be spotted when the application is run, resulting in longer code & debug cycles.
  • It creates code that doesn’t read very well. Whereas a HTML page displays a clear structure and element hierarchy, qooxdoo javascript needs
    countless helper variables with no other use than to nest widgets (tb1 = new qx....; tb2 = new qx...; mb4.add(tb1,tb2);).
    These variables also make it difficult to reuse code because of potential name conflicts.
  • There is no equivalent for the HTML <form> element and mechanism. Many developers miss a simple way to submit data to a server that doesn’t involve the manual collection of the values of various input widgets. [This info refers to version 0.3; databinding has not been re-implemtented for v0.4]

QxTransformer has been written to solve these problems. It reintroduces a number of advantages of the XHTML model while at the same time keeping all the goodies provided by qooxdoo.

  • Platform Independence: QxTransformer is Python-based and thus platform-independent.
    You can run it in any system than has Python interpreter.
  • Clarity of Code: The QxTransformer XML syntax has been carefully crafted so that QxTransformer xml source code models the widget hierarchy in a way that is logical and easy to remember.
    The source code can be modularized through includes and extended through macros [coming soon in version 0.4], which help to avoid repetitive code.
  • Self-Validation: XML is self-validating and keeps you from making typos that easily occur in javascript code.
    We plan on providing a XTD validation sheet so that one can immediately see whether certain attributes and child elements are legal or not.
  • Databinding: QxTransfomer comes with a few classes and code templates that free you from writing your transport code yourself. Databinding of form elements (and virtually of any widget) is achieved through a few xml attributes and works with any backend supported by the qooxdoo json-rpc feature.
    There is also a simple form submission feature which supports your plain old PHP or CGI script the same way your HTML page did.  [This info refers to v0.3, has not yet been reimplemented for v0.4. qooxdoo version 0.8.1 brings new databinding concept, QxTransformer will use it in future.]
  • Template constructs: QxTransformer allows to implement often-used behaviour which requires verbose javascript through simple xml attributes, such as Drag & Drop support,
    broadcasters and observers (known from XUL), translation, etc. [coming soon in version 0.4]
  • Portability: XML code can also be more easily re-used because you don’t have to worry about all those useless variable names that you need in javascript to instantiate the widgets.
    In fact, whole snippets of XML code can be copy & pasted from one application to the other without any adaption and thus encourages code exchange among developers. Also QxTransformer
    supports macros and includes. [macros and includes are planned in version 0.4]
  • Extensibility: The architecture of QxTransformer is such that developers can easily extend the framework with their own widget templates or even with their own entire XML syntax.
  • Compatibility: Although the QxTransformer XML syntax is substantially different from other XML GUI markup languages such as XUL, XAML, QtDesignerML etc, it has built-in multi-syntax support. There are possibilities
    to add any of these syntaxes and use all their infrastructure like GUI builders, IDEs, etc.

There are many other advantages, but I think you got the point why we are so excited about the possibilities of QxTransformer. QxTransformer dramatically increases the speed of qooxdoo application development. With it, we have been able to create whole applications in a few hours.