1 static Xcls_ValaCompileErrors _ValaCompileErrors;
3 public class Xcls_ValaCompileErrors : Object
6 private Xcls_ValaCompileErrors _this;
8 public static Xcls_ValaCompileErrors singleton()
10 if (_ValaCompileErrors == null) {
11 _ValaCompileErrors= new Xcls_ValaCompileErrors();
13 return _ValaCompileErrors;
15 public Xcls_compile_view compile_view;
16 public Xcls_hpane hpane;
17 public Xcls_compile_tree compile_tree;
18 public Xcls_compile_result_store compile_result_store;
19 public Xcls_renderer renderer;
20 public Xcls_sourceview sourceview;
23 public Xcls_MainWindow window;
24 public Json.Object notices;
27 public Xcls_ValaCompileErrors()
30 this.el = new Gtk.Popover( null );
35 this.el.width_request = 900;
36 this.el.height_request = 800;
38 this.el.position = Gtk.PositionType.TOP;
39 var child_0 = new Xcls_compile_view( _this );
41 this.el.add ( child_0.el );
44 // user defined functions
45 public void show (Json.Object tree, Gtk.Widget onbtn) {
48 //print("looking for %s\n", id);
49 // loop through parent childnre
52 var store = this.compile_result_store.el;
57 tree.foreach_member((obj, file, node) => {
58 // id line "display text", file
60 var title = GLib.Path.get_basename(GLib.Path.get_dirname( file)) + "/" + GLib.Path.get_basename( file) ;
62 print("Add file %s", title);
63 store.append(out iter, null);
64 var lines = tree.get_object_member(file);
65 title += " (" + lines.get_size().to_string() + ")";
66 store.set(iter, 0, file, 1, 0, 2, title, 3, file,-1);
68 lines.foreach_member((obja, line, nodea) => {
70 var ar = lines.get_array_member(line);
71 for (var i = 0 ; i < ar.get_length(); i++) {
72 msg += (msg.length > 0) ? "\n" : "";
73 msg += ar.get_string_element(i);
76 print("Add line %s", line);
77 store.append(out citer, iter);
81 2, GLib.Markup.escape_text(line + ": " + msg),
91 this.window.el.get_size(out w, out h);
92 this.el.set_size_request( int.max(100, w- 100), int.max(100, h-100));
95 this.hpane.el.set_position(250);
96 if (this.el.relative_to == null) {
97 this.el.set_relative_to(onbtn);
103 public class Xcls_compile_view : Object
106 private Xcls_ValaCompileErrors _this;
112 public Xcls_compile_view(Xcls_ValaCompileErrors _owner )
115 _this.compile_view = this;
116 this.el = new Gtk.VBox( false, 0 );
120 // set gobject values
121 var child_0 = new Xcls_HBox3( _this );
123 this.el.pack_start ( child_0.el , false,false,0 );
124 var child_1 = new Xcls_hpane( _this );
126 this.el.pack_start ( child_1.el , true,true,0 );
129 // user defined functions
131 public class Xcls_HBox3 : Object
134 private Xcls_ValaCompileErrors _this;
140 public Xcls_HBox3(Xcls_ValaCompileErrors _owner )
143 this.el = new Gtk.HBox( true, 0 );
147 // set gobject values
148 var child_0 = new Xcls_Button4( _this );
150 this.el.pack_start ( child_0.el , true,true,0 );
151 var child_1 = new Xcls_Button5( _this );
153 this.el.pack_start ( child_1.el , true,true,0 );
154 var child_2 = new Xcls_Button6( _this );
156 this.el.pack_start ( child_2.el , true,true,0 );
159 // user defined functions
161 public class Xcls_Button4 : Object
163 public Gtk.Button el;
164 private Xcls_ValaCompileErrors _this;
170 public Xcls_Button4(Xcls_ValaCompileErrors _owner )
173 this.el = new Gtk.Button();
177 // set gobject values
178 this.el.label = "Compile and Run";
181 // user defined functions
183 public class Xcls_Button5 : Object
185 public Gtk.Button el;
186 private Xcls_ValaCompileErrors _this;
192 public Xcls_Button5(Xcls_ValaCompileErrors _owner )
195 this.el = new Gtk.Button();
199 // set gobject values
200 this.el.label = "Edit";
203 this.el.clicked.connect( () => {
204 // is the file managed by the builder?
206 var f = _this.sourceview.curfname;
208 Regex regex = new Regex("\\.vala$");
210 var bjsf = regex.replace(f,f.length , 0 , ".bjs");
212 var p = _this.window.project;
216 var jsr = p.getByPath(bjsf);
218 _this.window.windowstate.fileViewOpen(jsr);
228 // user defined functions
230 public class Xcls_Button6 : Object
232 public Gtk.Button el;
233 private Xcls_ValaCompileErrors _this;
239 public Xcls_Button6(Xcls_ValaCompileErrors _owner )
242 this.el = new Gtk.Button();
246 // set gobject values
247 this.el.label = "Save";
248 this.el.visible = false;
251 // user defined functions
253 public class Xcls_hpane : Object
255 public Gtk.HPaned el;
256 private Xcls_ValaCompileErrors _this;
262 public Xcls_hpane(Xcls_ValaCompileErrors _owner )
266 this.el = new Gtk.HPaned();
270 // set gobject values
271 var child_0 = new Xcls_ScrolledWindow8( _this );
273 this.el.add ( child_0.el );
274 var child_1 = new Xcls_ScrolledWindow13( _this );
276 this.el.add ( child_1.el );
279 // user defined functions
281 public class Xcls_ScrolledWindow8 : Object
283 public Gtk.ScrolledWindow el;
284 private Xcls_ValaCompileErrors _this;
290 public Xcls_ScrolledWindow8(Xcls_ValaCompileErrors _owner )
293 this.el = new Gtk.ScrolledWindow( null, null );
297 // set gobject values
298 var child_0 = new Xcls_compile_tree( _this );
300 this.el.add ( child_0.el );
305 this.el.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);
311 // user defined functions
313 public class Xcls_compile_tree : Object
315 public Gtk.TreeView el;
316 private Xcls_ValaCompileErrors _this;
322 public Xcls_compile_tree(Xcls_ValaCompileErrors _owner )
325 _this.compile_tree = this;
326 this.el = new Gtk.TreeView();
330 // set gobject values
331 var child_0 = new Xcls_compile_result_store( _this );
333 this.el.set_model ( child_0.el );
334 var child_1 = new Xcls_column( _this );
336 this.el.append_column ( child_1.el );
341 var description = new Pango.FontDescription();
342 description.set_size(8000);
343 this.el.modify_font(description);
348 this.el.cursor_changed.connect( () => {
349 var sel = this.el.get_selection();
351 if (sel.count_selected_rows() < 1) {
353 print("selected rows < 1\n");
358 //console.log('changed');
362 sel.get_selected(out mod, out iter);
365 0, file + ":" + line,
367 2, GLib.Markup.escape_text(line + ": " + msg),
377 _this.compile_result_store.el.get_value(iter, 3, out value);
378 var fname = (string)value;
380 _this.compile_result_store.el.get_value(iter, 1, out lvalue);
381 var line = (int) lvalue;
383 print ("loadfile %s : %d", fname,line);
385 _this.sourceview.loadFile(fname, line);
393 // user defined functions
395 public class Xcls_compile_result_store : Object
397 public Gtk.TreeStore el;
398 private Xcls_ValaCompileErrors _this;
404 public Xcls_compile_result_store(Xcls_ValaCompileErrors _owner )
407 _this.compile_result_store = this;
408 this.el = new Gtk.TreeStore( 4, typeof(string), typeof(int), typeof(string), typeof(string) );
412 // set gobject values
415 // user defined functions
417 public class Xcls_column : Object
419 public Gtk.TreeViewColumn el;
420 private Xcls_ValaCompileErrors _this;
426 public Xcls_column(Xcls_ValaCompileErrors _owner )
429 this.el = new Gtk.TreeViewColumn();
433 // set gobject values
434 this.el.title = "Compile output";
435 var child_0 = new Xcls_renderer( _this );
437 this.el.pack_start ( child_0.el , true );
442 this.el.add_attribute(_this.renderer.el , "markup", 2 );
447 // user defined functions
449 public class Xcls_renderer : Object
451 public Gtk.CellRendererText el;
452 private Xcls_ValaCompileErrors _this;
458 public Xcls_renderer(Xcls_ValaCompileErrors _owner )
461 _this.renderer = this;
462 this.el = new Gtk.CellRendererText();
466 // set gobject values
469 // user defined functions
471 public class Xcls_ScrolledWindow13 : Object
473 public Gtk.ScrolledWindow el;
474 private Xcls_ValaCompileErrors _this;
480 public Xcls_ScrolledWindow13(Xcls_ValaCompileErrors _owner )
483 this.el = new Gtk.ScrolledWindow( null, null );
487 // set gobject values
488 var child_0 = new Xcls_sourceview( _this );
490 this.el.add ( child_0.el );
493 // user defined functions
495 public class Xcls_sourceview : Object
497 public Gtk.SourceView el;
498 private Xcls_ValaCompileErrors _this;
502 public string curfname;
505 public Xcls_sourceview(Xcls_ValaCompileErrors _owner )
508 _this.sourceview = this;
509 this.el = new Gtk.SourceView();
513 // set gobject values
514 this.el.editable = false;
515 this.el.show_line_marks = true;
516 this.el.show_line_numbers = true;
522 var description = Pango.FontDescription.from_string("monospace");
523 description.set_size(8000);
524 this.el.override_font(description);
526 var attrs = new Gtk.SourceMarkAttributes();
527 var pink = new Gdk.RGBA();
528 pink.parse ( "pink");
529 attrs.set_background ( pink);
530 attrs.set_icon_name ( "process-stop");
531 attrs.query_tooltip_text.connect(( mark) => {
532 //print("tooltip query? %s\n", mark.name);
536 this.el.set_mark_attributes ("error", attrs, 1);
541 // user defined functions
542 public void loadFile (string fname, int line ) {
543 var buf = ((Gtk.SourceBuffer)(this.el.get_buffer()));
545 if (this.curfname != fname) {
546 this.curfname = fname;
550 buf.get_bounds (out start, out end);
552 buf.remove_source_marks (start, end, null);
557 FileUtils.get_contents(fname, out str);
559 buf.set_text(str, str.length);
560 var lm = Gtk.SourceLanguageManager.get_default();
563 buf.set_language(lm.get_language("vala"));
566 this.el.grab_focus();
570 var lines = _this.notices.get_object_member(fname);
573 lines.foreach_member((obj, line, node) => {
576 // print("get inter\n");
577 var eline = int.parse(line) -1 ;
580 buf.get_iter_at_line( out iter, eline);
581 //print("mark line\n");
582 var msg = "Line: %d".printf(eline+1);
583 var ar = lines.get_array_member(line);
584 for (var i = 0 ; i < ar.get_length(); i++) {
585 msg += (msg.length > 0) ? "\n" : "";
586 msg += ar.get_string_element(i);
590 buf.create_source_mark(msg, "error", iter);
593 // jump to the line...
595 buf.get_iter_at_line (out liter, line);
596 print("Scroll to \n");
597 this.el.scroll_to_iter (liter, 0.0f, false, 0.0f, 0.5f);
598 print("End Scroll to \n");