src/Builder4/ValaCompileErrors.bjs
[app.Builder.js] / src / Builder4 / ValaCompileErrors.bjs
1 {
2  "name" : "ValaCompileErrors",
3  "parent" : "",
4  "title" : "",
5  "path" : "/home/alan/gitlive/app.Builder.js/src/Builder4/ValaCompileErrors.bjs",
6  "permname" : "",
7  "modOrder" : "",
8  "build_module" : "builder",
9  "items" : [
10   {
11    "int height_request" : 800,
12    "id" : "ValaCompileErrors",
13    "Xcls_MainWindow window" : "",
14    "| void show" : "(Json.Object tree, Gtk.Widget onbtn) {\n\n        this.notices = tree;\n         //print(\"looking for %s\\n\", id);\n        // loop through parent childnre\n          \n        \n        var store = this.compile_result_store.el;    \n        \n        store.clear();\n     \n        \n        tree.foreach_member((obj, file, node) => {\n            // id line \"display text\", file\n            \n            var title = GLib.Path.get_basename(GLib.Path.get_dirname( file)) + \"/\" +  GLib.Path.get_basename( file) ;\n            Gtk.TreeIter iter;\n            print(\"Add file %s\", title);\n            store.append(out iter, null);\n            var lines = tree.get_object_member(file);\n            title += \" (\" + lines.get_size().to_string() + \")\";\n            store.set(iter, 0, file, 1, 0, 2, title, 3, file,-1);\n            \n            lines.foreach_member((obja, line, nodea) => {\n                var msg  = \"\";\n                var ar = lines.get_array_member(line);\n                for (var i = 0 ; i < ar.get_length(); i++) {\n    \t\t    msg += (msg.length > 0) ? \"\\n\" : \"\";\n    \t\t    msg += ar.get_string_element(i);\n\t        }\n                Gtk.TreeIter citer;  \n                print(\"Add line %s\", line);\n                store.append(out citer, iter);\n                store.set(citer, \n                    0, file + \":\" + line, \n                    1, int.parse(line), \n                    2, GLib.Markup.escape_text(line + \": \" + msg), \n                    3, file,-1);\n            \n            });\n            \n            \n        \n        });\n        \n    int w,h;\n    this.window.el.get_size(out w, out h);\n    this.el.set_size_request( int.max(100, w- 100), int.max(100, h-100));\n\n    \n    this.hpane.el.set_position(250);\n   if (this.el.relative_to == null) {\n        this.el.set_relative_to(onbtn);\n    }\n    this.el.show_all();\n          \n\n}\n",
15    "xtype" : "Popover",
16    "Gtk.PositionType position" : "Gtk.PositionType.TOP",
17    "int width_request" : 900,
18    "$ xns" : "Gtk",
19    "Json.Object notices" : "",
20    "bool modal" : true,
21    "items" : [
22     {
23      "id" : "compile_view",
24      "* pack" : "add",
25      "xtype" : "VBox",
26      "gboolean homogeneous" : false,
27      "$ xns" : "Gtk",
28      "items" : [
29       {
30        "xtype" : "HBox",
31        "* pack" : "pack_start,false,false,0",
32        "$ xns" : "Gtk",
33        "items" : [
34         {
35          "* pack" : "pack_start,true,true,0",
36          "xtype" : "Button",
37          "$ xns" : "Gtk",
38          "utf8 label" : "Compile and Run"
39         },
40         {
41          "* pack" : "pack_start,true,true,0",
42          "xtype" : "Button",
43          "$ xns" : "Gtk",
44          "utf8 label" : "Edit"
45         },
46         {
47          "* pack" : "pack_start,true,true,0",
48          "xtype" : "Button",
49          "$ xns" : "Gtk",
50          "utf8 label" : "Save"
51         }
52        ]
53       },
54       {
55        "id" : "hpane",
56        "* pack" : "pack_start,true,true,0",
57        "xtype" : "HPaned",
58        "$ xns" : "Gtk",
59        "items" : [
60         {
61          "* init" : "{\n this.el.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);\n \n\n}\n",
62          "xtype" : "ScrolledWindow",
63          "* pack" : "add",
64          "$ xns" : "Gtk",
65          "items" : [
66           {
67            "listeners" : {
68             "cursor_changed" : "() => {\n    var sel = this.el.get_selection();\n \n            if (sel.count_selected_rows() < 1) {\n\n                print(\"selected rows < 1\\n\");\n                //??this.mo \n                return  ;\n            }\n                \n                //console.log('changed');\n             \n             Gtk.TreeIter iter;\n             Gtk.TreeModel mod;\n            sel.get_selected(out mod, out iter);\n            /*\n             store.set(citer, \n                    0, file + \":\" + line, \n                    1, int.parse(line), \n                    2, GLib.Markup.escape_text(line + \": \" + msg), \n                    3, file,-1);\n            \n            });\n            */\n            \n            \n            \n            // var val = \"\";\n            GLib.Value value;\n            _this.compile_result_store.el.get_value(iter, 3, out value);\n            var fname = (string)value;\n            GLib.Value lvalue;\n            _this.compile_result_store.el.get_value(iter, 1, out lvalue);\n            var line = (int) lvalue;\n            \n            print (\"loadfile %s : %d\", fname,line);\n            \n            _this.sourceview.loadFile(fname, line);\n            \n            \n            \n            \n}\n             "
69            },
70            "id" : "compile_tree",
71            "* init" : "{\n var description = new Pango.FontDescription();\n    description.set_size(8000);\n    this.el.modify_font(description);\n\n}\n",
72            "* pack" : "add",
73            "xtype" : "TreeView",
74            "$ xns" : "Gtk",
75            "items" : [
76             {
77              "gint n_columns" : 4,
78              "id" : "compile_result_store",
79              "columns" : "  typeof(string), typeof(int), typeof(string), typeof(string) ",
80              "* pack" : "set_model",
81              "xtype" : "TreeStore",
82              "$ xns" : "Gtk"
83             },
84             {
85              "utf8 title" : "Compile output",
86              "* init" : "{\n  this.el.add_attribute(_this.renderer.el , \"markup\", 2 );\n \n}\n",
87              "xtype" : "TreeViewColumn",
88              "* pack" : "append_column",
89              "string id" : "column",
90              "$ xns" : "Gtk",
91              "items" : [
92               {
93                "id" : "renderer",
94                "* pack" : "pack_start,true",
95                "xtype" : "CellRendererText",
96                "$ xns" : "Gtk"
97               }
98              ]
99             }
100            ]
101           }
102          ]
103         },
104         {
105          "* pack" : "add",
106          "xtype" : "ScrolledWindow",
107          "$ xns" : "Gtk",
108          "items" : [
109           {
110            "gboolean show_line_marks" : true,
111            "id" : "sourceview",
112            "* init" : "{\n    this.curfname = \"\";\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}\n",
113            "| void loadFile" : "(string fname, int line ) {\n  var buf = ((Gtk.SourceBuffer)(this.el.get_buffer()));\n      \n    if (this.curfname != fname) {\n        this.curfname = fname;\n\n        Gtk.TextIter start;\n        Gtk.TextIter end;     \n        buf.get_bounds (out start, out end);\n            \n        buf.remove_source_marks (start, end, null);\n             \n         \n        \n        string str;\n        FileUtils.get_contents(fname, out str);\n\t\t\t\n        buf.set_text(str, str.length);\n        var lm = Gtk.SourceLanguageManager.get_default();\n        \n       \n        buf.set_language(lm.get_language(\"vala\"));\n     \n         \n        this.el.grab_focus();\n\n\n       \n        var lines = _this.notices.get_object_member(fname);\n         \n            \n        lines.foreach_member((obj, line, node) => {\n            \n                 Gtk.TextIter iter;\n        //        print(\"get inter\\n\");\n                var eline = int.parse(line) -1 ;\n                 \n                \n                buf.get_iter_at_line( out iter, eline);\n                //print(\"mark line\\n\");\n                var msg  = \"Line: %d\".printf(eline+1);\n                var ar = lines.get_array_member(line);\n                for (var i = 0 ; i < ar.get_length(); i++) {\n\t\t        msg += (msg.length > 0) ? \"\\n\" : \"\";\n\t\t        msg += ar.get_string_element(i);\n\t        }\n                \n                \n                buf.create_source_mark(msg, \"error\", iter);\n            } );\n    }\n    // jump to the line...\n    Gtk.TextIter liter;\n    buf.get_iter_at_line (out liter,  line);\n    print(\"Scroll to \\n\");\n    this.el.scroll_to_iter (liter, 0.0f, false, 0.0f, 0.5f);\n    print(\"End Scroll to \\n\");\n\n\n}\n",
114            "* pack" : "add",
115            "xtype" : "SourceView",
116            "$ xns" : "Gtk",
117            "gboolean show_line_numbers" : true,
118            "string curfname" : "",
119            "gboolean editable" : false
120           }
121          ]
122         }
123        ]
124       }
125      ]
126     }
127    ]
128   }
129  ]
130 }