src/Builder4/DialogPluginWebkit.bjs
[app.Builder.js] / src / Builder4 / DialogPluginWebkit.bjs
1 {
2  "name" : "DialogPluginWebkit",
3  "parent" : "",
4  "title" : "",
5  "path" : "/home/alan/gitlive/app.Builder.js/src/Builder4/DialogPluginWebkit.bjs",
6  "permname" : "",
7  "modOrder" : "",
8  "items" : [
9   {
10    "listeners" : {
11     "delete_event" : "(self, event) => {\n    this.el.hide();\n    return true; \n    //test  \n}\n "
12    },
13    "string tmpjs" : "",
14    "id" : "DialogPluginWebkit",
15    "utf8 title" : "Add / Edit Component",
16    "gint default_height" : 500,
17    "gboolean deletable" : true,
18    "xtype" : "Dialog",
19    "| string show" : " (Gtk.Window ?parent, string text) {// JsRender.Node node) {\n \n    if (parent  != null) {\n        this.el.set_transient_for(parent);\n        this.el.modal = true;\n    }\n    \n    \n    var runhtml = \"<script type=\\\"text/javascript\\\">\\n\" ;\n    string builderhtml;\n    \n    \n    GLib.FileUtils.get_contents(BuilderApplication.configDirectory() + \"/resources/roo.builder.js\", out builderhtml);\n\n    runhtml += builderhtml + \"\\n\";\n    \n    \n       runhtml += \"\\n\" +\n        \"Builder.saveHTML = function();\\n\" + \n\t\"Roo.onReady(function() {\\n\" +\n\n\t\"Roo.XComponent.build();\\n\" +\n\t\"});\\n\";\n\t\n\t\n    var db = new JsRender.RooDatabase.from_cfg (\"MySQL\", \"hydra\", \"root\", \"\");\n    \n\n    var ar = db.readForeignKeys(\"Person\");\n    var  generator = new Json.Generator ();\n    var  root = new Json.Node(Json.NodeType.OBJECT);\n    root.init_object(ar);\n    generator.set_root (root);\n    \n    generator.pretty = true;\n    generator.indent = 4;\n    \n runhtml += \"\\n\" +\n    \" Roo.XComponent.on('buildcomplete', function() {\\n\" +\n     \"    Editor.Roo.grid.Grid.show(\" + generator.to_data (null) + \"); \" +\n    \"});\\n\";\n\n    \n\t\n\t\n\n    runhtml += \"</script>\\n\" ;\n\nprint(runhtml);\n    // fix to make sure they are the same..\n    \n    // need to modify paths\n\n    string inhtml;\n    \n    GLib.FileUtils.get_contents(\n        BuilderApplication.configDirectory() + \"/resources/roo.builder.html\"\n            , out inhtml);\n    \n    \n    // fetch the json from the database...\n    \n    //print(runhtml);\n    \n        var html = inhtml.replace(\"</head>\", runhtml + // + this.runhtml + \n            \"<script type=\\\"text/javascript\\\" src=\\\"xhttp://localhost/app.Builder.js/resources/Editors/Editor.Roo.grid.Grid.js\\\"></script>\" + \n      //      \"<script type=\\\"text/javascript\\\" src=\\\"xhttp://localhost\" + fc.fname + \"\\\"></script>\" +   \n              //  \"<script type=\\\"text/javascript\\\">\\n\" +\n              //  js_src + \"\\n\" + \n              //  \"</script>\" + \n                        \n        \"</head>\");\n        //print(\"LOAD HTML \" + html);\n        \n         //var rootURL = _this.file.project.rootURL;\n   \n        \n        \n        this.webview.el.load_html( html , \n            //fixme - should be a config option!\n            \"xhttp://localhost/app.Builder.js/\"\n        );\n    \n        \n    \n    this.el.show_all();\n     var   ret = \"\";\n    while (true) {\n        var response_id = this.el.run();\n        if (response_id < 1) {\n            this.el.hide();\n             return \"\";\n        }\n        // keep showing...?\n        break;\n    }\n    \n    // now we save it..\n    this.el.hide();\n    \n    return ret;\n    \n    \n    \n}\n",
20    "$ xns" : "Gtk",
21    "gint default_width" : 500,
22    "gboolean modal" : true,
23    "items" : [
24     {
25      "xtype" : "VBox",
26      "$ pack" : "get_content_area().add",
27      "gboolean homogeneous" : false,
28      "$ xns" : "Gtk",
29      "items" : [
30       {
31        "* init" : "  this.el.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);\n \n",
32        "* pack" : "pack_start,false,true,3",
33        "xtype" : "ScrolledWindow",
34        "gboolean expand" : true,
35        "$ xns" : "Gtk",
36        "items" : [
37         {
38          "listeners" : {
39           "script_dialog" : " (dialog) => {\n    if (this.el == null) {\n        return true;\n    }\n    \n     var msg = dialog.get_message();\n     if (msg.length < 4) {\n        return false;\n     }\n     if (msg.substring(0,4) != \"IPC:\") {\n         return false;\n     }\n     var ar = msg.split(\":\", 3);\n    if (ar.length < 3) {\n        return false;\n    }\n    print(\"CMD: %s\\n\",ar[1]);\n        print(\"ARGS: %s\\n\",ar[2]);\n    switch(ar[1]) {\n        case \"SAVEHTML\":\n          print(\"%sw\",ar[2]);\n          //  _this.file.saveHTML(ar[2]);\n            return true;\n        default:\n            return false;\n    }\n    \n}"
40          },
41          "id" : "webview",
42          "* init" : " {\n    // this may not work!?\n    var settings =  this.el.get_settings();\n    settings.enable_write_console_messages_to_stdout = true;\n     \n    var fs= new FakeServer(this.el);\n    fs.ref();\n    // this was an attempt to change the url perms.. did not work..\n    // settings.enable_file_access_from_file_uris = true;\n    // settings.enable_offline_web_application_cache - true;\n    // settings.enable_universal_access_from_file_uris = true;\n   \n     \n    \n    \n    \n\n     // FIXME - base url of script..\n     // we need it so some of the database features work.\n    this.el.load_html( \"Render not ready\" , \n            //fixme - should be a config option!\n            // or should we catch stuff and fix it up..\n            \"xhttp://localhost/app.Builder/\"\n    );\n        \n        \n    \n    \n}\n",
43          "xtype" : "WebView",
44          "* pack" : "add",
45          "$ xns" : "WebKit"
46         }
47        ]
48       }
49      ]
50     },
51     {
52      "label" : "Cancel",
53      "xtype" : "Button",
54      "* pack" : "add_action_widget,0",
55      "$ xns" : "Gtk"
56     },
57     {
58      "label" : "OK",
59      "xtype" : "Button",
60      "* pack" : "add_action_widget,1",
61      "$ xns" : "Gtk"
62     }
63    ]
64   }
65  ]
66 }