public signal void show_add_props (string type);
public signal bool stop_editor ();
public Xcls_MainWindow main_window;
+ public int last_error_counter;
public signal void changed ();
public JsRender.JsRender file;
public JsRender.Node node;
this.loading = false;
this.allow_edit = false;
this.main_window = null;
+ this.last_error_counter = -1;
// set gobject values
this.el.homogeneous = false ;
+ }
+ public void updateErrors () {
+ var file = this.file;
+ var ar = file.getErrors();
+ if (ar.size < 1) {
+ this.removeErrors();
+ this.last_error_counter = file.error_counter ;
+
+ return;
+ }
+ if (this.last_error_counter == file.error_counter) {
+ return;
+ }
+ this.removeErrors();
+
+ foreach(var diag in ar) {
+
+
+ // print("get inter\n");
+ var node= file.lineToNode( (int)diag.range.start.line) ;
+ if (node == null || node.oid != this.node.oid) {
+ continue;
+ }
+ var prop = node.lineToProp( (int)diag.range.start.line) ;
+
+ var row = _this.selmodel.propToRow(prop);
+ if (row < 0) {
+ continue;
+ }
+ var w = this.view.getWidgetAtRow(row);
+ if (w == null) {
+ return;
+ }
+ var ed = diag.category.down();
+ if (ed != "err" && w.has_css_class("node-err")) {
+ continue;
+ }
+ if (ed == "err" && w.has_css_class("node-warn")) {
+ w.remove_css_class("node-warn");
+ }
+ if (ed == "err" && w.has_css_class("node-depr")) {
+ w.remove_css_class("node-depr");
+ }
+ if (!w.has_css_class("node-"+ ed)) {
+ w.add_css_class("node-" + ed);
+ }
+
+ }
+
}
public string keyFormat (string val, string type) {
_this.changed();
*/
}
+ public void removeErrors () {
+ var child = this.view.el.get_first_child();
+
+ var reading_header = true;
+
+ while (child != null) {
+ GLib.debug("Got %s", child.get_type().name());
+
+ if (reading_header) {
+
+
+ if (child.get_type().name() != "GtkColumnListView") {
+
+ child = child.get_next_sibling();
+ continue;
+ }
+ // should be columnlistview
+ child = child.get_first_child();
+
+
+
+ reading_header = false;
+
+ }
+
+ if (child.has_css_class("node-err")) {
+ child.remove_css_class("node-err");
+ }
+ if (child.has_css_class("node-warn")) {
+ child.remove_css_class("node-warn");
+ }
+
+ if (child.has_css_class("node-depr")) {
+ child.remove_css_class("node-depr");
+ }
+
+ child = child.get_next_sibling();
+ }
+ //GLib.debug("Rturning null");
+
+ }
public void a_addProp (JsRender.NodeProp prop) {
// info includes key, val, skel, etype..
//console.dump(info);
this.loading = false;
this.selmodel.el.set_selected(Gtk.INVALID_LIST_POSITION);
+ this.updateErrors();
// clear selection?
//this.model.el.set_sort_column_id(4,Gtk.SortType.ASCENDING); // sort by real key..
}
child = child.get_first_child();
reading_header = false;
+ continue;
}
if (child.get_type().name() != "GtkColumnViewRowWidget") {
child = child.get_next_sibling();
}
// user defined functions
+ public int propToRow (JsRender.NodeProp prop) {
+ for (var i = 0 ; i < this.el.n_items; i++) {
+ var r = (JsRender.NodeProp)this.el.get_item(i);
+ if (r.equals(prop)) {
+ return i;
+
+ }
+ }
+ return -1;
+
+ }
public void startEditing (JsRender.NodeProp prop) {
// should we call select?? - caller does int (from windowstate)