X-Git-Url: http://git.roojs.org/?p=app.Builder.js;a=blobdiff_plain;f=src%2FBuilder4%2FDialogPluginWebkit.vala;h=e4c46f440fd67582590fdba8e79653d84f4c0402;hp=90fa83e160d8737eeca303a35073448aa037270c;hb=HEAD;hpb=28e51723988e667b218ac6c9b5079f8e2e16b317 diff --git a/src/Builder4/DialogPluginWebkit.vala b/src/Builder4/DialogPluginWebkit.vala index 90fa83e16..e4c46f440 100644 --- a/src/Builder4/DialogPluginWebkit.vala +++ b/src/Builder4/DialogPluginWebkit.vala @@ -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; @@ -16,8 +16,9 @@ public class Xcls_DialogPluginWebkit : Object // my vars (def) public string tmpjs; + public string result_json; - // ctor + // ctor public Xcls_DialogPluginWebkit() { _this = this; @@ -28,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; @@ -49,55 +53,85 @@ 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.el.show_all(); + var ret = ""; + while (true) { - var runhtml = "\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"; - // fix to make sure they are the same.. - - // need to modify paths + + + - string inhtml; - - GLib.FileUtils.get_contents( - BuilderApplication.configDirectory() + "/resources/roo.builder.html" - , out inhtml); - - + runhtml += "\n" ; + print(runhtml); + // fix to make sure they are the same.. + + // need to modify paths - - - print(runhtml); - + 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("", runhtml + // + this.runhtml + - "" + - // "" + - // "" + + "" + + ""); //print("LOAD HTML " + html); @@ -113,16 +147,35 @@ public class Xcls_DialogPluginWebkit : Object - 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.. @@ -133,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( false, 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_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; @@ -165,7 +229,7 @@ public class Xcls_DialogPluginWebkit : Object // my vars (def) - // ctor + // ctor public Xcls_ScrolledWindow3(Xcls_DialogPluginWebkit _owner ) { _this = _owner; @@ -179,14 +243,14 @@ public class Xcls_DialogPluginWebkit : Object 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; @@ -194,7 +258,7 @@ public class Xcls_DialogPluginWebkit : Object // my vars (def) - // ctor + // ctor public Xcls_webview(Xcls_DialogPluginWebkit _owner ) { _this = _owner; @@ -205,12 +269,12 @@ 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(); @@ -236,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; @@ -248,7 +351,7 @@ public class Xcls_DialogPluginWebkit : Object // my vars (def) - // ctor + // ctor public Xcls_Button5(Xcls_DialogPluginWebkit _owner ) { _this = _owner; @@ -257,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; @@ -270,7 +374,7 @@ public class Xcls_DialogPluginWebkit : Object // my vars (def) - // ctor + // ctor public Xcls_Button6(Xcls_DialogPluginWebkit _owner ) { _this = _owner; @@ -278,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 } + }