Builder3/Window.js
[app.Builder.js] / tools / build_gtk_tree.js
index ec30efd..1250e7f 100644 (file)
@@ -1,5 +1,16 @@
 //<script type="text/javascript">
 
+
+/**
+ * usage:
+ * 
+ * this.data = new BuildLists();
+ * 
+ * 
+ * 
+ * 
+ * 
+ */
 // see if we can build the insertion tree for gtk - using introspection
 
 // it should build the tree of feasible insertions, then we will have to manually prune it..
@@ -25,60 +36,87 @@ File        = imports.File.File;
 NameSpace   = imports.Introspect.NameSpace.NameSpace; 
 Link        = imports.Introspect.Link.Link; 
 
-var ns_list = [ 'Gtk' ] ; //NameSpace.namespaces();
+
+
+function BuildLists () {
  
-ns_list = ns_list.sort();
-// let's try and load them, so we find out early what will fail.
-print("loading library to make sure it works.");
-
-var classes = {};
-
-ns_list.forEach(function(ns_name) {   
-    var  core = imports.gi[ns_name];
-    var ns = NameSpace.ns(ns_name); // fetch all the elements in namespace...
-    ns['objects'].forEach( function(n) {
-        var odata = NameSpace.factory('Class', ns_name, n);
-        classes[odata.alias] = odata;
-        
-    });
-    ns['interfaces'].forEach( function(n) {
-         var odata =NameSpace.factory('Interface', ns_name, n);
-        classes[odata.alias] = odata;
+
+    var ns_list = [ 'Gtk' ] ; //NameSpace.namespaces();
+     
+    ns_list = ns_list.sort();
+    // let's try and load them, so we find out early what will fail.
+    print("loading library to make sure it works.");
+
+    var classes = {};
+
+    ns_list.forEach(function(ns_name) {   
+        var  core = imports.gi[ns_name];
+        var ns = NameSpace.ns(ns_name); // fetch all the elements in namespace...
+        ns['objects'].forEach( function(n) {
+            var odata = NameSpace.factory('Class', ns_name, n);
+            classes[odata.alias] = odata;
+            
+        });
+        ns['interfaces'].forEach( function(n) {
+             var odata =NameSpace.factory('Interface', ns_name, n);
+            classes[odata.alias] = odata;
+        });
     });
-});
-
-
-print("Looping throught namespaces");
-var ns_idx = [];
-var implementations = {};
-var methods = {}
-   
-for (cls in classes) {
-    var odata = classes[cls];
-    methods[cls] = {}
-       
-    implementations[odata.alias] = odata.titleType == 'Class' ? odata.childClasses :  odata.implementedBy;  
-    print(JSON.stringify(odata.methods,null,4));
-    odata.methods.forEach(function(m) {
-       
-        m.params.forEach(function(p) {
-             
-            if (!p.type || typeof(classes[p.type]) == 'undefined') {
-                return;
-            }
-            if (typeof(methods[cls][p.type]) == 'undefined') {
-                methods[cls][p.type] = [];
-            }
-            methods[cls][p.type].push(m.name);
+
+
+    print("Looping throught namespaces");
+    var ns_idx = [];
+    var implementations = {};
+    var methods = {};
+    var allmethods = [];  
+    
+    for (cls in classes) {
+        var odata = classes[cls];
+        methods[cls] = {}
+           
+        implementations[odata.alias] = odata.titleType == 'Class' ? odata.childClasses :  odata.implementedBy;  
+        //print(JSON.stringify(odata.methods,null,4));
+        odata.methods.forEach(function(m) {
+           
+            m.params.forEach(function(p) {
+                 
+                if (!p.type || typeof(classes[p.type]) == 'undefined') {
+                    return;
+                }
+                // now add it..
+                
+                var full_method_name = p.memberOf + '.' + p.type;
+                if (allmethods.indexOf(full_method_name) < 0) {
+                    allmethods.push(full_method_name);
+                }
+                
+                if (typeof(methods[cls][full_method_name]) == 'undefined') {
+                    methods[cls][full_method_name] = [];
+                }
+                if (methods[cls][full_method_name].indexOf(m.name) > -1) {
+                    return;
+                }
+                methods[cls][full_method_name].push(m.name);
+                
+            });
             
-        }
+        });
+        //for(method in odata.methods) {
+        //    print(method.name);
+        //}
+        
         
     }
-    //for(method in odata.methods) {
-    //    print(method.name);
-    //}
-    
+    this.methods = methods;
+    this.allmethods = methods;
+    this.implementations = implementations;
+    //print(JSON.stringify(methods,null,4));
+    //print(JSON.stringify(implementations,null,4));
     
 }
-print(JSON.stringify(implementations,null,4));
\ No newline at end of file
+
+
+// we now have a list of classes / methods that can be used..
+// we now need a ui to flag stuff as "don't bother with"
+
+