webglade

webglade is a JavaScript library to dynamically create XUL GUI from Glade XML files. It is a Rapid Application Development tool for developing Rich Internet Applications.

Download

The latest webglade tarball release can be downloaded here.

Examples

hw is a minimal 'hello world' example. Open hw.xul to see it in action.

hw2 is another trivial example. Open hw2.xul to see it in action.

htv3 shows simple callback handler. Open htv3.xul to see it in action.

mab is an example based on the excellent MAB (Mozilla Amazon Browser). Open mab.xul to see it in action. The XUL part of MAB is replaced by a Glade XML file. Unfortunately, MAB has been discontinued since Amazon changed their web service so this example always shows the same data.

Usage

  1. Create user interface using Glade UI designer.
  2. Write your JavaScript application and Glade/XUL initialization code.
  3. Create a XUL file which loads all necessary JavaScript files, sets up CSS style and calls your initialization function.
  4. Open your XUL file in a XUL enabled web browser.

See hw for a simple 'hello world' application. Open hw.xul file to run it in your web browser. Note that JavaScript must be enabled.

Goals

  • Load Glade XML file(s) containing description of (Gtk) widgets into a XUL enabled web browser and create similar XUL widgets.
  • Connect callbacks specified in the Glade XML file(s) to user's JavaScript code.
  • Allow users to implement and use their own custom widgets.

Why XUL?

Ideally, webglade would support all web browsers with DOM scripting, DHTML and AJAX. There are many web toolkits webglade could use for backend. However, after experimenting with HTML, XUL and XAML, I settled for XUL which works best and requires little involvement with a specific web toolkit.

Development

The code was written using ParenScript and compiled to JavaScript using Emacs ls-mode.

License

webglade is licensed under the terms of the GPL license. Details are contained within the COPYING file, included with the distribution.

Feedback

Please send me an email.