7 public class Introspect.El : Object
21 public class Roo : Palete {
34 Gee.HashMap<string,GirObject> propsFromJSONArray(string type, Json.Array ar)
37 var ret = new Gee.HashMap<string,GirObject>();
39 for (var i =0 ; i < ar.get_length(); i++) {
40 var o = ar.get_object_element(i);
41 var name = o.get_string_member("name");
42 var prop = new GirObject(type, name );
44 prop.type = o.get_string_member("type");
45 prop.doctxt = o.get_string_member("desc");
46 prop.propertyof = o.has_member("memberOf") ? o.get_string_member("memberOf") : "";
47 prop.sig = o.has_member("sig") ? o.get_string_member("sig") : "";
48 if (o.has_member("optvals")) {
49 var ar = o.get_array_member("desc");
51 for (var i = 0; i < ar.get_length(); i++) {
52 prop.optvalues.add(ar.get_string_element(i));
59 //print(type + ":" + name +"\n");
65 public override void load () {
67 if (this.classes != null) {
70 this.loadUsageFile(BuilderApplication.configDirectory() + "/resources/RooUsage.txt");
71 this.classes = new Gee.HashMap<string,GirObject>();
74 var pa = new Json.Parser();
75 pa.load_from_file(BuilderApplication.configDirectory() + "/resources/roodata.json");
76 var node = pa.get_root();
78 var clist = node.get_object().get_object_member("data");
79 clist.foreach_member((o , key, value) => {
80 //print("cls:" + key+"\n");
82 var cls = new GirObject("class", key);
83 cls.props = this.propsFromJSONArray("prop", value.get_object().get_array_member("props"));
84 cls.signals = this.propsFromJSONArray("signal", value.get_object().get_array_member("events"));
86 this.classes.set(key, cls);
95 public string doc(string what) {
97 /*var ns = what.split(".")[0];
102 var gir = Gir.factory(ns);
103 return gir.doc(what);
106 //return typeof(this.comments[ns][what]) == 'undefined' ? '' : this.comments[ns][what];
109 // does not handle implements...
110 public override GirObject? getClass(string ename)
113 return this.classes.get(ename);
117 public override Gee.HashMap<string,GirObject> getPropertiesFor(string ename, string type)
119 //print("Loading for " + ename);
123 // if (typeof(this.proplist[ename]) != 'undefined') {
124 //print("using cache");
125 // return this.proplist[ename][type];
127 // use introspection to get lists..
130 var cls = this.classes.get(ename);
131 var ret = new Gee.HashMap<string,GirObject>();
133 print("could not find class: %s\n", ename);
135 //throw new Error.INVALID_VALUE( "Could not find class: " + ename);
140 //cls.parseSignals(); // ?? needed for add handler..
141 //cls.parseMethods(); // ?? needed for ??..
142 //cls.parseConstructors(); // ?? needed for ??..
144 //cls.overlayParent();
158 throw new Error.INVALID_VALUE( "getPropertiesFor called with: " + type);
159 //var ret = new Gee.HashMap<string,GirObject>();
165 //cls.overlayInterfaces(gir);
170 public string[] getInheritsFor(string ename)
173 var es = ename.split(".");
174 var gir = Gir.factory(es[0]);
176 var cls = gir.classes.get(es[1]);
180 return cls.inheritsToStringArray();
186 public override void fillPack(JsRender.Node node,JsRender.Node parent)
192 * Pulldown options for type
194 public override bool typeOptions(string key, out string[] opts)
197 if (key.up() == "BOOL" || key.up() == "BOOLEAN") {
198 opts = { "true", "false" };