X-Git-Url: http://git.roojs.org/?p=app.Builder.js;a=blobdiff_plain;f=src%2FBuilder4%2FDialogPluginWebkit.vala;h=e4c46f440fd67582590fdba8e79653d84f4c0402;hp=349b1b93d10bbf4f0959ad6332e6fc48bfb4bd27;hb=HEAD;hpb=d3c4abe52594aa9270d495b52b6a80820c3f9918 diff --git a/src/Builder4/DialogPluginWebkit.vala b/src/Builder4/DialogPluginWebkit.vala index 349b1b93d..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; @@ -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 = "\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("", runhtml + // + this.runhtml + + "" + + + + ""); + //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 } + }