fix last merge - highlight support
[roobuilder] / src / Builder4 / WindowLeftTree.bjs
index 5ac6726..fad8976 100644 (file)
@@ -12,6 +12,7 @@
    "bool hexpand" : true,
    "bool vexpand" : true,
    "id" : "WindowLeftTree",
+   "int last_error_counter" : "-1",
    "items" : [
     {
      "$ xns" : "Gtk",
         " border-top-style: solid;",
         " border-top-color: #88a3bc;",
         "}",
+        ".node-err  {",
+        " border-top-width: 5px;",
+        " border-top-style: solid;",
+        " border-top-color: red;",
+        " border-bottom-width: 5px; ",
+        " border-bottom-style: solid;",
+        " border-bottom-color: red;",
+        "}",
+        ".node-warn  {",
+        " border-top-width: 5px;",
+        " border-top-style: solid;",
+        " border-top-color: #ABF4EB;",
+        " border-bottom-width: 5px; ",
+        " border-bottom-style: solid;",
+        " border-bottom-color: #ABF4EB;",
+        "}",
+        ".node-depr  {",
+        " border-top-width: 5px;",
+        " border-top-style: solid;",
+        " border-top-color: #EEA9FF;",
+        " border-bottom-width: 5px; ",
+        " border-bottom-style: solid;",
+        " border-bottom-color: #EEA9FF;",
+        "}",
+        "",
         "#left-tree-view indent {",
         "-gtk-icon-size : 2px;",
         "}",
             "\treturn this.el;",
             "}"
            ],
+           "| int nodeToRow" : [
+            "(JsRender.Node node) ",
+            "{",
+            "\tvar row = -1;",
+            "\tvar s = _this.view.el.model as Gtk.SingleSelection;",
+            "\tfor (var i = 0; i < s.n_items; i++) {",
+            "\t\t//GLib.debug(\"check node %s\", s.get_item(i).get_type().name());",
+            "\t\tvar lr = s.get_item(i) as Gtk.TreeListRow;",
+            "\t\tGLib.debug(\"check node %s\", lr.get_item().get_type().name());",
+            "\t\tif ((lr.get_item() as JsRender.Node).oid == node.oid) {",
+            "\t\t\treturn i;",
+            "\t\t\t",
+            "\t\t}",
+            "\t}",
+            "\treturn -1;\t\t\t",
+            "\t",
+            "",
+            "}"
+           ],
            "| void deleteSelected" : [
             "() {",
             "",
             "    _this.main_window.windowstate.leftTreeNodeSelected(null);",
             "    // needed???",
             "    _this.main_window.windowstate.file = f;",
-            "    ",
+            "    _this.last_error_counter = -1;",
             "   ",
             "    if (f.tree == null) {",
             "\t    try {",
             "    // if it's still null?",
             "    if (f.tree == null) {",
             "\t\t_this.main_window.windowstate.showAddObject(_this.view.el, null);",
-            "    ",
+            "    \t_this.updateErrors();",
             "        return;",
             "    }",
             "  \tm.append(f.tree);",
-            "  \t",
-            "  \t// expand???",
-            "",
-            "/*",
-            "    if (f.tree.readItems().size < 1) {",
-            "        // single item..",
-            "        ",
-            "        //this.get('/Window.leftvpaned').el.set_position(80);",
-            "        // select first...",
-            "        _this.view.el.set_cursor( ",
-            "            new  Gtk.TreePath.from_string(\"0\"), null, false);",
-            "        ",
-            "        ",
-            "    } else {",
-            "          //this.get('/Window.leftvpaned').el.set_position(200);",
-            "    }",
-            "  */  ",
-            "    ",
-            "    ",
-            "",
-            "    //_this.maincol.el.set_max_width(_this.viewwin.el.get_allocated_width() - 32);",
+            "\t_this.updateErrors();",
             " ",
             "    _this.selmodel.el.set_selected(Gtk.INVALID_LIST_POSITION);",
-            "   _this.updateErrors();",
+            "   ",
             "    return;",
             " ",
             "            ",
            "| void selectNode" : [
             "(JsRender.Node node) ",
             "{",
-            "\tvar row = -1;",
-            "\tvar s = (Gtk.SingleSelection)_this.view.el.model;",
-            "\tfor (var i = 0; i < s.n_items; i++) {",
-            "\t\t//GLib.debug(\"check node %s\", s.get_item(i).get_type().name());",
-            "\t\tvar lr = (Gtk.TreeListRow)s.get_item(i);",
-            "\t\tGLib.debug(\"check node %s\", lr.get_item().get_type().name());",
-            "\t\tif (((JsRender.Node)lr.get_item()).oid == node.oid) {",
-            "\t\t\trow  = i;",
-            "\t\t\tbreak;",
-            "\t\t}",
-            "\t}",
+            "\tvar row = this.nodeToRow(node);",
+            "\tvar s = _this.view.el.model as Gtk.SingleSelection;",
+            "\t ",
             "\tif (row < 0) {",
             "\t\t// select none?",
             "\t\tGLib.debug(\"Could not find node\");",
     "}",
     "",
     ""
+   ],
+   "| void removeErrors" : [
+    "() {",
+    "\tvar  child = this.view.el.get_first_child(); ",
+    " ",
+    "\tvar reading_header = true;",
+    " ",
+    "\twhile (child != null) {",
+    "\t\tGLib.debug(\"Got %s\", child.get_type().name());",
+    "\t   ",
+    "\t   if (reading_header) {",
+    "\t\t\t",
+    "",
+    "\t\t\tif (child.get_type().name() != \"GtkColumnListView\") {",
+    "\t\t\t   ",
+    "\t\t\t\tchild = child.get_next_sibling();",
+    "\t\t\t\tcontinue;",
+    "\t\t\t}",
+    "\t\t\t// should be columnlistview",
+    "\t\t\tchild = child.get_first_child(); ",
+    "\t\t ",
+    "\t\t ",
+    "\t\t\t",
+    "\t\t\treading_header = false;",
+    "\t\t\t ",
+    "\t    }",
+    "\t    ",
+    "\t  \tif (!child.has_css_class(\"node-err\")) {",
+    "\t\t\tchild.remove_css_class(\"node-err\");",
+    "\t\t}",
+    "\t\tif (!child.has_css_class(\"node-warn\")) {",
+    "\t\t\tchild.remove_css_class(\"node-warn\");",
+    "\t\t}",
+    "\t\t",
+    "\t\tif (!child.has_css_class(\"node-depr\")) {",
+    "\t\t\tchild.remove_css_class(\"node-depr\");",
+    "\t\t}",
+    "\t\t",
+    "        child = child.get_next_sibling(); ",
+    "\t}",
+    "\t//GLib.debug(\"Rturning null\");",
+    "     ",
+    "}"
+   ],
+   "| void updateErrors" : [
+    "() {",
+    "\tvar file = this.getActiveFile();",
+    "\tvar ar = file.getErrors();",
+    "\tif (ar.size < 1) {",
+    "\t\tthis.removeErrors();",
+    "\t\tthis.last_error_counter = file.error_counter ;",
+    "",
+    "\t\treturn;",
+    "\t}",
+    " \tif (this.last_error_counter == file.error_counter) {",
+    "\t\treturn;",
+    "\t}",
+    "\tthis.removeErrors();",
+    "\t",
+    "\tforeach(var diag in ar) { ",
+    "\t",
+    "\t\t ",
+    "//        print(\"get inter\\n\");",
+    "\t    var node= file.lineToNode( (int)diag.range.start.line) ;",
+    "\t    if (node == null) {",
+    "\t    \tcontinue;",
+    "    \t}",
+    "    \tvar row = _this.model.nodeToRow(node);",
+    "    \tif (row < 0) {",
+    "    \t\tcontinue;",
+    "\t\t}",
+    "    \tvar w = this.view.getWidgetAtRow(row);",
+    "    \tif (w == null) {",
+    "    \t\treturn;",
+    "\t\t}",
+    "\t\t// always show errors.",
+    "\t\tvar ed = diag.category.down();",
+    "\t\tif (ed != \"err\" && w.has_css_class(\"node-err\")) {",
+    "\t\t\tcontinue;",
+    "\t\t}",
+    "\t\tif (ed == \"err\" && w.has_css_class(\"node-warn\")) {",
+    "\t\t\tw.remove_css_class(\"node-warn\");",
+    "\t\t}",
+    "\t\tif (ed == \"err\" && w.has_css_class(\"node-depr\")) {",
+    "\t\t\tw.remove_css_class(\"node-depr\");",
+    "\t\t}",
+    "\t\tif (!w.has_css_class(\"node-\"+ ed)) {",
+    "\t\t\tw.add_css_class(\"node-\" + ed);",
+    "\t\t}",
+    "\t\t",
+    "\t}",
+    "\t",
+    "}"
    ]
   }
  ],