"id" : "PopoverEditor",
"int height_request" : 800,
"int width_request" : 900,
- "items" : [
- {
- "$ homogeneous" : false,
- "$ xns" : "Gtk",
- "* pack" : "add",
- "Gtk.Orientation orientation" : "Gtk.Orientation.VERTICAL",
- "Gtk.SourceSearchContext searchcontext" : "null",
- "bool hexpand" : true,
- "int last_search_end" : 0,
- "items" : [
- {
- "$ homogeneous" : false,
- "$ xns" : "Gtk",
- "* pack" : "pack_start,false,true",
- "Gtk.Orientation orientation" : "Gtk.Orientation.HORIZONTAL",
- "items" : [
- {
- "$ xns" : "Gtk",
- "* pack" : "pack_start,false,false",
- "id" : "save_button",
- "label" : "Save",
- "listeners" : {
- "clicked" : [
- " () => { ",
- " _this.saveContents();",
- "}",
- " "
- ]
- },
- "xtype" : "Button"
- },
- {
- "$ xns" : "Gtk",
- "* pack" : "pack_start,true,true",
- "bool editable" : false,
- "id" : "key_edit",
- "int width_request" : 100,
- "xtype" : "Entry"
- },
- {
- "$ xns" : "Gtk",
- "* ctor" : "new Gtk.HScale.with_range (6, 30, 1)",
- "* init" : [
- "{",
- "\tthis.el.set_range(6,30);",
- "\tthis.el.set_value(8);",
- "}",
- ""
- ],
- "* pack" : "pack_end,true,true",
- "bool draw_value" : true,
- "bool has_origin" : true,
- "bool sensitive" : true,
- "int digits" : 0,
- "listeners" : {
- "change_value" : [
- "(st, val ) => {",
- "\t ",
- "\t var description = Pango.FontDescription.from_string(\"monospace\");",
- "\t print(\"resize to %d\", (int)val*1000);",
- " description.set_size((int)val*1000);",
- " _this.view.el.override_font(description);",
- " return false;",
- "}"
- ]
- },
- "xtype" : "HScale"
- }
- ],
- "xtype" : "Box"
- },
- {
- "$ xns" : "Gtk",
- "* init" : "this.el.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);",
- "* pack" : "pack_end,true,true",
- "id" : "RightEditor",
- "items" : [
- {
- "$ Gtk.SourceDrawSpacesFlags draw_spaces" : "Gtk.SourceDrawSpacesFlags.LEADING + Gtk.SourceDrawSpacesFlags.TRAILING + Gtk.SourceDrawSpacesFlags.TAB + Gtk.SourceDrawSpacesFlags.SPACE",
- "$ gboolean auto_indent" : true,
- "$ show_line_numbers" : true,
- "$ xns" : "Gtk",
- "* init" : [
- " ",
- "",
- "\t\tvar description = Pango.FontDescription.from_string(\"monospace\");",
- "\t\tdescription.set_size(8000);",
- "",
- "\t\t this.el.override_font(description);",
- "",
- "\ttry { ",
- "\t\tthis.el.completion.add_provider(new Palete.CompletionProvider(_this));",
- " } catch (GLib.Error e) {}",
- " ",
- "\tthis.el.completion.unblock_interactive();",
- "\tthis.el.completion.select_on_show\t\t\t= true; // select",
- "\tthis.el.completion.show_headers\t\t\t= false;",
- "\tthis.el.completion.remember_info_visibility\t\t= true;",
- " ",
- " ",
- " var attrs = new Gtk.SourceMarkAttributes();",
- " var pink = Gdk.RGBA();",
- " pink.parse ( \"pink\");",
- " attrs.set_background ( pink);",
- " attrs.set_icon_name ( \"process-stop\"); ",
- " attrs.query_tooltip_text.connect(( mark) => {",
- " //print(\"tooltip query? %s\\n\", mark.name);",
- " return mark.name;",
- " });",
- " ",
- " this.el.set_mark_attributes (\"ERR\", attrs, 1);",
- " ",
- " var wattrs = new Gtk.SourceMarkAttributes();",
- " var blue = Gdk.RGBA();",
- " blue.parse ( \"#ABF4EB\");",
- " wattrs.set_background ( blue);",
- " wattrs.set_icon_name ( \"process-stop\"); ",
- " wattrs.query_tooltip_text.connect(( mark) => {",
- " //print(\"tooltip query? %s\\n\", mark.name);",
- " return mark.name;",
- " });",
- " ",
- " this.el.set_mark_attributes (\"WARN\", wattrs, 1);",
- " ",
- " ",
- " ",
- " var dattrs = new Gtk.SourceMarkAttributes();",
- " var purple = Gdk.RGBA();",
- " purple.parse ( \"#EEA9FF\");",
- " dattrs.set_background ( purple);",
- " dattrs.set_icon_name ( \"process-stop\"); ",
- " dattrs.query_tooltip_text.connect(( mark) => {",
- " //print(\"tooltip query? %s\\n\", mark.name);",
- " return mark.name;",
- " });",
- " ",
- " this.el.set_mark_attributes (\"DEPR\", dattrs, 1);",
- " ",
- " "
- ],
- "* pack" : "add",
- "bool insert_spaces_instead_of_tabs" : true,
- "gboolean highlight_current_line" : true,
- "gboolean show_line_marks" : true,
- "id" : "view",
- "indent_width" : 4,
- "items" : [
- {
- "$ xns" : "Gtk",
- "* pack" : "set_buffer",
- "bool check_queued" : false,
- "bool check_running" : false,
- "id" : "buffer",
- "int error_line" : "-1",
- "listeners" : {
- "changed" : [
- " () => {",
- " // check syntax??",
- " // ??needed..??",
- " _this.save_button.el.sensitive = true;",
- " print(\"EDITOR CHANGED\");",
- " this.checkSyntax();",
- " ",
- " _this.dirty = true;",
- "",
- " // this.get('/LeftPanel.model').changed( str , false);",
- " return ;",
- "}",
- "",
- " ",
- ""
- ]
- },
- "xtype" : "SourceBuffer",
- "| bool checkSyntax" : [
- " () {",
- " ",
- " if (this.check_running) {",
- " print(\"Check is running\\n\");",
- " if (this.check_queued) { ",
- " print(\"Check is already queued\");",
- " return true;",
- " }",
- " this.check_queued = true;",
- " print(\"Adding queued Check \");",
- " GLib.Timeout.add_seconds(1, () => {",
- " this.check_queued = false;",
- " ",
- " this.checkSyntax();",
- " return false;",
- " });",
- " ",
- "",
- " return true;",
- " }",
- " var str = this.toString();",
- " ",
- " // needed???",
- " if (this.error_line > 0) {",
- " Gtk.TextIter start;",
- " Gtk.TextIter end; ",
- " this.el.get_bounds (out start, out end);",
- "",
- " this.el.remove_source_marks (start, end, null);",
- " }",
- " if (str.length < 1) {",
- " print(\"checkSyntax - empty string?\\n\");",
- " return true;",
- " }",
- " ",
- " if (_this.file.xtype == \"PlainFile\") {",
- " ",
- " // assume it's gtk...",
- " this.check_running = true;",
- " ",
- " if (!_this.window.windowstate.valasource.checkPlainFileSpawn(",
- "\t _this.file,",
- "\t str",
- "\t )) {",
- " this.check_running = false;",
- " }",
- "\t",
- " return true;",
- " ",
- " }",
- " if (_this.file == null) {",
- " return true;",
- " }",
- " var p = _this.file.project.palete;",
- " ",
- "",
- " ",
- " this.check_running = true;",
- " ",
- " ",
- " if (_this.file.language == \"js\") {",
- " this.check_running = false;",
- " print(\"calling validate javascript\\n\"); ",
- " Gee.HashMap<int,string> errors;",
- " p.javascriptHasErrors(",
- " \t\t_this.window.windowstate,",
- " str, ",
- " _this.key, ",
- " _this.ptype,",
- " _this.file,",
- " ",
- " out errors",
- " );",
- " return this.highlightErrors(errors); ",
- " ",
- " }",
- " ",
- " ",
- " print(\"calling validate vala\\n\"); ",
- " // clear the buttons.",
- " ",
- " ",
- " if (! _this.window.windowstate.valasource.checkFileWithNodePropChange(",
- " _this.file,",
- " _this.node,",
- " _this.key, ",
- " _this.ptype,",
- " str",
- " )) {",
- " this.check_running = false;",
- " } ",
- " ",
- " ",
- " ",
- " //print(\"done mark line\\n\");",
- " ",
- " return true; // at present allow saving - even if it's invalid..",
- "}",
- ""
- ],
- "| string toString" : [
- " () {",
- " ",
- " Gtk.TextIter s;",
- " Gtk.TextIter e;",
- " this.el.get_start_iter(out s);",
- " this.el.get_end_iter(out e);",
- " var ret = this.el.get_text(s,e,true);",
- " //print(\"TO STRING? \" + ret);",
- " return ret;",
- "}",
- " "
- ],
- "| bool highlightErrors" : [
- "( Gee.HashMap<int,string> validate_res) {",
- " ",
- " this.error_line = validate_res.size;",
- "",
- " if (this.error_line < 1) {",
- " return true;",
- " }",
- " var tlines = this.el.get_line_count ();",
- " Gtk.TextIter iter;",
- " var valiter = validate_res.map_iterator();",
- " while (valiter.next()) {",
- " ",
- " // print(\"get inter\\n\");",
- " var eline = valiter.get_key();",
- " if (eline > tlines) {",
- " continue;",
- " }",
- " this.el.get_iter_at_line( out iter, eline);",
- " //print(\"mark line\\n\");",
- " this.el.create_source_mark(valiter.get_value(), \"ERR\", iter);",
- " } ",
- " return false;",
- " }"
- ],
- "| bool highlightErrorsJson" : [
- "(string type, Json.Object obj) {",
- " Gtk.TextIter start;",
- " Gtk.TextIter end; ",
- " this.el.get_bounds (out start, out end);",
- " ",
- " this.el.remove_source_marks (start, end, type);",
- " ",
- " ",
- " // we should highlight other types of errors..",
- " ",
- " if (!obj.has_member(type)) {",
- " print(\"Return has no errors\\n\");",
- " return true;",
- " }",
- " ",
- " ",
- " ",
- " ",
- " var err = obj.get_object_member(type);",
- " ",
- " ",
- " if (_this.file == null) {",
- " return true;",
- " ",
- " }",
- " var valafn = _this.file.path;",
- " ",
- " if (_this.file.xtype != \"PlainFile\") {",
- "",
- "",
- " ",
- " ",
- " valafn = \"\";",
- " try { ",
- " var regex = new Regex(\"\\\\.bjs$\");",
- " // should not happen",
- " ",
- " ",
- " valafn = regex.replace(_this.file.path,_this.file.path.length , 0 , \".vala\");",
- " } catch (GLib.RegexError e) {",
- " return true;",
- " } ",
- "",
- "",
- "",
- " }",
- " if (!err.has_member(valafn)) {",
- " print(\"File path has no errors\\n\");",
- " return true;",
- " }",
- "",
- " var lines = err.get_object_member(valafn);",
- " ",
- " var offset = 1;",
- " if (obj.has_member(\"line_offset\")) {",
- " offset = (int)obj.get_int_member(\"line_offset\") + 1;",
- " }",
- " ",
- "",
- " ",
- " ",
- " var tlines = this.el.get_line_count () +1;",
- " ",
- " lines.foreach_member((obj, line, node) => {",
- " ",
- " Gtk.TextIter iter;",
- " // print(\"get inter\\n\");",
- " var eline = int.parse(line) - offset;",
- " print(\"GOT ERROR on line %s -- converted to %d\\n\", line,eline);",
- " ",
- " ",
- " if (eline > tlines || eline < 0) {",
- " return;",
- " }",
- " this.el.get_iter_at_line( out iter, eline);",
- " //print(\"mark line\\n\");",
- " var msg = \"Line: %d\".printf(eline+1);",
- " var ar = lines.get_array_member(line);",
- " for (var i = 0 ; i < ar.get_length(); i++) {",
- "\t\t msg += (msg.length > 0) ? \"\\n\" : \"\";",
- "\t\t msg += ar.get_string_element(i);",
- "\t }",
- " ",
- " ",
- " this.el.create_source_mark(msg, type, iter);",
- " } );",
- " return false;",
- " ",
- "",
- "",
- "",
- "",
- "}",
- ""
- ]
- }
- ],
- "listeners" : {
- "key_release_event" : [
- " (event) => {",
- " ",
- " if (event.keyval == 115 && (event.state & Gdk.ModifierType.CONTROL_MASK ) > 0 ) {",
- " print(\"SAVE: ctrl-S pressed\");",
- " _this.saveContents();",
- " return false;",
- " }",
- " // print(event.key.keyval)",
- " ",
- " return false;",
- "",
- "} ",
- "",
- " "
- ]
- },
- "uint tab_width" : 4,
- "xtype" : "SourceView",
- "| void load" : [
- " (string str) {",
- "",
- "// show the help page for the active node..",
- " //this.get('/Help').show();",
- "",
- "",
- " // this.get('/BottomPane').el.set_current_page(0);",
- " var buf = (Gtk.SourceBuffer)this.el.get_buffer();",
- " buf.set_text(str, str.length);",
- " buf.set_undo_manager(null);",
- " ",
- " var lm = Gtk.SourceLanguageManager.get_default();",
- " var lang = \"vala\";",
- " if (_this.file != null) {",
- " lang = _this.file.language;",
- " }",
- " print(\"lang=%s, content_type = %s\\n\", lang, _this.file.content_type);",
- " var lg = _this.file.content_type.length > 0 ?",
- " lm.guess_language(_this.file.path, _this.file.content_type) :",
- " lm.get_language(lang);",
- " ",
- " ",
- " ((Gtk.SourceBuffer)(this.el.get_buffer())) .set_language(lg); ",
- "",
- " this.el.insert_spaces_instead_of_tabs = true;",
- " if (lg != null) {",
- "\t\tprint(\"sourcelanguage = %s\\n\", lg.name);",
- "\t\tif (lg.name == \"Vala\") {",
- "\t\t this.el.insert_spaces_instead_of_tabs = false;",
- "\t\t}",
- " }",
- " _this.dirty = false;",
- " this.el.grab_focus();",
- " _this.save_button.el.sensitive = false;",
- "}"
- ]
- }
- ],
- "xtype" : "ScrolledWindow"
- }
- ],
- "xtype" : "Box"
- }
- ],
"string prop_or_listener" : "\"\"",
"xtype" : "Popover",
"| bool saveContents" : [
}
return _PopoverEditor;
}
- public Xcls_save_button save_button;
- public Xcls_key_edit key_edit;
- public Xcls_RightEditor RightEditor;
- public Xcls_view view;
- public Xcls_buffer buffer;
// my vars (def)
public Xcls_MainWindow window;
this.el.hexpand = false;
this.el.modal = true;
this.el.position = Gtk.PositionType.RIGHT;
- var child_0 = new Xcls_Box2( _this );
- child_0.ref();
- this.el.add ( child_0.el );
}
// user defined functions
}
}
- public class Xcls_Box2 : Object
- {
- public Gtk.Box el;
- private Xcls_PopoverEditor _this;
-
-
- // my vars (def)
- public int last_search_end;
- public Gtk.SourceSearchContext searchcontext;
-
- // ctor
- public Xcls_Box2(Xcls_PopoverEditor _owner )
- {
- _this = _owner;
- this.el = new Gtk.Box( Gtk.Orientation.VERTICAL, 0 );
-
- // my vars (dec)
- this.last_search_end = 0;
- this.searchcontext = null;
-
- // set gobject values
- this.el.homogeneous = false;
- this.el.hexpand = true;
- var child_0 = new Xcls_Box3( _this );
- child_0.ref();
- this.el.pack_start ( child_0.el , false,true );
- var child_1 = new Xcls_RightEditor( _this );
- child_1.ref();
- this.el.pack_end ( child_1.el , true,true );
- }
-
- // user defined functions
- }
- public class Xcls_Box3 : Object
- {
- public Gtk.Box el;
- private Xcls_PopoverEditor _this;
-
-
- // my vars (def)
-
- // ctor
- public Xcls_Box3(Xcls_PopoverEditor _owner )
- {
- _this = _owner;
- this.el = new Gtk.Box( Gtk.Orientation.HORIZONTAL, 0 );
-
- // my vars (dec)
-
- // set gobject values
- this.el.homogeneous = false;
- var child_0 = new Xcls_save_button( _this );
- child_0.ref();
- this.el.pack_start ( child_0.el , false,false );
- var child_1 = new Xcls_key_edit( _this );
- child_1.ref();
- this.el.pack_start ( child_1.el , true,true );
- var child_2 = new Xcls_HScale6( _this );
- child_2.ref();
- this.el.pack_end ( child_2.el , true,true );
- }
-
- // user defined functions
- }
- public class Xcls_save_button : Object
- {
- public Gtk.Button el;
- private Xcls_PopoverEditor _this;
-
-
- // my vars (def)
-
- // ctor
- public Xcls_save_button(Xcls_PopoverEditor _owner )
- {
- _this = _owner;
- _this.save_button = this;
- this.el = new Gtk.Button();
-
- // my vars (dec)
-
- // set gobject values
- this.el.label = "Save";
-
- //listeners
- this.el.clicked.connect( () => {
- _this.saveContents();
- });
- }
-
- // user defined functions
- }
-
- public class Xcls_key_edit : Object
- {
- public Gtk.Entry el;
- private Xcls_PopoverEditor _this;
-
-
- // my vars (def)
-
- // ctor
- public Xcls_key_edit(Xcls_PopoverEditor _owner )
- {
- _this = _owner;
- _this.key_edit = this;
- this.el = new Gtk.Entry();
-
- // my vars (dec)
-
- // set gobject values
- this.el.width_request = 100;
- this.el.editable = false;
- }
-
- // user defined functions
- }
-
- public class Xcls_HScale6 : Object
- {
- public Gtk.HScale el;
- private Xcls_PopoverEditor _this;
-
-
- // my vars (def)
-
- // ctor
- public Xcls_HScale6(Xcls_PopoverEditor _owner )
- {
- _this = _owner;
- this.el = new Gtk.HScale.with_range (6, 30, 1);
-
- // my vars (dec)
-
- // set gobject values
- this.el.has_origin = true;
- this.el.draw_value = true;
- this.el.digits = 0;
- this.el.sensitive = true;
-
- // init method
-
- {
- this.el.set_range(6,30);
- this.el.set_value(8);
- }
-
- //listeners
- this.el.change_value.connect( (st, val ) => {
-
- var description = Pango.FontDescription.from_string("monospace");
- print("resize to %d", (int)val*1000);
- description.set_size((int)val*1000);
- _this.view.el.override_font(description);
- return false;
- });
- }
-
- // user defined functions
- }
-
-
- public class Xcls_RightEditor : Object
- {
- public Gtk.ScrolledWindow el;
- private Xcls_PopoverEditor _this;
-
-
- // my vars (def)
-
- // ctor
- public Xcls_RightEditor(Xcls_PopoverEditor _owner )
- {
- _this = _owner;
- _this.RightEditor = this;
- this.el = new Gtk.ScrolledWindow( null, null );
-
- // my vars (dec)
-
- // set gobject values
- var child_0 = new Xcls_view( _this );
- child_0.ref();
- this.el.add ( child_0.el );
-
- // init method
-
- this.el.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);
- }
-
- // user defined functions
- }
- public class Xcls_view : Object
- {
- public Gtk.SourceView el;
- private Xcls_PopoverEditor _this;
-
-
- // my vars (def)
-
- // ctor
- public Xcls_view(Xcls_PopoverEditor _owner )
- {
- _this = _owner;
- _this.view = this;
- this.el = new Gtk.SourceView();
-
- // my vars (dec)
-
- // set gobject values
- this.el.auto_indent = true;
- this.el.indent_width = 4;
- this.el.show_line_marks = true;
- this.el.insert_spaces_instead_of_tabs = true;
- this.el.show_line_numbers = true;
- this.el.draw_spaces = Gtk.SourceDrawSpacesFlags.LEADING + Gtk.SourceDrawSpacesFlags.TRAILING + Gtk.SourceDrawSpacesFlags.TAB + Gtk.SourceDrawSpacesFlags.SPACE;
- this.el.tab_width = 4;
- this.el.highlight_current_line = true;
- var child_0 = new Xcls_buffer( _this );
- child_0.ref();
- this.el.set_buffer ( child_0.el );
-
- // init method
-
- var description = Pango.FontDescription.from_string("monospace");
- description.set_size(8000);
-
- this.el.override_font(description);
-
- try {
- this.el.completion.add_provider(new Palete.CompletionProvider(_this));
- } catch (GLib.Error e) {}
-
- this.el.completion.unblock_interactive();
- this.el.completion.select_on_show = true; // select
- this.el.completion.show_headers = false;
- this.el.completion.remember_info_visibility = true;
-
-
- var attrs = new Gtk.SourceMarkAttributes();
- var pink = Gdk.RGBA();
- pink.parse ( "pink");
- attrs.set_background ( pink);
- attrs.set_icon_name ( "process-stop");
- attrs.query_tooltip_text.connect(( mark) => {
- //print("tooltip query? %s\n", mark.name);
- return mark.name;
- });
-
- this.el.set_mark_attributes ("ERR", attrs, 1);
-
- var wattrs = new Gtk.SourceMarkAttributes();
- var blue = Gdk.RGBA();
- blue.parse ( "#ABF4EB");
- wattrs.set_background ( blue);
- wattrs.set_icon_name ( "process-stop");
- wattrs.query_tooltip_text.connect(( mark) => {
- //print("tooltip query? %s\n", mark.name);
- return mark.name;
- });
-
- this.el.set_mark_attributes ("WARN", wattrs, 1);
-
-
-
- var dattrs = new Gtk.SourceMarkAttributes();
- var purple = Gdk.RGBA();
- purple.parse ( "#EEA9FF");
- dattrs.set_background ( purple);
- dattrs.set_icon_name ( "process-stop");
- dattrs.query_tooltip_text.connect(( mark) => {
- //print("tooltip query? %s\n", mark.name);
- return mark.name;
- });
-
- this.el.set_mark_attributes ("DEPR", dattrs, 1);
-
- //listeners
- this.el.key_release_event.connect( (event) => {
-
- if (event.keyval == 115 && (event.state & Gdk.ModifierType.CONTROL_MASK ) > 0 ) {
- print("SAVE: ctrl-S pressed");
- _this.saveContents();
- return false;
- }
- // print(event.key.keyval)
-
- return false;
-
- });
- }
-
- // user defined functions
- public void load (string str) {
-
- // show the help page for the active node..
- //this.get('/Help').show();
-
-
- // this.get('/BottomPane').el.set_current_page(0);
- var buf = (Gtk.SourceBuffer)this.el.get_buffer();
- buf.set_text(str, str.length);
- buf.set_undo_manager(null);
-
- var lm = Gtk.SourceLanguageManager.get_default();
- var lang = "vala";
- if (_this.file != null) {
- lang = _this.file.language;
- }
- print("lang=%s, content_type = %s\n", lang, _this.file.content_type);
- var lg = _this.file.content_type.length > 0 ?
- lm.guess_language(_this.file.path, _this.file.content_type) :
- lm.get_language(lang);
-
-
- ((Gtk.SourceBuffer)(this.el.get_buffer())) .set_language(lg);
-
- this.el.insert_spaces_instead_of_tabs = true;
- if (lg != null) {
- print("sourcelanguage = %s\n", lg.name);
- if (lg.name == "Vala") {
- this.el.insert_spaces_instead_of_tabs = false;
- }
- }
- _this.dirty = false;
- this.el.grab_focus();
- _this.save_button.el.sensitive = false;
- }
- }
- public class Xcls_buffer : Object
- {
- public Gtk.SourceBuffer el;
- private Xcls_PopoverEditor _this;
-
-
- // my vars (def)
- public bool check_queued;
- public int error_line;
- public bool check_running;
-
- // ctor
- public Xcls_buffer(Xcls_PopoverEditor _owner )
- {
- _this = _owner;
- _this.buffer = this;
- this.el = new Gtk.SourceBuffer( null );
-
- // my vars (dec)
- this.check_queued = false;
- this.error_line = -1;
- this.check_running = false;
-
- // set gobject values
-
- //listeners
- this.el.changed.connect( () => {
- // check syntax??
- // ??needed..??
- _this.save_button.el.sensitive = true;
- print("EDITOR CHANGED");
- this.checkSyntax();
-
- _this.dirty = true;
-
- // this.get('/LeftPanel.model').changed( str , false);
- return ;
- });
- }
-
- // user defined functions
- public bool highlightErrors ( Gee.HashMap<int,string> validate_res) {
-
- this.error_line = validate_res.size;
-
- if (this.error_line < 1) {
- return true;
- }
- var tlines = this.el.get_line_count ();
- Gtk.TextIter iter;
- var valiter = validate_res.map_iterator();
- while (valiter.next()) {
-
- // print("get inter\n");
- var eline = valiter.get_key();
- if (eline > tlines) {
- continue;
- }
- this.el.get_iter_at_line( out iter, eline);
- //print("mark line\n");
- this.el.create_source_mark(valiter.get_value(), "ERR", iter);
- }
- return false;
- }
- public bool checkSyntax () {
-
- if (this.check_running) {
- print("Check is running\n");
- if (this.check_queued) {
- print("Check is already queued");
- return true;
- }
- this.check_queued = true;
- print("Adding queued Check ");
- GLib.Timeout.add_seconds(1, () => {
- this.check_queued = false;
-
- this.checkSyntax();
- return false;
- });
-
-
- return true;
- }
- var str = this.toString();
-
- // needed???
- if (this.error_line > 0) {
- Gtk.TextIter start;
- Gtk.TextIter end;
- this.el.get_bounds (out start, out end);
-
- this.el.remove_source_marks (start, end, null);
- }
- if (str.length < 1) {
- print("checkSyntax - empty string?\n");
- return true;
- }
-
- if (_this.file.xtype == "PlainFile") {
-
- // assume it's gtk...
- this.check_running = true;
-
- if (!_this.window.windowstate.valasource.checkPlainFileSpawn(
- _this.file,
- str
- )) {
- this.check_running = false;
- }
-
- return true;
-
- }
- if (_this.file == null) {
- return true;
- }
- var p = _this.file.project.palete;
-
-
-
- this.check_running = true;
-
-
- if (_this.file.language == "js") {
- this.check_running = false;
- print("calling validate javascript\n");
- Gee.HashMap<int,string> errors;
- p.javascriptHasErrors(
- _this.window.windowstate,
- str,
- _this.key,
- _this.ptype,
- _this.file,
-
- out errors
- );
- return this.highlightErrors(errors);
-
- }
-
-
- print("calling validate vala\n");
- // clear the buttons.
-
-
- if (! _this.window.windowstate.valasource.checkFileWithNodePropChange(
- _this.file,
- _this.node,
- _this.key,
- _this.ptype,
- str
- )) {
- this.check_running = false;
- }
-
-
-
- //print("done mark line\n");
-
- return true; // at present allow saving - even if it's invalid..
- }
- public string toString () {
-
- Gtk.TextIter s;
- Gtk.TextIter e;
- this.el.get_start_iter(out s);
- this.el.get_end_iter(out e);
- var ret = this.el.get_text(s,e,true);
- //print("TO STRING? " + ret);
- return ret;
- }
- public bool highlightErrorsJson (string type, Json.Object obj) {
- Gtk.TextIter start;
- Gtk.TextIter end;
- this.el.get_bounds (out start, out end);
-
- this.el.remove_source_marks (start, end, type);
-
-
- // we should highlight other types of errors..
-
- if (!obj.has_member(type)) {
- print("Return has no errors\n");
- return true;
- }
-
-
-
-
- var err = obj.get_object_member(type);
-
-
- if (_this.file == null) {
- return true;
-
- }
- var valafn = _this.file.path;
-
- if (_this.file.xtype != "PlainFile") {
-
-
-
-
- valafn = "";
- try {
- var regex = new Regex("\\.bjs$");
- // should not happen
-
-
- valafn = regex.replace(_this.file.path,_this.file.path.length , 0 , ".vala");
- } catch (GLib.RegexError e) {
- return true;
- }
-
-
-
- }
- if (!err.has_member(valafn)) {
- print("File path has no errors\n");
- return true;
- }
-
- var lines = err.get_object_member(valafn);
-
- var offset = 1;
- if (obj.has_member("line_offset")) {
- offset = (int)obj.get_int_member("line_offset") + 1;
- }
-
-
-
-
- var tlines = this.el.get_line_count () +1;
-
- lines.foreach_member((obj, line, node) => {
-
- Gtk.TextIter iter;
- // print("get inter\n");
- var eline = int.parse(line) - offset;
- print("GOT ERROR on line %s -- converted to %d\n", line,eline);
-
-
- if (eline > tlines || eline < 0) {
- return;
- }
- this.el.get_iter_at_line( out iter, eline);
- //print("mark line\n");
- var msg = "Line: %d".printf(eline+1);
- var ar = lines.get_array_member(line);
- for (var i = 0 ; i < ar.get_length(); i++) {
- msg += (msg.length > 0) ? "\n" : "";
- msg += ar.get_string_element(i);
- }
-
-
- this.el.create_source_mark(msg, type, iter);
- } );
- return false;
-
-
-
-
-
- }
- }
-
-
-
-
}