resources/RooUsage.txt
[app.Builder.js] / src / Builder4 / DialogPluginWebkit.vala
index 349b1b9..e4c46f4 100644 (file)
@@ -1,6 +1,6 @@
 static Xcls_DialogPluginWebkit  _DialogPluginWebkit;
 
-public class Xcls_DialogPluginWebkit : Object 
+public class Xcls_DialogPluginWebkit : Object
 {
     public Gtk.Dialog el;
     private Xcls_DialogPluginWebkit  _this;
@@ -15,8 +15,10 @@ public class Xcls_DialogPluginWebkit : Object
     public Xcls_webview webview;
 
         // my vars (def)
+    public string tmpjs;
+    public string result_json;
 
-    // ctor 
+    // ctor
     public Xcls_DialogPluginWebkit()
     {
         _this = this;
@@ -27,20 +29,23 @@ public class Xcls_DialogPluginWebkit : Object
         // set gobject values
         this.el.title = "Add / Edit Component";
         this.el.default_height = 500;
-        this.el.default_width = 500;
+        this.el.default_width = 750;
         this.el.deletable = true;
         this.el.modal = true;
-        var child_0 = new Xcls_VBox2( _this );
+        var child_0 = new Xcls_Box2( _this );
         child_0.ref();
         this.el.get_content_area().add (  child_0.el  );
         var child_1 = new Xcls_Button5( _this );
         child_1.ref();
-        this.el.add_action_widget (  child_1.el , 0 );
+        this.el.add_action_widget (  child_1.el , 3 );
         var child_2 = new Xcls_Button6( _this );
         child_2.ref();
-        this.el.add_action_widget (  child_2.el , 1 );
+        this.el.add_action_widget (  child_2.el , 0 );
+        var child_3 = new Xcls_Button7( _this );
+        child_3.ref();
+        this.el.add_action_widget (  child_3.el , 1 );
 
-        // listeners 
+        //listeners
         this.el.delete_event.connect( (self, event) => {
             this.el.hide();
             return true; 
@@ -48,31 +53,129 @@ public class Xcls_DialogPluginWebkit : Object
         });
     }
 
-    // user defined functions 
-    public string show (Gtk.Window ?parent, string text) {// JsRender.Node node) {
+    // user defined functions
+    public string show (Gtk.Window ?parent, Project.Project project, string cls, string tbl) {// JsRender.Node node) {
      
         if (parent  != null) {
             this.el.set_transient_for(parent);
             this.el.modal = true;
         }
+        this.result_json = "";
+         var  db = project.roo_database;
+         
         
-        _this.webview.el.load_html( text , 
+         this.el.show_all();
+         var   ret = "";
+         while (true) {
+        
+            var runhtml = "<script type=\"text/javascript\">\n" ;
+            string builderhtml;
+            
+            try {
+                GLib.FileUtils.get_contents(BuilderApplication.configDirectory() + "/resources/roo.builder.js", out builderhtml);
+            } catch (Error e) {
+                builderhtml = "";
+            }
+            
+    
+            runhtml += builderhtml + "\n";
+            
+            
+            runhtml += "\n" +
+                "Builder.saveHTML = function() {};\n" + 
+           "Roo.onReady(function() {\n" +
+    
+           "Roo.XComponent.build();\n" +
+           "});\n";
+       
+       
+            
+    
+            var ar = db.readForeignKeys(tbl);
+            var  generator = new Json.Generator ();
+            var  root = new Json.Node(Json.NodeType.OBJECT);
+            root.init_object(ar);
+            generator.set_root (root);
+            
+            generator.pretty = true;
+            generator.indent = 4;
+            
+            runhtml += "\n" +
+            " Roo.XComponent.on('buildcomplete', function() {\n" +
+             "    Editor." + cls + ".panel.loadData(" + generator.to_data (null) + "); " +
+            "});\n";
+    
+            
+       
+       
+    
+            runhtml += "</script>\n" ;
+    
+            print(runhtml);
+            // fix to make sure they are the same..
+            
+            // need to modify paths
+    
+            string inhtml;
+            try {
+                GLib.FileUtils.get_contents(
+                    BuilderApplication.configDirectory() + "/resources/roo.builder.html"
+                        , out inhtml);
+            
+            } catch (Error e) {
+                inhtml = "";
+            }
+            // fetch the json from the database...
+            
+            //print(runhtml);
+            
+            var html = inhtml.replace("</head>", runhtml + // + this.runhtml + 
+                "<script type=\"text/javascript\" src=\"resources://localhost/Editors/Editor." + cls + ".js\"></script>" + 
+          
+                            
+            "</head>");
+            //print("LOAD HTML " + html);
+            
+             //var rootURL = _this.file.project.rootURL;
+       
+            
+            
+            this.webview.el.load_html( html , 
                 //fixme - should be a config option!
-                // or should we catch stuff and fix it up..
-                "xhttp://localhost/app.Builder/"
-        );
+                "xhttp://localhost/app.Builder.js/"
+            );
+        
             
         
-        this.el.show_all();
-         var   ret = "";
-        while (true) {
-            var response_id = this.el.run();
+       
+             var response_id = this.el.run();
+            
+             if (response_id == 1) { // OK...
+                 var loop = new MainLoop();
+                 // run toBJS to get the data... (calls back into alert handler)
+                    _this.result_json = "";
+                     this.webview.el.run_javascript.begin("Editor." + cls + ".panel.toBJS();", null, (obj, res) => {
+                         try {
+                            this.webview.el.run_javascript.end(res);
+                        } catch(Error e) {
+                    
+                         }
+                         loop.quit();
+                     });
+                     loop.run();
+                     ret = _this.result_json;
+                     
+                 
+        //           print("LOOP END?");
+                 // try and get the resopse...
+                break;
+             }
             if (response_id < 1) {
                 this.el.hide();
                  return "";
             }
             // keep showing...?
-            break;
+            continue;
         }
         
         // now we save it..
@@ -83,31 +186,42 @@ public class Xcls_DialogPluginWebkit : Object
         
         
     }
-    public class Xcls_VBox2 : Object 
+    public bool has_plugin (string cls) {
+    
+         return GLib.FileUtils.test(
+                BuilderApplication.configDirectory() + "/resources/Editors/Editor." + cls + ".js",
+                GLib.FileTest.IS_REGULAR
+          );
+        
+    
+    
+    }
+    public class Xcls_Box2 : Object
     {
-        public Gtk.VBox el;
+        public Gtk.Box el;
         private Xcls_DialogPluginWebkit  _this;
 
 
             // my vars (def)
 
-        // ctor 
-        public Xcls_VBox2(Xcls_DialogPluginWebkit _owner )
+        // ctor
+        public Xcls_Box2(Xcls_DialogPluginWebkit _owner )
         {
             _this = _owner;
-            this.el = new Gtk.VBox( true, 0 );
+            this.el = new Gtk.Box( Gtk.Orientation.VERTICAL, 0 );
 
             // my vars (dec)
 
             // set gobject values
+            this.el.homogeneous = false;
             var child_0 = new Xcls_ScrolledWindow3( _this );
             child_0.ref();
-            this.el.pack_end (  child_0.el , true,true,0 );
+            this.el.pack_start (  child_0.el , false,true,3 );
         }
 
-        // user defined functions 
+        // user defined functions
     }
-    public class Xcls_ScrolledWindow3 : Object 
+    public class Xcls_ScrolledWindow3 : Object
     {
         public Gtk.ScrolledWindow el;
         private Xcls_DialogPluginWebkit  _this;
@@ -115,7 +229,7 @@ public class Xcls_DialogPluginWebkit : Object
 
             // my vars (def)
 
-        // ctor 
+        // ctor
         public Xcls_ScrolledWindow3(Xcls_DialogPluginWebkit _owner )
         {
             _this = _owner;
@@ -124,18 +238,19 @@ public class Xcls_DialogPluginWebkit : Object
             // my vars (dec)
 
             // set gobject values
+            this.el.expand = true;
             var child_0 = new Xcls_webview( _this );
             child_0.ref();
             this.el.add (  child_0.el  );
 
-            // init method 
+            // init method
 
             this.el.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);
         }
 
-        // user defined functions 
+        // user defined functions
     }
-    public class Xcls_webview : Object 
+    public class Xcls_webview : Object
     {
         public WebKit.WebView el;
         private Xcls_DialogPluginWebkit  _this;
@@ -143,7 +258,7 @@ public class Xcls_DialogPluginWebkit : Object
 
             // my vars (def)
 
-        // ctor 
+        // ctor
         public Xcls_webview(Xcls_DialogPluginWebkit _owner )
         {
             _this = _owner;
@@ -154,15 +269,15 @@ public class Xcls_DialogPluginWebkit : Object
 
             // set gobject values
 
-            // init method 
+            // init method
 
             {
                 // this may not work!?
                 var settings =  this.el.get_settings();
-                
+                settings.enable_write_console_messages_to_stdout = true;
                  
-                //var fs= new FakeServer(this.el);
-                //fs.ref();
+                var fs= new FakeServer(this.el);
+                fs.ref();
                 // this was an attempt to change the url perms.. did not work..
                 // settings.enable_file_access_from_file_uris = true;
                 // settings.enable_offline_web_application_cache - true;
@@ -185,11 +300,50 @@ public class Xcls_DialogPluginWebkit : Object
                 
                 
             }
+
+            //listeners
+            this.el.script_dialog.connect( (dialog) => {
+                if (this.el == null) {
+                    return true;
+                }
+                
+                 var msg = dialog.get_message();
+                 if (msg.length < 4) {
+                    return false;
+                 }
+                 if (msg.substring(0,4) != "IPC:") {
+                     return false;
+                 }
+                 var ar = msg.split(":", 3);
+                if (ar.length < 3) {
+                    return false;
+                }
+                print("CMD: %s\n",ar[1]);
+                print("ARGS: %s\n",ar[2]);
+                switch(ar[1]) {
+                
+                    case "SAVEHTML":
+                        // print("%sw",ar[2]);
+                        //  _this.file.saveHTML(ar[2]);
+                        return true;
+                        
+                    case "OUT":
+                        _this.result_json = ar[2];
+                        return true;
+                        
+                    default:
+                        return true;
+                }
+                
+            });
         }
 
-        // user defined functions 
+        // user defined functions
     }
-    public class Xcls_Button5 : Object 
+
+
+
+    public class Xcls_Button5 : Object
     {
         public Gtk.Button el;
         private Xcls_DialogPluginWebkit  _this;
@@ -197,7 +351,7 @@ public class Xcls_DialogPluginWebkit : Object
 
             // my vars (def)
 
-        // ctor 
+        // ctor
         public Xcls_Button5(Xcls_DialogPluginWebkit _owner )
         {
             _this = _owner;
@@ -206,12 +360,13 @@ public class Xcls_DialogPluginWebkit : Object
             // my vars (dec)
 
             // set gobject values
-            this.el.label = "Cancel";
+            this.el.label = "Reload";
         }
 
-        // user defined functions 
+        // user defined functions
     }
-    public class Xcls_Button6 : Object 
+
+    public class Xcls_Button6 : Object
     {
         public Gtk.Button el;
         private Xcls_DialogPluginWebkit  _this;
@@ -219,7 +374,7 @@ public class Xcls_DialogPluginWebkit : Object
 
             // my vars (def)
 
-        // ctor 
+        // ctor
         public Xcls_Button6(Xcls_DialogPluginWebkit _owner )
         {
             _this = _owner;
@@ -227,10 +382,34 @@ public class Xcls_DialogPluginWebkit : Object
 
             // my vars (dec)
 
+            // set gobject values
+            this.el.label = "Cancel";
+        }
+
+        // user defined functions
+    }
+
+    public class Xcls_Button7 : Object
+    {
+        public Gtk.Button el;
+        private Xcls_DialogPluginWebkit  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_Button7(Xcls_DialogPluginWebkit _owner )
+        {
+            _this = _owner;
+            this.el = new Gtk.Button();
+
+            // my vars (dec)
+
             // set gobject values
             this.el.label = "OK";
         }
 
-        // user defined functions 
+        // user defined functions
     }
+
 }