Merge branch 'master' of http://git.roojs.com:8081/app.Builder.js
authorAlan Knowles <alan@roojs.com>
Fri, 29 Aug 2014 08:40:53 +0000 (16:40 +0800)
committerAlan Knowles <alan@roojs.com>
Fri, 29 Aug 2014 08:40:53 +0000 (16:40 +0800)
JsRender/Gtk.vala
JsRender/NodeToVala.vala
tests/ValaTest.vala

index 5a0694f..e071a40 100644 (file)
@@ -211,10 +211,10 @@ namespace JsRender {
         
         int vcnt = 0;
 
-               Palete.Gtk palete;
-               GLib.List<Node> vitems;
-               string xvala_xcls;
-               
+       Palete.Gtk palete;
+       GLib.List<Node> vitems;
+       string xvala_xcls;
+       
         public override string toValaSource(bool testcompile)
         {
             var ret = "";
index ea15cdd..44934aa 100644 (file)
@@ -23,6 +23,7 @@ public class JsRender.NodeToVala : Object {
        string ret;
 
        Gee.ArrayList<string> ignoreList; 
+       GLib.List<Node> vitems; // top level items
        NodeToVala top;
        
        public NodeToVala( Node node,  int depth, NodeToVala? top) 
@@ -37,8 +38,52 @@ public class JsRender.NodeToVala : Object {
                this.ret = "";
                this.top = top == null ? this : top;
                this.ignoreList = new Gee.ArrayList<string>();
+               this.vitems = new GLib.List<Node>();
+       }
+
+       public int vcnt = 0;
+       string toValaNS(Node item)
+        {
+            var ns = item.get("* xns") ;
+            //if (ns == "GtkSource") {
+                //return "Gtk.Source.";
+            //}
+            return ns + ".";
+        }
+       public void  toValaName(Node item) 
+       {
+               this.vcnt++;
+
+               var cls = this.toValaNS(item) + item.get("xtype");
+
+               string id = item.get("id").length > 0 ?
+                       item.get("id") :  "%s%d".printf(item.get("xtype"), this.vcnt);
+
+               item.xvala_cls = cls;
+               item.xvala_xcls = "Xcls_" + id;
+               item.xvala_id = item.get("id").length > 0  ? item.get("id") : "";
+                                                                              
+               this.vitems.append(item);  
+               // loop children..
+                                                                              
+               if (item.items.size < 1) {
+                       return;
+               }
+               for(var i =0;i<item.items.size;i++) {
+                       this.toValaName(item.items.get(i));
+               }
+                                 
+        }
+
+       static string mungeFile(JsRender file) 
+       {
+               var n = new NodeToVala(file.tree, 0, null);
+               n.vcnt = 0;
+               n.toValaName(file.tree);
+               return n.munge();
+               
+
        }
-       
        
        public string munge ( )
        {
@@ -56,6 +101,15 @@ public class JsRender.NodeToVala : Object {
                this.addValaCtor();
                this.addUnderThis();
                this.addWrappedCtor();
+
+               this.addInitMyVars();
+               this.addWrappedProperties();
+               this.addChildren();
+               this.addInit();
+               this.addListeners();
+               this.addEndCtor();
+               this.addUserMethods();
+               this.iterChildren();
                
                return this.ret;
                 
@@ -73,7 +127,7 @@ public class JsRender.NodeToVala : Object {
                        return;
                }
                 // Global Vars..
-                this.ret += this.inpad + "public static " + this.xcls + "  " ; //+ this.node.name + ";\n\n";
+                this.ret += this.inpad + "public static " + this.xcls + "  "  this.xvala_id+ ";\n\n";
                 
                 
        }
@@ -195,7 +249,8 @@ public class JsRender.NodeToVala : Object {
                // ctor..
                this.ret += "\n" + ipad + "// ctor \n";
                if (this.node.has("* args")) {
-               
+                       // not sure what this is supposed to be ding..
+                       
                        cargs_str = ", " + this.node.get("* args");
                        //var ar = this.node.get("* args");.split(",");
                        //for (var ari =0; ari < ar.length; ari++) {
@@ -205,7 +260,7 @@ public class JsRender.NodeToVala : Object {
                
                if (this.depth < 1) {
                        this.ret += this.pad + "public " + this.xcls + "(" + 
-                                   cargs_str.substring(1) +")\n" + this.pad + "{\n";
+                                   cargs_str +")\n" + this.pad + "{\n";
                } else {
                 
                     //code 
@@ -258,7 +313,7 @@ public class JsRender.NodeToVala : Object {
 
                // see what the 
                var default_ctor = Palete.Gir.factoryFqn(this.node.fqn() + ".new");
-               if (default_ctor.paramset.params.size > 0) {
+               if (default_ctor.paramset != null && default_ctor.paramset.params.size > 0) {
                        string[] args  = {};
                        var iter =default_ctor.paramset.params.list_iterator();
                        while (iter.next()) {
@@ -537,12 +592,12 @@ public class JsRender.NodeToVala : Object {
        }
        
        void ignore(string i) {
-
+               this.ignoreList.add(i);
                
        }
        bool shouldIgnore(string i)
        {
-               return true;
+               return ignoreList.contains(i);
        }
        
 
index 19eaae7..3ecc9ad 100644 (file)
@@ -12,13 +12,32 @@ int main (string[] args) {
        GLib.Log.set_always_fatal(LogLevelFlags.LEVEL_ERROR | LogLevelFlags.LEVEL_CRITICAL);
 
 
-       //var g = Palete.Gir.factory("Gtk");
-       //var test = g.classes.get("Label");
        
+       Project.Project.loadAll();
+       var p = Project.Project.getProject("BuilderTest");
+       p.scanDirs();
+       var ar = p.sortedFiles();
+       var iter = ar.list_iterator();
+       while (iter.next()) {
+               var f= iter.get();
+               f.loadItems();
+               var nv = new JsRender.NodeToVala( f.tree, 0, null);
+               print("\n%s\n",nv.munge());
+               return 0;
+       }
+    
+       
+       return 0;
+}
+
+
+void testGir() {
+
+
        var test = Palete.Gir.factoryFqn("Gtk.Label.new");
        if (test == null) {
                print("could not find Gtk.Label.new\n");
-               return 0;
+               return;
        }
 
        
@@ -30,19 +49,5 @@ int main (string[] args) {
        generator.pretty = true;
     
        print(generator.to_data(null));
-       return 0;
-
        
-       Project.Project.loadAll();
-       var p = Project.Project.getProject("BuilderTest");
-       p.scanDirs();
-       var ar = p.sortedFiles();
-       var iter = ar.list_iterator();
-       while (iter.next()) {
-               var f= iter.get();
-               f.save();
-       } 
-    
-       
-       return 0;
-}
+}
\ No newline at end of file