resources/Editors/Editor.Roo.grid.Grid.bjs
[app.Builder.js] / src / Project / Project.vala
index 3972c81..b8b3bd8 100644 (file)
@@ -21,7 +21,7 @@ namespace Project {
 
        // static array of all projects.
        public Gee.HashMap<string,Project>  projects;
-
+       
        
        public bool  projects_loaded = false;
 
@@ -40,6 +40,9 @@ namespace Project {
                public Gee.HashMap<string,JsRender.JsRender> files ;
                //tree : false,
                public  string xtype;
+               
+               public Json.Object json_project_data;
+               public Palete.RooDatabase roo_database;
                 
                bool is_scanned; 
           
@@ -47,7 +50,8 @@ namespace Project {
                public Project (string path) {
                    
                        this.name = GLib.Path.get_basename(path); // default..
-
+                       this.json_project_data = new Json.Object();
+                       
                        this.is_scanned = false;
                        this.paths = new Gee.HashMap<string,string>();
                        this.files = new Gee.HashMap<string,JsRender.JsRender>();
@@ -56,12 +60,17 @@ namespace Project {
                        if (path.length > 0) {
                                this.paths.set(path, "dir");
                        }
+                       // dummy roo database...
+                       this.initRooDatabase();
                        
                    
                    
                }
-
-        
+               public void  initRooDatabase()
+               {
+                        
+                       this.roo_database = new Palete.RooDatabase.from_project(this);
+               }
         
         
                
@@ -131,7 +140,7 @@ namespace Project {
                                return;
                        }
                        
-                       var obj = node.get_object ();
+                       var obj = node.get_object ();
                        var xtype =  obj.get_string_member("xtype");
 
 
@@ -148,6 +157,8 @@ namespace Project {
                        
                        var proj = factory(xtype, fpath);
 
+                       proj.json_project_data  = obj; // store the original object...
+                       
                        proj.fn =  Path.get_basename(jsonfile).split(".")[0];
 
                        // might not exist?
@@ -170,7 +181,13 @@ namespace Project {
                        paths.foreach_member((sobj, key, val) => {
                                proj.paths.set(key, "dir");
                        });
+                       proj.initRooDatabase();
+                       
                        projects.set(proj.id,proj);
+                       
+                       
+                       
+                       
                }
                
                
@@ -236,60 +253,41 @@ namespace Project {
                public string toJSON(bool show_all)
                {
                    
-                       var builder = new Json.Builder ();
-
-                       builder.begin_object ();
-
-                       builder.set_member_name ("name");
-                       builder.add_string_value (this.name);
-
-
-                       builder.set_member_name ("fn");
-                       builder.add_string_value (this.fn);
-
-                       builder.set_member_name ("xtype");
-                       builder.add_string_value (this.xtype);
-
-                       builder.set_member_name ("runhtml");
-                       builder.add_string_value (this.runhtml);
-
-
-                       builder.set_member_name ("rootURL");
-                       builder.add_string_value (this.rootURL);
                        
-                       builder.set_member_name ("base_template");
-                       builder.add_string_value (this.base_template);                  
-                       // file ??? try/false?
-                       builder.set_member_name ("paths");
-
-
-                       builder.begin_object ();
+                       this.json_project_data.set_string_member("name", this.name);
+                       this.json_project_data.set_string_member("fn", this.fn);
+                       this.json_project_data.set_string_member("xtype", this.xtype);
+                       this.json_project_data.set_string_member("runhtml", this.runhtml);
+                       this.json_project_data.set_string_member("rootURL", this.rootURL);
+                       this.json_project_data.set_string_member("base_template", this.base_template);
+                       this.json_project_data.set_string_member("rootURL", this.rootURL);
+                       var paths = new Json.Object(); 
 
 
                        var iter = this.paths.map_iterator();
                        while (iter.next()) {
-                               builder.set_member_name (iter.get_key());
-                               builder.add_string_value("path");
+                               paths.set_string_member(iter.get_key(), "path");
                        }
-                       builder.end_object ();
+                       this.json_project_data.set_object_member("paths", paths);
+
                        
                        if (show_all) {
-                               builder.set_member_name ("files");
-                               builder.begin_array ();
+                               var files = new Json.Array();
+                               
+                               
                                var fiter = this.files.map_iterator();
                                while (fiter.next()) {
-                                   builder.add_string_value (fiter.get_key());
+                                   files.add_string_element (fiter.get_key());
                                }
+                               this.json_project_data.set_array_member("files", files);
                                
-                               
-                               builder.end_array ();
                        }
 
                
-                       builder.end_object ();
-
                        var  generator = new Json.Generator ();
-                       var  root = builder.get_root ();
+                       var  root = new Json.Node(Json.NodeType.OBJECT);
+                       root.init_object(this.json_project_data);
                        generator.set_root (root);
                        if (show_all) {
                                generator.pretty = true;
@@ -532,7 +530,20 @@ namespace Project {
                    }
                    
                }
+               // wrapper around the javascript data...
+               public string get_string_member(string key) {
+                       
+                       if (!this.json_project_data.has_member(key)) {
+                               return "";
+                       }
+                       var  ret = this.json_project_data.get_string_member(key);
+                       if (ret == null) {
+                               return "";
+                       }
+                       return ret;
+                       
+               }
                  
        }
 }
\ No newline at end of file