Builder/Provider/ProjectManager.js
[app.Builder.js] / Builder / Provider / ProjectManager.js
index 90e8282..d4f446f 100755 (executable)
@@ -6,8 +6,8 @@ GLib = imports.gi.GLib;
 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];
     }