resources/RooUsage.txt
[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  "build_module" : "builder",
9  "items" : [
10   {
11    "listeners" : {
12     "delete_event" : "(self, event) => {\n    this.el.hide();\n    return true; \n    //test  \n} \n  "
13    },
14    "string tmpjs" : "",
15    "id" : "DialogPluginWebkit",
16    "utf8 title" : "Add / Edit Component",
17    "gint default_height" : 500,
18    "gboolean deletable" : true,
19    "xtype" : "Dialog",
20    "| string show" : " (Gtk.Window ?parent, Project.Project project, string cls, string tbl) {// JsRender.Node node) {\n \n    if (parent  != null) {\n        this.el.set_transient_for(parent);\n        this.el.modal = true;\n    }\n    this.result_json = \"\";\n     var  db = project.roo_database;\n     \n    \n     this.el.show_all();\n     var   ret = \"\";\n     while (true) {\n    \n        var runhtml = \"<script type=\\\"text/javascript\\\">\\n\" ;\n        string builderhtml;\n        \n        try {\n            GLib.FileUtils.get_contents(BuilderApplication.configDirectory() + \"/resources/roo.builder.js\", out builderhtml);\n        } catch (Error e) {\n            builderhtml = \"\";\n        }\n        \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        \n\n        var ar = db.readForeignKeys(tbl);\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.\" + cls + \".panel.loadData(\" + generator.to_data (null) + \"); \" +\n        \"});\\n\";\n\n        \n\t\n\t\n\n        runhtml += \"</script>\\n\" ;\n\n        print(runhtml);\n        // fix to make sure they are the same..\n        \n        // need to modify paths\n\n        string inhtml;\n        try {\n            GLib.FileUtils.get_contents(\n                BuilderApplication.configDirectory() + \"/resources/roo.builder.html\"\n                    , out inhtml);\n        \n        } catch (Error e) {\n            inhtml = \"\";\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=\\\"resources://localhost/Editors/Editor.\" + cls + \".js\\\"></script>\" + \n      \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   \n         var response_id = this.el.run();\n        \n         if (response_id == 1) { // OK...\n             var loop = new MainLoop();\n             // run toBJS to get the data... (calls back into alert handler)\n                _this.result_json = \"\";\n                 this.webview.el.run_javascript.begin(\"Editor.\" + cls + \".panel.toBJS();\", null, (obj, res) => {\n                     try {\n                        this.webview.el.run_javascript.end(res);\n                    } catch(Error e) {\n                \n                     }\n                     loop.quit();\n                 });\n                 loop.run();\n                 ret = _this.result_json;\n                 \n             \n    //           print(\"LOOP END?\");\n             // try and get the resopse...\n            break;\n         }\n        if (response_id < 1) {\n            this.el.hide();\n             return \"\";\n        }\n        // keep showing...?\n        continue;\n    }\n    \n    // now we save it..\n    this.el.hide();\n    \n    return ret;\n    \n    \n    \n}\n",
21    "| bool has_plugin" : "(string cls) {\n\n     return GLib.FileUtils.test(\n            BuilderApplication.configDirectory() + \"/resources/Editors/Editor.\" + cls + \".js\",\n            GLib.FileTest.IS_REGULAR\n      );\n    \n\n\n}\n",
22    "$ xns" : "Gtk",
23    "gint default_width" : 750,
24    "gboolean modal" : true,
25    "string result_json" : "",
26    "items" : [
27     {
28      "xtype" : "Box",
29      "$ pack" : "get_content_area().add",
30      "gboolean homogeneous" : false,
31      "$ xns" : "Gtk",
32      "Gtk.Orientation orientation" : "Gtk.Orientation.VERTICAL",
33      "items" : [
34       {
35        "* init" : "  this.el.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);\n \n",
36        "* pack" : "pack_start,false,true,3",
37        "xtype" : "ScrolledWindow",
38        "gboolean expand" : true,
39        "$ xns" : "Gtk",
40        "items" : [
41         {
42          "listeners" : {
43           "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    \n        case \"SAVEHTML\":\n            // print(\"%sw\",ar[2]);\n            //  _this.file.saveHTML(ar[2]);\n            return true;\n            \n        case \"OUT\":\n            _this.result_json = ar[2];\n            return true;\n            \n        default:\n            return true;\n    }\n    \n}"
44          },
45          "id" : "webview",
46          "* 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",
47          "xtype" : "WebView",
48          "* pack" : "add",
49          "$ xns" : "WebKit"
50         }
51        ]
52       }
53      ]
54     },
55     {
56      "label" : "Reload",
57      "xtype" : "Button",
58      "* pack" : "add_action_widget,3",
59      "$ xns" : "Gtk"
60     },
61     {
62      "label" : "Cancel",
63      "* pack" : "add_action_widget,0",
64      "xtype" : "Button",
65      "$ xns" : "Gtk"
66     },
67     {
68      "label" : "OK",
69      "xtype" : "Button",
70      "* pack" : "add_action_widget,1",
71      "$ xns" : "Gtk"
72     }
73    ]
74   }
75  ]
76 }