// static array of all projects.
public Gee.HashMap<string,Project> projects;
-
+
public bool projects_loaded = false;
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;
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>();
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);
+ }
return;
}
- var obj = node.get_object ();
+ var obj = node.get_object ();
var xtype = obj.get_string_member("xtype");
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?
paths.foreach_member((sobj, key, val) => {
proj.paths.set(key, "dir");
});
+ proj.initRooDatabase();
+
projects.set(proj.id,proj);
+
+
+
+
}
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;
}
}
+ // 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
+