Published 2010-07-05 00:00:00

A Release!!! - Well Idle hands make cool stuff...

What is It?

Basically Glade on steriods. (and it needs a good name!!)


Well Glade the UI builder is great for what it does, however app.Builder.js attempts to solve a few roadblocks in Glade

  • Moving stuff around is klumsy - no drag drop - It's not very good for prototyping layouts...
  • It's limited in what widgets can be added
  • Coding (when used as an Ajunta addon) is just downright messy.
  • It's difficult to extend/modify (and in some cases next to impossible)
  • Adding additional properties to widgets is difficult
  • Information is often hidden from display (how many clicks to find out what signals are connected)
  • There is no 'run it and see' option.

So what makes this different..?

  • It's all done in Javascript - using a tree like structure (and it's fully self hosting) - the application is used to modify it'self.
  • It uses GObject Introspection. which solves a number of issues
    • All available properties can be set (and quickly listed, with documentation)
    • how widget's can be packed, can be determined from introspection of the methods.
    • all signals are available, and stubs are created for you to start implementing.
  • Making extra widgets to the application is just a matter of editing files (eventually a UI will enable you to pick from a list of available Introspection elements... )
  • You can build web Applications (using toolkits like RooJS) - ExtJS, Moo etc. could be easily added..
  • It should be quite easy to build Clutter applications...

Do I need to know anything to use it.

Yes, one of the core concepts behind the builder is understanding XObject, a simple Javascript wrapper around GObjects
that enables you to create a JSON like tree, and XObject will turn your tree into an application.

Key features of the XObject are
  • xtype - the name of the GObject (eg. Gtk.Window)
  • packing - the pack property, can be a string (comma seperated indicating how an element is packed to it's parent)
  • id - all objects can have ID's you can fetch any object using this.get('the_id') as long as it's a child of the current element. To look up the tree, use a '.' at the start, or to start at the top of the tree use '/', eg. this.get('/Window') get's you the window. this.get('/Window.toolbar') get's you the first toolbar in the window.
  • el - when an element is created, the GObject is always stored in this.el
  • |pipe - properties - currently the editor uses '|' as a prefix to indicate the value is raw Javascript (eg. a function or Value, that when used should not be quoted as if it was a string.

What state is it in?

Well, It's self editing.. - The application is used to create it's self, just create a new Gtk Project, and point it at the Sample directory, and you can edit the current codebase. (copying it to the Builder directory when you have a stable build)

What's to do...

Quite a few tweaks.. It works, but could do with more time in polishing the interface. My personal goal is to save time using it as a productivity tool, for development. Which is basically where it's at..

Where do I get it?

Download a tarball app.Builder.js.2010-05-25.tgz
git clone

once unpacked/cloned.
run - to update your gir files.
If you want to try RooJS editor - you need git then

What do I need to get it to work?

basically a working gobject instrospection installation (.gir files and .typelib files) and the latest version of the Gnome seed interpreter
- I know it works on Linux. I would be interested to hear if it works on other platforms.
Note: there is a update script in the distribution which fixes the currently available Gtk gir's (please read the readme.txt for more info)

Mentioned By: : builder.js (34 referals) : RooJSolutions - When unstable is just not unstable enough (20 referals) : Planet PHP (15 referals) : App.Builder.js (13 referals) : Re: libseed-list seed && GtkTreeSelection (10 referals) : app.Builder.js - First release - Alan Knowles | Regator (7 referals) : "builder.js" (7 referals) : Qaiku | #midgard | using app.Builder.js together with Midgard's GIR bindings might be very interesting. "Glade on steroids" (3 referals) : appbuilder.js (2 referals) : Planet PHP (1 referals) : Qaiku | #midgard (1 referals) : "app.Builder" php (1 referals) : Alan Knowles gobject (1 referals) : extjs api (1 referals) : information about bulder.js (1 referals) : need a app builder (1 referals) : Example Zend Framework Blog Application Tutorial - Part 6: Introduction to Zend_Form and Authentication with Zend_Auth - Maugri (1 referals) : Maugrim The Reaper's Blog (1 referals)


Interesting for Midgard
Since Midgard2 now has GIR available this might be very interesting - you could quickly build applications combining GUI and storage.
#0 - Henri Bergius ( Link) on 2010-05-26 18:31:52 Delete Comment
#1 - Alan ( Link) on 2010-08-22 21:35:44 Delete Comment

Add Your Comment

Follow us on