X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=src%2FPalete%2FVapiParser.vala;h=b336e982fdf9c703b6864c32879b5c30b39aaed5;hb=4f900328f74ee49e176e17978599ac39a3d34b19;hp=cb91431d6045feab493db55812776fe22e187e93;hpb=950cb754d2efa9eac8b0fcee8f745fdb3d7c5f7d;p=app.Builder.js diff --git a/src/Palete/VapiParser.vala b/src/Palete/VapiParser.vala index cb91431d6..b336e982f 100644 --- a/src/Palete/VapiParser.vala +++ b/src/Palete/VapiParser.vala @@ -9,7 +9,7 @@ namespace Palete { public class VapiParser : Vala.CodeVisitor { - + Vala.CodeContext context; public VapiParser() { base(); @@ -27,14 +27,14 @@ namespace Palete { return; } - print("parsing namespace %s\n", element.name); + //print("parsing namespace %s\n", element.name); if (element.name == null) { element.accept_children(this); // catch sub namespaces.. return; } var g = new Gir(element.name); - cache.set(element.name, g); + Gir.cache.set(element.name, g); foreach(var c in element.get_classes()) { @@ -43,7 +43,9 @@ namespace Palete { foreach(var c in element.get_enums()) { this.add_enum(g, c); } - + foreach(var c in element.get_interfaces()) { + this.add_interface(g, c); + } element.accept_children(this); // catch sub namespaces.. @@ -75,6 +77,47 @@ namespace Palete { } + public void add_interface(GirObject parent, Vala.Interface cls) + { + + var c = new GirObject("Interface", parent.name + "." + cls.name); + parent.classes.set(cls.name, c); + c.ns = parent.name; + //c.parent = cls.base_class == null ? "" : cls.base_class.get_full_name() ; // extends... + c.gparent = parent; + + foreach(var p in cls.get_properties()) { + this.add_property(c, p); + } + // methods... + foreach(var p in cls.get_signals()) { + this.add_signal(c, p); + } + + foreach(var p in cls.get_methods()) { + // skip static methods.. + if (p.binding != Vala.MemberBinding.INSTANCE && + !(p is Vala.CreationMethod) + ) { + continue; + } + + this.add_method(c, p); + } + + //if (cls.base_class != null) { + // c.inherits.add(cls.base_class.get_full_name()); + //} + //foreach(var p in cls.get_base_types()) { + // if (p.data_type != null) { + // c.implements.add(p.data_type.get_full_name()); + // } + //} + + + + + } public void add_class(GirObject parent, Vala.Class cls) { @@ -161,12 +204,16 @@ namespace Palete { public void add_method(GirObject parent, Vala.Method met) { - var n = met.name == null ? parent.name : ""; + var n = met.name == null ? "" : met.name; var ty = "Method"; - if (met is Vala.CreationMethod && n == "") { - n = ".new"; + if (met is Vala.CreationMethod) { ty = "Ctor"; + if(n == "" || n == ".new") { + n = "new"; + } + } + //print("add_method : %s\n", n); var c = new GirObject(ty,n); c.gparent = parent; @@ -197,7 +244,7 @@ namespace Palete { foreach(var p in params) { - if (p.name == null) { + if (p.name == null && !p.ellipsis) { continue; } this.add_param(cc, p); @@ -207,12 +254,20 @@ namespace Palete { public void add_param(GirObject parent, Vala.Parameter pam) { - var c = new GirObject("Param",pam.name); + + var n = pam.name; + if (pam.ellipsis) { + n = "___"; + } + var c = new GirObject("Param",n); c.gparent = parent; c.ns = parent.ns; parent.params.add(c); - c.type = pam.variable_type.data_type == null ? "" : pam.variable_type.data_type.get_full_name(); - // this.checkParamOverride(c); - this is an old kludge for Gir files.. + + if (!pam.ellipsis) { + c.type = pam.variable_type.data_type == null ? "" : pam.variable_type.data_type.get_full_name(); + } + Gir.checkParamOverride(c); } @@ -271,25 +326,21 @@ namespace Palete { var ns_ref = new Vala.UsingDirective (new Vala.UnresolvedSymbol (null, "GLib", null)); context.root.add_using_directive (ns_ref); - - // default.. packages.. + context.add_external_package ("glib-2.0"); context.add_external_package ("gobject-2.0"); - context.add_external_package ("gdk-3.0"); - context.add_external_package ("atk"); - context.add_external_package ("gdk-x11-3.0"); - context.add_external_package ("x11"); - context.add_external_package ("gtk+-3.0"); - // user defined ones.. - //context.add_package ("Gtk"); - - //var vfile = new Vala.SourceFile (context, Vala.SourceFileType.PACKAGE, "/usr/share/vala-0.26/vapi/gtk+-3.0.vapi"); - //context.add_source_file (vfile); - - //context.add_external_package ("libvala-0.24"); - - + // core packages we are interested in for the builder.. + // some of these may fail... - we probalby need a better way to handle this.. + + context.add_external_package ("gtk+-3.0"); + if (!context.add_external_package ("webkit2gtk-4.0")) { + context.add_external_package ("webkit2gtk-3.0"); + } + context.add_external_package ("clutter-gtk-1.0"); + context.add_external_package ("gdl-3.0"); + context.add_external_package ("gtksourceview-3.0"); + context.add_external_package ("vte-2.90"); //??? -- hopefullly that works.. //add_documented_files (context, settings.source_files); Vala.Parser parser = new Vala.Parser (); @@ -333,14 +384,14 @@ namespace Palete { } } - + /* int main (string[] args) { - var g = Gir.factory("Gtk"); + var g = Palete.Gir.factoryFqn("Gtk.SourceView"); print("%s\n", g.asJSONString()); return 0; } - +*/