X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=Builder%2FProvider%2FProjectManager.js;h=d4f446f7ba9277ac0c1e9c40b5920707628b3f5e;hb=7c0e7f2665021ee4593bee6aa43366d16cfe7b26;hp=b121288f5b4bd095bbddbc2e94530cb32bcd2cb6;hpb=c24577db7e319737eed60251fa9fd42e6b615e48;p=app.Builder.js diff --git a/Builder/Provider/ProjectManager.js b/Builder/Provider/ProjectManager.js index b121288f5..d4f446f7b 100755 --- a/Builder/Provider/ProjectManager.js +++ b/Builder/Provider/ProjectManager.js @@ -7,7 +7,7 @@ console = imports.console; XObject = imports.XObject.XObject; Observable = imports.Observable.Observable; - +File = imports['../../File.js'].File; /** * * /home/alan/.BuilderConfig/* @@ -27,9 +27,9 @@ ProjectManager = new Observable({ this.saveConfig(); } - }, - + }, + palete : { }, projects : [], filename : false, @@ -43,28 +43,16 @@ ProjectManager = new Observable({ dir.make_directory(); return; } - - - + this.projects = []; - var gdir = GLib.dir_open(this.dirname,0); - while (true) { - - var fn = GLib.dir_read_name(gdir); - if (!fn) { - GLib.dir_close(gdir); - return; - } + var files = File.list(this.dirname); + for (var i =0 ; i < files.length;i++) { + var fn = files[i]; + if (!fn.match(/.json$/)) { continue; } - var file = Gio.file_new_for_path(this.dirname + '/' + fn); - Seed.print(this.dirname + '/' + fn); - var stream = file.read(); - var dstream = new Gio.DataInputStream.c_new(stream); - Seed.print(dstream); - - str = dstream.read_until(""); + var str = File.read(this.dirname + '/' + fn); if (!str || !str.length) { continue; // empty file. } @@ -74,8 +62,8 @@ ProjectManager = new Observable({ Seed.print(ar.xtype); // construct... - - this.projects.push( new Builder.Provider.Project[ar.xtype](ar)); + var cls = imports.Builder.Provider.Project[ar.xtype][ar.xtype]; + this.projects.push( new cls(ar)); @@ -84,7 +72,17 @@ ProjectManager = new Observable({ } + this.projects.sort(function(a,b) { + if (a.getName() == b.getName()) { + return 0; + } + return a.getName() > b.getName() ? 1 : -1; + + + }); + + @@ -96,7 +94,8 @@ ProjectManager = new Observable({ saveConfig : function() { - Roo.each(this.projects, function(p) { + var _this = this; + this.projects.forEach( function(p) { if (!p.fn) { // make the filename.. @@ -110,15 +109,16 @@ ProjectManager = new Observable({ } - var file = Gio.file_new_for_path(this.dirname + '/' + p.fn + '.json'); + var file = Gio.file_new_for_path(_this.dirname + '/' + p.fn + '.json'); var stream = file.replace(null,false,0); + //console.dump(p); var s = p.toJSON(); stream.write(s, s.length); stream.close(); - }, this); + }); @@ -128,7 +128,7 @@ ProjectManager = new Observable({ Seed.print(JSON.stringify(proj)); var found = false; - Roo.each(this.projects , function(p) { + this.projects.forEach( function(p) { if (proj == p) { found = true; return true; @@ -139,16 +139,38 @@ ProjectManager = new Observable({ return proj; return; } - var pr = new Builder.Provider.Project[proj.xtype](proj); + var cls = imports.Builder.Provider.Project[proj.xtype][proj.xtype]; + var pr = new cls(proj); this.projects.push(pr ); this.fireEvent('changed', this); return pr; }, + + deleteProject : function (fn) + { + var newplist = []; + var _this = this; + this.projects.forEach(function(p) { + if (p.fn != fn) { + newplist.push(p); + return; + } + var file = _this.dirname + '/' + p.fn + '.json'; + if (File.exists(file)) { + File.remove(file); + } + + }); + this.projects = newplist; + this.fireEvent('changed', this); + }, + + getByFn : function (fn) { var ret = false; - Roo.each(this.projects, function(p) { + this.projects.forEach(function(p) { if (p.fn == fn) { ret = p; return true; @@ -156,6 +178,17 @@ ProjectManager = new Observable({ }); return ret; + }, + getPalete: function(type) { + if (typeof(ProjectManager.palete[type]) != 'undefined') { + print ("ALREADY GOT " + type); + return ProjectManager.palete[type]; + } + var cls = imports.Builder.Provider.Palete[type][type]; + + ProjectManager.palete[type] = new cls(); + print (typeof(ProjectManager.palete[type])); + return ProjectManager.palete[type]; }