X-Git-Url: http://git.roojs.org/?p=app.Builder.js;a=blobdiff_plain;f=XObject.js;h=05463b0d291ecc904b4f60290696dcd4a8f331ee;hp=08c1b68a20dbaf1a28aa21951dfd4ab9d7d4eb9e;hb=refs%2Fheads%2Forigin.version_1_1;hpb=532f0c2764cf785f75bc81d4c6393b9c8a8cbfc4 diff --git a/XObject.js b/XObject.js index 08c1b68a2..05463b0d2 100644 --- a/XObject.js +++ b/XObject.js @@ -30,7 +30,7 @@ GObject = imports.gi.GObject; * * use XObject.debug = 1 to turn on debugging * - * If XObject/[xns]/[xtype].js exists, it will use this to override properties.. + * If XObjectBase/[xns]/[xtype].js exists, it will use this to override properties.. * * * He's some questions. @@ -58,33 +58,24 @@ function XObject (cfg) { //print ("XObject ctr"); - this.config = {}; - this.constructor = XObject; + this.config = {}; // used to initialize GObject + this.cfg = XObject.extend({}, cfg); // used to store original configuration.. for referencing.. + // we could use this to determine if + // we are actually inside a inherited class... + // as define() should actually set this up.. - // start by seeing if we have a base class.... - try { - // loocks for XObject/Gtk/TreeView.js [ TreeView = { .... } ] - // xns is not a string!!!? - var gname = false; - if (typeof(cfg.xtype) == 'object') { - gname = GObject.type_name(cfg.xtype.type); - // print("GNAME:" +gname + " GTYPE:"+cfg.xtype.type); - } + if (!this.constructor) { - var base = gname ? imports.XObjectBase[gname][gname] : false; + this.constructor = XObject; + var base = XObject.baseXObject(cfg); if (base) { - // print("Overlaying XOBJBECT-BASE." + cfg.xtype); - XObject.extend(this,base); + XObject.extend(this,base.prototype); } - } catch (e) { - // if debug? - XObject.log("error finding " + gname + " - " + e.toString()); } - // copy down all elements into self.. // make an extra copy in this.config?? - which is the one used in the constructor later @@ -94,7 +85,7 @@ function XObject (cfg) { continue; } // these properties are not copied to cfg. - if ( // i == 'pack' || + if ( i == 'pack' || i == 'items' || i == 'id' || i == 'xtype' || @@ -137,15 +128,14 @@ function XObject (cfg) { this.items = []; // create XObject for all the children. items.forEach(function(i,n) { - - var item = (i.constructor == XObject) ? o : new XObject(i); + var base = XObject.baseXObject(i); + base = base || XObject; + var item = (i.constructor == XObject) ? i : new base(i); item.parent = _this; _this.items.push(item); //_this.addItem(i); }); - if (this.onConstruct) { - this.onConstruct.call(this); - } + } @@ -310,7 +300,7 @@ XObject.prototype = { imports.console.dump(item); Seed.quit(); } - print(this.config.xtype + ":pack=" + item.pack); + print(XObject.type(this.xtype) + ":pack=" + item.pack); if (item.pack===false) { // no packing.. various items have this .. return; @@ -602,7 +592,19 @@ XObject.extend(XObject, { print("ERROR: " + output); }, - + /** + * fatal error + * @param {String|Object} output String to print. + */ + fatal : function(output) + { + + throw { + name: "ArgumentError", + message : output + + } + }, /** * Copies all the properties of config to obj, if the do not exist. @@ -709,7 +711,52 @@ XObject.extend(XObject, } return ret; }, - + /** + * return the Gobject name of a constructor - does not appear to work on structs.. + * @param {Object} gobject ctr + * @return {String} returns name + * @member XObject type + */ + type : function(o) + { + if (typeof(o) == 'object') { + return GObject.type_name(o.type); + // print("GNAME:" +gname + " GTYPE:"+cfg.xtype.type); + } + return 'unknown'; + }, + /** + * return the XObjectBase class for a cfg (which includes an xtype) + * @param {Object} configuration. + * @return {function} constructor + * @member XObject baseXObject + */ + baseXObject : function(cfg) + { + try { + // loocks for XObject/Gtk/TreeView.js [ TreeView = { .... } ] + // xns is not a string!!!? + var gname = false; + if (typeof(cfg.xtype) == 'object') { + gname = XObject.type(cfg.xtype); + + } + print("TRYING BASE OBJECT : " + gname); + // in the situation where we have been called and there is a base object + // defining the behavior.. + // then we should copy the prototypes from the base object into this.. + var base = gname ? imports.XObjectBase[gname][gname] : false; + return base; + + } catch (e) { + // if debug? + XObject.log("error finding " + gname + " - " + e.toString()); + return false; + } + + + }, + /** * @member XObject createDelegate * creates a delage metdhod