//----------------------- our roo verison
Base = imports.Builder.Provider.File.Base.Base;
Gio = imports.gi.Gio;
-
+File = imports.File.File;
-JSDOC = imports['JSDOC.js'];
+//JSDOC = imports['JSDOC.js'];
//----------------------- our roo verison
-id = 0;
+var rid = 0;
Roo = XObject.define(
function(cfg) {
}
- this.items = [];
+ this.items = false;
if (cfg.json) {
var jstr = JSON.parse(cfg.json);
this.items = [ jstr ];
// super?!?!
- this.id = 'roo-file-' + (id++);
+ this.id = 'roo-file-' + (rid++);
// various loader methods..
},
Base,
{
-
+
+ modOrder : '001', /// sequence id that this uses.
+ region : 'center',
+ parent : '',
+ title : '', // the title on displayed when loading.
+ disable : '', // use a function to that returns false to disable this..
+
setNSID : function(id)
{
},
+ getType: function() {
+ return 'Roo';
+ },
-
+
loadItems : function(cb)
{
console.log("load Items!");
- if (this.items == false) {
+ if (this.items !== false) {
return false;
}
var file = Gio.file_new_for_path(this.path);
var src = dstream.read_until("")
var cfg = JSON.parse(src);
- _this.items = [ {
- //'|module' : cfg.name,
- '*class' : cfg.name,
- '*parent' : cfg.parent,
- 'title' : cfg.title,
- items : cfg.items
- }
- ];
+ print("loaded data");
+ console.dump(cfg);
+
+ _this.name = cfg.name;
+ _this.parent = cfg.parent;
+ _this.title = cfg.title;
+ _this.items = cfg.items || [];
+
+ _this.fixItems(_this, false);
+
+
+
cb();
/*
var tstream = new JSDOC.TextStream(src);
},
-
-
-
- toSource: function()
+ /**
+ * old code had broken xtypes and used arrays differently,
+ * this code should try and clean it up..
+ *
+ *
+ */
+ fixItems : function(node, fixthis)
{
- // dump the file tree back out to a string.
-
- if (typeof(this.items[0]['|module']) != 'undefined') {
- return this.toSourceStdClass();
+ if (fixthis) {
+ // fix xtype.
+ var fn = this.guessName(node);
+ //print("guessname got " + fn);
+ if (fn) {
+ var bits = fn.split('.');
+ node.xtype = bits.pop();
+ node['|xns'] = bits.join('.');
+
+ }
+ // fix array???
+
+
}
-
- if (this.items[0].region) {
- return this.toSourceLayout();
+ if (!node.items || !node.items.length) {
+ return;
}
- return this.toSourceDialog();
+ var _this = this;
+ var aitems = [];
+ var nitems = [];
+ node.items.forEach(function(i) {
+
+
+
+ _this.fixItems(i, true);
+ if (i.xtype == 'Array') {
+ aitems.push(i);
+ return;
+ }
+ nitems.push(i);
+ });
+ node.items = nitems;
+ if (!aitems.length) {
+ return;
+ }
+ aitems.forEach(function(i) {
+ if (!i.items || !i.items.length) {
+ return;
+ }
+ var prop = i['*prop'] + '[]';
+ // colModel to cm?
+ i.items.forEach(function(c) {
+ c['*prop'] = prop;
+ node.items.push(c);
+ });
-
-
+
+ });
+
+
+ // array handling..
+
+
+
+
+ },
+
+ save : function()
+ {
+ Base.prototype.save.call(this);
+ // now write the js file..
+ var js = this.path.replace(/\.bjs$/, '.js');
+ File.write(js, this.toSource());
+
+
+
+ },
+ /**
+ * convert xtype for munged output..
+ *
+ */
+ mungeXtype : function(xtype, els)
+ {
+ var bits = xtype.split('.');
+ // assume it has lenght!
+
+ els.push("xtype: '"+ bits.pop()+"'");
+ els.push('xns: '+ bits.join('.'));
+ },
+
+ /**
+ * This needs to use some options on the project
+ * to determine how the file is output..
+ *
+ * At present we are hard coding it..
+ *
+ *
+ */
+ toSource: function()
+ {
+ // dump the file tree back out to a string.
+
+ // we have 2 types = dialogs and components
+ //
+ var top = this.guessName(this.items[0]);
+ if (top.match(/Dialog/)) {
+ return this.toSourceDialog();
+ }
+ return this.toSourceLayout();
+
+ /*
+ eventually support 'classes??'
+ return this.toSourceStdClass();
+ */
+
},
outputHeader : function()
return [
"//<script type=\"text/javascript\">",
"",
- "// Auto generated file - created by Builder Module - do not edit directly",
+ "// Auto generated file - created by app.Builder.js- do not edit directly (at present!)",
""
].join("\n");
// a standard dialog module.
toSourceDialog : function()
{
- var b = this.items[0];
- var o = this.mungePropObj(this.items[0]);
+
+ var o = this.mungeToString(this.items[0], false, ' ');
return [
this.outputHeader(),
- b['|module'] + " = {",
+ this.name + " = {",
"",
" dialog : false,",
" callback: false,",
" create : function()",
" {",
" var _this = this;",
- " this.dialog = Roo.factory(" + this.objectToJsString(o,3) + ");",
+ " this.dialog = Roo.factory(" + o + ");",
" }",
"};",
""
// a layout compoent
toSourceLayout : function()
{
- var b = this.items[0];
- var o = this.mungePropObj(this.items[0]);
- var disabled = typeof(b['|disabled']) == 'undefined' ? (b.disabled || false) : b['disabled'];
+ var o = this.mungeToString(this.items[0], false, ' ');
+
+ var modkey = this.modOrder + '-' + this.name.replace('/[^A-Z]+/ig', '-');
+
return [
this.outputHeader(),
"Pman.on('beforeload', function()",
"{",
" Pman.register({",
- " modKey : '" + (b.modkey || "000-unnumbered module") +"',",
- " module : " + b['|module'] + ",",
- " region : '" + (b.region || '') +"',",
- " parent : " + (b.parent || false) + ",",
- " name : \"" + (b.name || "unnamed module") + "\"",
- " disabled : " + disabled +" ",
+ " modKey : '" +modkey+"',",
+ " module : " + this.name + ",",
+ " region : '" + this.region +"',",
+ " parent : " + (this.parent || 'false') + ",",
+ " name : \"" + (this.title || "unnamed module") + "\"",
+ " disabled : " + (this.disabled || 'false') +" ",
" });",
"});",
"",
- b['|module'] + " = new Roo.util.Observable({",
+ this.name + " = new Roo.util.Observable({",
"",
" panel : false,",
" disabled : false,",
" var _this = this;", // standard avaialbe..
" this.parentLayout = parentLayout;",
"",
- " this.panel = parentLayout.addxtype(" + this.objectToJsString(o,3) + ");",
+ " this.panel = parentLayout.addxtype(" + o + ");",
" this.layout = this.panel.layout;",
"",
" }",
].join("\n");
- }
+ },
-
+ guessName : function(ar) // turns the object into full name.
+ {
+ // eg. xns: Roo, xtype: XXX -> Roo.xxx
+ if (!ar) {
+ return false;
+ }
+ var ret = [];
+ ret.push(typeof( ar['|xns'] ) == 'undefined' ? 'Roo' : ar['|xns'] );
+
+
+
+ if (typeof( ar['xtype'] ) == 'undefined' || !ar['xtype'].length) {
+ return false;
+ }
+ var xtype = ar['xtype'] + '';
+ if (xtype[0] == '*') { // prefixes????
+ xtype = xtype.substring(1);
+ }
+ if (xtype.match(/^Roo/)) {
+ // already starts with roo...
+ ret = [];
+ }
+ ret.push(xtype);
+ var str = ret.join('.');
+
+
+
+ var pm = imports.Builder.Provider.ProjectManager.ProjectManager;
+ return pm.getPalete('Roo').guessName(ret.join('.'));
+
+
+
+ },
/*
getTree : function( o ) {
}
*/
+ getHelpUrl : function(cls)
+ {
+ return 'http://www.akbkhome.com/roojs1/docs/symbols/' + cls + '.html';
+ }
});
\ No newline at end of file