Builder/Provider/ProjectManager.js
[app.Builder.js] / Builder / Provider / ProjectManager.js
index 8b37489..d4f446f 100755 (executable)
@@ -7,7 +7,7 @@ console = imports.console;
 XObject = imports.XObject.XObject;
  
 Observable = imports.Observable.Observable;
-
+File = imports['../../File.js'].File;
 /**
  * 
  * /home/alan/.BuilderConfig/*
@@ -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.
             }
@@ -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;
+            
+            
+        });
+   
         
+       
         
         
         
@@ -149,6 +147,27 @@ ProjectManager =  new Observable({
         
         
     },
+    
+    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;
         this.projects.forEach(function(p) {