X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=tools%2Fbuild_gtk_tree.js;h=526fa59f49f18b0797844aace0fbbd33854e16f8;hb=e06c1cf8c9a2c679eef536271e5478c3fa6406c8;hp=736570ff73c451ee0cd97ae6445417359d1df23e;hpb=f0be15ddbdda0fda3843e0fbc57ea63799e6884f;p=app.Builder.js diff --git a/tools/build_gtk_tree.js b/tools/build_gtk_tree.js index 736570ff7..526fa59f4 100644 --- a/tools/build_gtk_tree.js +++ b/tools/build_gtk_tree.js @@ -48,7 +48,7 @@ function BuildLists () { - var ns_list = [ 'Gtk' , 'Gdk', 'Pango', 'GtkSource', 'Webkit', 'Vte'] ; //NameSpace.namespaces(); + var ns_list = [ 'Gtk' , 'Gdk', 'Pango', 'GtkSource', 'WebKit', 'Vte'] ; //NameSpace.namespaces(); ns_list = ns_list.sort(); // let's try and load them, so we find out early what will fail. @@ -280,17 +280,58 @@ right: */ // these should really be based on heirachy.. usage = {}; + tops = {} usage['*top'] = implementations['Gtk.Container']; + usage['*top'].forEach(function(ch) { + tops[ch] = [ '*top' ]; + }); for(var cls in methods) { for (var par in methods[cls].can_be_added_to_as) { if (typeof(usage[par]) == 'undefined') { usage[par] = []; } usage[par].pushUnique(cls); + if (typeof(tops[cls]) == 'undefined') { + tops[cls] = []; + } + tops[cls].pushUnique(par); + } + } + function canTop(cls, rec) { + + rec = rec || 0; + print('CANTOP: ' + cls + ' =' + rec); + if (rec > 5) { + print('SKIP : ' + cls); + } + if (typeof(tops[cls]) == 'undefined') { + return false; + } + for (var i =0; i < tops[cls].length; i++) { + if (tops[cls][i] == '*top') { + return true; + } + if (cls == tops[cls][i]) { + continue; + } + if (canTop(cls, rec+1)) { + return true; + } } + return false; + + } + var nusage = {}; + for(var par in usage) { + // see if the parent can be added to something. + if (!canTop(par)) { + continue; + } + nusage[par] = usage[par]; + } - print(JSON.stringify(usage,null,4)); + print(JSON.stringify(nusage,null,4));