resources/RooUsage.txt
[app.Builder.js] / old-javascript / Palete / Roo.vala
1 namespace Palete {
2
3         
4 /*      
5         
6         
7     public class Introspect.El : Object
8     {
9         public enum eltype { 
10             NS,
11             CLASS,
12             METHOD,
13             PROP
14         }
15                 
16             
17         public eltype type;
18     }
19
20 */
21     public class Roo : Palete {
22                 
23                 
24         public Roo()
25         {
26
27
28             
29             base();
30             this.name = "Roo";
31                           
32         }
33
34         Gee.HashMap<string,GirObject> propsFromJSONArray(string type, Json.Array ar)
35         {
36
37                 var ret = new Gee.HashMap<string,GirObject>();
38                 
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 );  
43                      
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                         //print(type + ":" + name +"\n");
49                         ret.set(name,prop);
50                 }
51                 return ret;
52         }
53          Gee.HashMap<string,GirObject> classes; 
54         public override void  load () {
55
56                 if (this.classes != null) {
57                         return;
58                 }
59                 this.loadUsageFile(Builder4.Application.configDirectory() + "/resources/RooUsage.txt");
60                 this.classes = new Gee.HashMap<string,GirObject>();
61
62             
63                 var pa = new Json.Parser();
64                 pa.load_from_file(Builder4.Application.configDirectory() + "/resources/roodata.json");
65                 var node = pa.get_root();
66
67                 var clist =  node.get_object().get_object_member("data");
68                 clist.foreach_member((o , key, value) => {
69                         //print("cls:" + key+"\n");
70                  
71                         var cls = new GirObject("class", key);  
72                         cls.props = this.propsFromJSONArray("prop", value.get_object().get_array_member("props"));
73                         cls.signals = this.propsFromJSONArray("signal", value.get_object().get_array_member("events"));
74                         this.classes.set(key, cls);
75                 });
76                         
77                 
78                 
79              
80         }
81           
82         
83         public string doc(string what) {
84                 return "";
85                 /*var ns = what.split(".")[0];
86
87
88                 
89                 
90             var gir =  Gir.factory(ns);
91                         return   gir.doc(what);
92                         */
93                         
94             //return typeof(this.comments[ns][what]) == 'undefined' ?  '' : this.comments[ns][what];
95         }
96
97                 // does not handle implements...
98         public override GirObject? getClass(string ename)
99         {
100                 this.load();
101                 return this.classes.get(ename);
102                 
103         }
104             
105         public override Gee.HashMap<string,GirObject> getPropertiesFor(string ename, string type)
106         {
107                     //print("Loading for " + ename);
108                     
109
110                 this.load();
111                                 // if (typeof(this.proplist[ename]) != 'undefined') {
112                         //print("using cache");
113                      //   return this.proplist[ename][type];
114                     //}
115                     // use introspection to get lists..
116          
117                 
118                 var cls = this.classes.get(ename);
119                 var ret = new Gee.HashMap<string,GirObject>();
120                 if (cls == null) {
121                         print("could not find class: %s\n", ename);
122                         return ret;
123                         //throw new Error.INVALID_VALUE( "Could not find class: " + ename);
124         
125                 }
126
127                 //cls.parseProps();
128                 //cls.parseSignals(); // ?? needed for add handler..
129                 //cls.parseMethods(); // ?? needed for ??..
130                 //cls.parseConstructors(); // ?? needed for ??..
131
132                 //cls.overlayParent();
133
134                 switch  (type) {
135                         
136                         
137                         case "props":
138                                 return cls.props;
139                         case "signals":
140                                 return cls.signals;
141                         case "methods":
142                                 return ret;
143                         case "ctors":
144                                 return ret;
145                         default:
146                                 throw new Error.INVALID_VALUE( "getPropertiesFor called with: " + type);
147                                 //var ret = new Gee.HashMap<string,GirObject>();
148                                 //return ret;
149                 
150                 }
151                 
152         
153                 //cls.overlayInterfaces(gir);
154
155
156              
157         }
158         public string[] getInheritsFor(string ename)
159         {
160                 string[] ret = {};
161                 var es = ename.split(".");
162                 var gir = Gir.factory(es[0]);
163                 
164                 var cls = gir.classes.get(es[1]);
165                 if (cls == null) {
166                         return ret;
167                 }
168                 return cls.inheritsToStringArray();
169                 
170
171         }
172
173
174         public override void fillPack(JsRender.Node node,JsRender.Node parent)
175         {   
176
177                  return;
178         }
179  
180         
181     }
182 }
183