static Xcls_DialogPluginWebkit _DialogPluginWebkit;
-public class Xcls_DialogPluginWebkit : Object
+public class Xcls_DialogPluginWebkit : Object
{
public Gtk.Dialog el;
private Xcls_DialogPluginWebkit _this;
public Xcls_webview webview;
// my vars (def)
+ public string tmpjs;
+ public string result_json;
- // ctor
+ // ctor
public Xcls_DialogPluginWebkit()
{
_this = this;
// 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;
});
}
- // 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 = "<script type=\"text/javascript\">\n" ;
- string builderhtml;
-
-
- GLib.FileUtils.get_contents(BuilderApplication.configDirectory() + "/resources/roo.builder.js", out builderhtml);
+ 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 += "</script>\n" ;
+ runhtml += builderhtml + "\n";
+
+
+ runhtml += "\n" +
+ "Builder.saveHTML = function() {};\n" +
+ "Roo.onReady(function() {\n" +
- // fix to make sure they are the same..
-
- // need to modify paths
+ "Roo.XComponent.build();\n" +
+ "});\n";
+
+
+
- string inhtml;
-
- GLib.FileUtils.get_contents(
- BuilderApplication.configDirectory() + "/resources/roo.builder.html"
- , out inhtml);
-
-
- /*
- string js_src = js + "\n" +
- "Roo.onReady(function() {\n" +
- "if (" + _this.file.name +".show) " + _this.file.name +".show({});\n" +
- "Roo.XComponent.build();\n" +
- "});\n";
- */
-
- //var fc = FakeServerCache.factory_with_data(js_src);
- //this.runjs = fc.fname;
-
- var html = inhtml.replace("</head>", runhtml + this.runhtml +
+ 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";
- // "<script type=\"text/javascript\" src=\"xhttp://localhost" + fc.fname + "\"></script>" +
- // "<script type=\"text/javascript\">\n" +
- // js_src + "\n" +
- // "</script>" +
+
+
+
+
+ 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);
- this.el.load_html( html ,
+ this.webview.el.load_html( html ,
//fixme - should be a config option!
"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..
}
- 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;
// my vars (def)
- // ctor
+ // ctor
public Xcls_ScrolledWindow3(Xcls_DialogPluginWebkit _owner )
{
_this = _owner;
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;
// my vars (def)
- // ctor
+ // ctor
public Xcls_webview(Xcls_DialogPluginWebkit _owner )
{
_this = _owner;
// 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;
}
+
+ //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;
// my vars (def)
- // ctor
+ // ctor
public Xcls_Button5(Xcls_DialogPluginWebkit _owner )
{
_this = _owner;
// 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;
// my vars (def)
- // ctor
+ // ctor
public Xcls_Button6(Xcls_DialogPluginWebkit _owner )
{
_this = _owner;
// 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
}
+
}