Builder/Provider/GtkUsage.txt
[app.Builder.js] / builder.html.js
index 31eb112..875e9e9 100644 (file)
@@ -1,16 +1,24 @@
 //<script type="text/javascript">
 
+var MODULE = { isBuilder : true };
+// BC
+var _this = MODULE;
 
+// the apprenderer.
 Builder  = {
     
     render : function(data)
     {
-         
-        this.tree = data;
+        // for debugging 
+         //console.log(data);        return;
         
+        
+        this.tree = data;
+        MODULE = { isBuilder : true }; 
+        _this = MODULE;
         if (!Builder.click) {
             Builder.click= Roo.get(document.body).on('click', this.onclick, this);
-         
         }
         
         this.redraw(false);
@@ -54,6 +62,7 @@ Builder  = {
                 
             } catch( e) {
                 console.log(e);
+                console.log(JSON.stringify(e));
                 // reload!!?
             }
             
@@ -81,7 +90,8 @@ Builder  = {
         
         
         this.munge(cfg);
-        //console.log(cfg);return;
+        this.cfg = cfg;
+        //console.log(this.dump(cfg)); 
         // we draw either a dialog or a tab..
         
         if (cfg.xtype == 'LayoutDialog') {
@@ -95,10 +105,11 @@ Builder  = {
             this.dialogroot = Roo.get( document.body).createChild({
                 id : cfg.id
             });
-             
-            this.dialog = new Roo[cfg.xtype](this.dialogroot, cfg);
+            
+            
+            MODULE.dialog = new Roo[cfg.xtype](this.dialogroot, cfg);
             //this.dialog.el.on('click', this.panelClick, this);
-            this.dialog.show();
+            MODULE.dialog.show();
             return;
             
         }
@@ -126,14 +137,23 @@ Builder  = {
                 }
             });
         }
-        this.layoutbase.addxtype(  cfg ); 
-        
+        try {
+            console.log("ADDING CFG");    
+            console.log(cfg)
+            this.layoutbase.addxtype(  cfg ); 
+        } catch (e) {
+            console.log("GOT ERROR?");    
+            console.log(e);
+            console.log(typeof(e));
+            
+            console.log(this.dump(e));
+        }
         
         
     },
   
     
-    munge :function (cfg)
+    munge :function (cfg, isListener)
     {
         var xitems = false;
         //cfg.cls = cfg.cls || '';
@@ -141,6 +161,7 @@ Builder  = {
         if (!cfg.id) {
             this.dump(cfg);
         }
+        
         //console.log(cfg.xtype + ': ' + cfg.id);
         
         if (cfg.items) {
@@ -155,36 +176,47 @@ Builder  = {
         
         for(var p in cfg){
             // key is not string?!?!?!!?
+          
             if (typeof(p) != 'string') {
                 continue;
             }
             
             if (typeof(cfg[p]) == 'object') { // listeners!!!
-                this.munge(cfg[p]);
+                this.munge(cfg[p], p == 'listeners');
                 continue;
             }
             // SPECIAL - PIPE
-            if (p.charAt(0) == '|') {
+            if (p.charAt(0) == '|' || isListener) {
                 
                 if (!cfg[p].length) {
                     delete cfg[p];
                     continue;
                 }
+                var pp = p.charAt(0) == '|'  ? p.substring(1) : p;
                 try {
+                    
+                    
                     var _tmp = false;
                     
-                    var _this = this.renderObj; /// fake '_this' object..
+                    /** eval:var:MOUDULE **/
                     /** eval:var:_this **/
                     /** eval:var:_tmp **/
                     // stupid IE can not return objects evaluated..
+                   // console.log('_tmp =(' + cfg[p] + ')');
                     eval('_tmp =(' + cfg[p] + ')');
-                    cfg[p.substr(1)] = _tmp;
+                    cfg[pp] = _tmp;
+                    
                     //if (typeof(_tmp) == 'undefined') {
                     //    alert(cfg[p]);
                    // }
                    
-                } catch(e) {  console.log('Error evaluating: '  + cfg[p] + "\n" + e.toString()); };
-                delete cfg[p];
+                } catch(e) {  
+                    console.log('Error evaluating: '  + cfg[p] + "\r\n" + JSON.stringify(e)); 
+                };
+                if (pp != p) {
+                    delete cfg[p];
+                }
+                
                     
                 
                 continue;
@@ -198,8 +230,27 @@ Builder  = {
               
         }
         
+        if (cfg.xtype && cfg.xtype.match(/^Roo\./) && !cfg.xns) {
+            // xtype contains full path..
+            var bits = cfg.xtype.split('.');
+            bits.shift(); // remove roo..
+            cfg.xtype = bits.pop(); // get the last bit..
+            cfg.xns = Roo;
+            while (bits.length) {
+                cfg.xns = cfg.xns[bits.shift()]; 
+            }
+             
+        }
+        if (cfg.xtype) {
+            if (!cfg.xns || typeof(cfg.xns[cfg.xtype]) == 'undefined') {
+                throw "Invalid Xtype " + cfg.xtype + ' on ' + cfg.xtreepath;
+            }
+        }
+        if (!isListener) {
+            cfg.listeners = cfg.listeners || {};
+        }
         // we can overlay some event handlers here..
-        cfg.listeners = cfg.listeners || {};
+        
        
         //console.log('xtype'  + xtype)
         switch(xtype) {
@@ -218,6 +269,7 @@ Builder  = {
         
         // now for all the children.. (items)
         if (xitems === false) {
+            
             return;
         }
         cfg.items = [];
@@ -227,13 +279,13 @@ Builder  = {
             
             var xi = xitems[i];
             if (typeof(xi['*prop']) != 'undefined') {
-                console.log('adding prop:' + xi['*prop']);
+                //console.log('adding prop:' + xi['*prop']);
                 
                 var pr = xi['*prop'];
                 this.munge(xi);
                 // if prop is an array - then it's items are really the value..
                 if (pr.match(/\[\]$/)) {
-                    console.log('adding array?:' + pr);
+                    //console.log('adding array?:' + pr);
                     pr = pr.replace(/\[\]$/, '');
                     cfg[pr] = cfg[pr]  || [];
                     cfg[pr].push(xi);
@@ -244,7 +296,7 @@ Builder  = {
                 if (xi.xtype && xi.xtype  == 'Array') {
                     cfg[pr] = xi.items;
                 } else {
-                    console.log('setting property:' + pr);
+                    //console.log('setting property:' + pr);
                     cfg[pr] = xi;
                 }
                 
@@ -258,7 +310,7 @@ Builder  = {
         if (cfg.items.length == 0) {
             delete cfg.items;
         }
-        
+        console.log(cfg);
         
         
     },
@@ -325,7 +377,7 @@ Builder  = {
         }
         // needs fixing..
         if (ftg.dom.className.match(/[0-9]+/)) {
-            console.log(ftg.dom.className);
+            //console.log(ftg.dom.className);
             var cmat = ftg.dom.className.match(/x-grid-hd-builder-(form-gen-[0-9:]+)/);
             if (cmat) {
                 this[method]( cmat[1] );