src/Builder4/WindowRooView.bjs
[app.Builder.js] / src / Project / Project.vala
index 5efdb31..d5b0f5b 100644 (file)
@@ -106,7 +106,7 @@ namespace Project {
                                        factoryFromFile(dirname + "/" + fn);
                                }       
                        } catch(Error e) {
-                               print("oops - something went wrong scanning the projects\n");
+                               GLib.warning("oops - something went wrong scanning the projects\n");
                        }
                        
 
@@ -139,12 +139,59 @@ namespace Project {
                
                }
                
+               public static string listAllToString()
+               {
+                       var all = new Gee.ArrayList<Project>();
+
+                       var fiter = projects.map_iterator();
+                       
+                       while(fiter.next()) {
+                               all.add(fiter.get_value());
+                       }
+                       
+                       all.sort((fa,fb) => {
+                               return ((Project)fa).name.collate(((Project)fb).name);
+
+                       });
+
+                       var iter = all.list_iterator();
+                       var ret = "ID\tName\tDirectory\n";
+                       while (iter.next()) {
+                               ret += "%s\t%s\t%s\n".printf(
+                                               iter.get().fn,
+                                               iter.get().name,
+                                               iter.get().firstPath()
+                                               );
+                        
+                               
+                       }
+                       
+                       return ret;
+               
+               }
+               
+               
+               
+               public static Project getProjectByHash(string fn)
+               {
+                       
+                       var iter = projects.map_iterator();
+                       while (iter.next()) {
+                               if (iter.get_value().fn == fn) {
+                                       return iter.get_value();
+                               }
+                               
+                       }
+                       
+                       return null;
+               
+               }
                
                // load project data from project file.
                public static void   factoryFromFile(string jsonfile)
                {
                         
-                       print("parse %s\n", jsonfile);
+                       GLib.debug("parse %s", jsonfile);
 
                        var pa = new Json.Parser();
                        pa.load_from_file(jsonfile);
@@ -152,7 +199,7 @@ namespace Project {
 
                        
                        if (node == null || node.get_node_type () != Json.NodeType.OBJECT) {
-                               print("SKIP " + jsonfile + " - invalid format?\n");
+                               GLib.debug("SKIP " + jsonfile + " - invalid format?");
                                return;
                        }
                        
@@ -199,6 +246,8 @@ namespace Project {
                        });
                        proj.initRooDatabase();
                        
+                       GLib.debug("Add Project %s", proj.id);
+                       
                        projects.set(proj.id,proj);
                        
                        
@@ -260,8 +309,8 @@ namespace Project {
                                        this.fn = GLib.Checksum.compute_for_string(GLib.ChecksumType.MD5, str, str.length);
                        }
 
-                               var dirname = GLib.Environment.get_home_dir() + "/.Builder";
-                               var  s =  this.toJSON(false);
+                       var dirname = GLib.Environment.get_home_dir() + "/.Builder";
+                       var  s =  this.toJSON(false);
                        FileUtils.set_contents(dirname + "/" + this.fn + ".json", s, s.length);  
                        
                        
@@ -359,7 +408,7 @@ namespace Project {
                        while(fiter.next()) {
                                files.add(fiter.get_value());
                        }
-                               files.sort((fa,fb) => {
+                       files.sort((fa,fb) => {
                                return ((JsRender.JsRender)fa).name.collate(((JsRender.JsRender)fb).name);
 
                        });
@@ -368,6 +417,29 @@ namespace Project {
                }
                
         
+        
+               public string listAllFilesToString()
+               {
+                       this.scanDirs();
+                       var iter = this.sortedFiles().list_iterator();
+                       var ret = "ID\tName\tDirectory\n";
+                       while (iter.next()) {
+                               ret += "%s\n".printf(
+                                                
+                                               iter.get().name
+                                                
+                                               );
+                        
+                               
+                       }
+                       
+                       return ret;
+               
+               }
+               
+        
+        
+        
                public JsRender.JsRender? getByName(string name)
                {
                        
@@ -377,13 +449,29 @@ namespace Project {
                                var f = fiter.get_value();
                                
                                
-                               print ("Project.getByName: %s ?= %s\n" ,f.name , name);
+                               GLib.debug ("Project.getByName: %s ?= %s" ,f.name , name);
                                if (f.name == name) {
                                        return f;
                                }
                        };
                        return null;
                }
+               public JsRender.JsRender? getByPath(string path)
+               {
+                       
+                       var fiter = files.map_iterator();
+                       while(fiter.next()) {
+                        
+                               var f = fiter.get_value();
+                               
+                               
+                               //GLib.debug ("Project.getByName: %s ?= %s" ,f.name , name);
+                               if (f.path == path) {
+                                       return f;
+                               }
+                       };
+                       return null;
+               }
                
                public JsRender.JsRender? getById(string id)
                {
@@ -539,9 +627,9 @@ namespace Project {
                                         
                                }
                        } catch (Error e) {
-                               print("Project::scanDirs failed : " + e.message + "\n");
+                               GLib.warning("Project::scanDirs failed : " + e.message + "\n");
                        } catch (GLib.Error e) {
-                               print("Project::scanDirs failed : " + e.message + "\n");
+                               GLib.warning("Project::scanDirs failed : " + e.message + "\n");
                        }
                        for (var i = 0; i < subs.length(); i++) {