Attribute changed old-javascript
[app.Builder.js] / old-javascript / Builder4 / Editor.bjs
1 {
2     "name" : "Editor",
3     "parent" : "",
4     "title" : "",
5     "path" : "/home/alan/gitlive/app.Builder.js/Builder4/Editor.bjs",
6     "permname" : "",
7     "modOrder" : "",
8     "items" : [
9         {
10             "# string activeEditor" : "\"\"",
11             "|   bool saveContents" : "  ()  {\n    \n    \n    \n    \n    \n    \n    \n   \n     \n     var str = _this.buffer.toString();\n     \n     if (!_this.buffer.checkSyntax()) {\n         print(\"check syntax failed\");\n         //this.get('/StandardErrorDialog').show(\"Fix errors in code and save..\"); \n         return false;\n     }\n     \n     // LeftPanel.model.changed(  str , false);\n     _this.dirty = false;\n     _this.save_button.el.sensitive = false;\n     \n     \n        \n     \n    // find the text for the node..\n    if (ptype == \"listener\") {\n        this.node.listeners.set(key,str);\n    \n    } else {\n         this.node.props.set(key,str);\n    }\n\n     \n    \n    // call the signal..\n    this.save();\n    \n    return true;\n\n} ",
12             "# int pos_root_x" : "",
13             "# int pos_root_y" : "",
14             "# string ptype" : "\"\"",
15             "# string key" : "\"\"",
16             "* pack" : "add",
17             "xtype" : "VBox",
18             "|   void show" : "(JsRender.JsRender file, JsRender.Node node, string ptype, string key)\n{\n    this.ptype = ptype;\n    this.key  = key;\n    this.node = node;\n    this.file = file;\n    \n   string val = \"\";\n    // find the text for the node..\n    if (ptype == \"listener\") {\n        val = node.listeners.get(key);\n    \n    } else {\n        val = node.props.get(key);\n    }\n    this.view.load(val);\n    this.key_edit.el.text = key;    \n\n}",
19             "# JsRender.JsRender file" : "null",
20             "# bool pos" : false,
21             "string id" : "Editor",
22             "# bool dirty" : false,
23             "$ xns" : "Gtk",
24             "@ void save" : "()",
25             "$ homogeneous" : false,
26             "# JsRender.Node node" : "null",
27             "items" : [
28                 {
29                     "* pack" : "pack_start,false,true",
30                     "xtype" : "HBox",
31                     "$ xns" : "Gtk",
32                     "$ homogeneous" : false,
33                     "items" : [
34                         {
35                             "listeners" : {
36                                 "clicked" : " () => { \n    _this.saveContents();\n}\n \n"
37                             },
38                             "label" : "Save",
39                             "id" : "save_button",
40                             "* pack" : "pack_start,false,false",
41                             "xtype" : "Button",
42                             "$ xns" : "Gtk"
43                         },
44                         {
45                             "id" : "key_edit",
46                             "xtype" : "Entry",
47                             "* pack" : "pack_end,true,true",
48                             "$ xns" : "Gtk"
49                         }
50                     ]
51                 },
52                 {
53                     "id" : "RightEditor",
54                     "* init" : "this.el.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);",
55                     "xtype" : "ScrolledWindow",
56                     "* pack" : "add",
57                     "$ xns" : "Gtk",
58                     "items" : [
59                         {
60                             "listeners" : {
61                                 "key_release_event" : " (event) => {\n    \n    if (event.keyval == 115 && (event.state & Gdk.ModifierType.CONTROL_MASK ) > 0 ) {\n        print(\"SAVE: ctrl-S  pressed\");\n        _this.saveContents();\n        return false;\n    }\n   // print(event.key.keyval)\n    \n    return false;\n\n} \n\n"
62                             },
63                             "gboolean show_line_marks" : true,
64                             "id" : "view",
65                             "* init" : " \n    var description =   Pango.FontDescription.from_string(\"monospace\");\n    description.set_size(8000);\n    this.el.override_font(description);\n\n    var attrs = new Gtk.SourceMarkAttributes();\n    var  pink = new Gdk.RGBA();\n    pink.parse ( \"pink\");\n    attrs.set_background ( pink);\n    attrs.set_icon_name ( \"process-stop\");    \n    attrs.query_tooltip_text.connect(( mark) => {\n        print(\"tooltip query? %s\\n\", mark.name);\n        return mark.name;\n    });\n    \n    this.el.set_mark_attributes (\"error\", attrs, 1);\n    \n    ",
66                             "$ insert_spaces_instead_of_tabs" : true,
67                             "* pack" : "add",
68                             "xtype" : "View",
69                             "gboolean highlight_current_line" : true,
70                             "$ gboolean auto_indent" : true,
71                             "$ xns" : "GtkSource",
72                             "|   void load" : " (string str) {\n\n// show the help page for the active node..\n   //this.get('/Help').show();\n\n\n  // this.get('/BottomPane').el.set_current_page(0);\n    this.el.get_buffer().set_text(str, str.length);\n    var lm = Gtk.SourceLanguageManager.get_default();\n    \n    var lang = _this.file.language;\n    //?? is javascript going to work as js?\n    \n    ((Gtk.SourceBuffer)(this.el.get_buffer())) .set_language(lm.get_language(lang));\n    var buf = this.el.get_buffer();\n    \n    /* -- what does all this do? */\n    /*\n    var cursor = buf.get_mark(\"insert\");\n    Gtk.TextIter iter;\n    buf.get_iter_at_mark(out iter, cursor);\n    iter.set_line(1);\n    iter.set_line_offset(4);\n    buf.move_mark(cursor, iter);\n    \n    \n    cursor = buf.get_mark(\"selection_bound\");\n    //iter= new Gtk.TextIter;\n    buf.get_iter_at_mark(out iter, cursor);\n    iter.set_line(1);\n    iter.set_line_offset(4);\n    buf.move_mark(cursor, iter);\n    \n    */\n    \n    _this.dirty = false;\n    this.el.grab_focus();\n    _this.save_button.el.sensitive = false;\n}",
73                             "indent_width" : 4,
74                             "$ show_line_numbers" : true,
75                             "items" : [
76                                 {
77                                     "listeners" : {
78                                         "changed" : " () => {\n    // check syntax??\n        if(this.checkSyntax()) {\n        _this.save_button.el.sensitive = true;\n    }\n   // print(\"EDITOR CHANGED\");\n    _this.dirty = true;\n\n    // this.get('/LeftPanel.model').changed(  str , false);\n    return ;\n}\n\n \n"
79                                     },
80                                     "id" : "buffer",
81                                     "int error_line" : "-1",
82                                     "|   string toString" : "  () {\n    \n    Gtk.TextIter s;\n    Gtk.TextIter e;\n    this.el.get_start_iter(out s);\n    this.el.get_end_iter(out e);\n    var ret = this.el.get_text(s,e,true);\n    //print(\"TO STRING? \" + ret);\n    return ret;\n}\n ",
83                                     "|   bool checkSyntax" : " () {\n \n    var p = Palete.factory(_this.file.xtype);   \n    \n    var str = this.toString();\n    \n    string res = \"\";\n    \n    if (this.error_line > 0) {\n         Gtk.TextIter start;\n         Gtk.TextIter end;     \n        this.el.get_bounds (out start, out end);\n\n        this.el.remove_source_marks (start, end, null);\n    }\n    \n    \n    var validate_res =  p.validateCode(\n        str, \n         _this.key, \n        _this.ptype,\n        _this.file,\n        _this.node\n        \n    );\n     \n    this.error_line = validate_res.size;\n\n    if (this.error_line < 1) {\n          return true;\n    }\n    var tlines = this.el.get_line_count ();\n    Gtk.TextIter iter;\n    var valiter = validate_res.map_iterator();\n    while (valiter.next()) {\n    \n//        print(\"get inter\\n\");\n        var eline = valiter.get_key();\n        if (eline > tlines) {\n            continue;\n        }\n        this.el.get_iter_at_line( out iter, eline);\n        //print(\"mark line\\n\");\n        this.el.create_source_mark(valiter.get_value(), \"error\", iter);\n    }   \n    \n    //print(\"done mark line\\n\");\n     \n    return true; // at present allow saving - even if it's invalid..\n}\n",
84                                     "* pack" : "set_buffer",
85                                     "xtype" : "Buffer",
86                                     "$ xns" : "GtkSource"
87                                 }
88                             ]
89                         }
90                     ]
91                 }
92             ]
93         }
94     ]
95 }