src/Builder4/ValaCompileErrors.bjs
[app.Builder.js] / src / Builder4 / ValaCompileErrors.vala
1 static Xcls_ValaCompileErrors  _ValaCompileErrors;
2
3 public class Xcls_ValaCompileErrors : Object
4 {
5     public Gtk.Popover el;
6     private Xcls_ValaCompileErrors  _this;
7
8     public static Xcls_ValaCompileErrors singleton()
9     {
10         if (_ValaCompileErrors == null) {
11             _ValaCompileErrors= new Xcls_ValaCompileErrors();
12         }
13         return _ValaCompileErrors;
14     }
15     public Xcls_compile_view compile_view;
16     public Xcls_compile_tree compile_tree;
17     public Xcls_compile_result_store compile_result_store;
18     public Xcls_renderer renderer;
19
20         // my vars (def)
21     public Xcls_MainWindow window;
22     public bool active;
23     public JsRender.JsRender? file;
24     public Json.Object notices;
25
26     // ctor
27     public Xcls_ValaCompileErrors()
28     {
29         _this = this;
30         this.el = new Gtk.Popover( null );
31
32         // my vars (dec)
33         this.active = false;
34
35         // set gobject values
36         this.el.width_request = 900;
37         this.el.height_request = 800;
38         this.el.hexpand = true;
39         this.el.modal = true;
40         this.el.position = Gtk.PositionType.TOP;
41         var child_0 = new Xcls_compile_view( _this );
42         child_0.ref();
43         this.el.add (  child_0.el  );
44     }
45
46     // user defined functions
47     public void show (Json.Object tree, Gtk.Widget onbtn) {
48     
49             
50             this.file = null;
51             this.notices = tree;
52            
53              //print("looking for %s\n", id);
54             // loop through parent childnre
55               
56             
57             var store = this.compile_result_store.el;    
58             
59             store.clear();
60          
61             
62             tree.foreach_member((obj, file, node) => {
63                 // id line "display text", file
64                 
65                 var title = GLib.Path.get_basename(GLib.Path.get_dirname( file)) + "/" +  GLib.Path.get_basename( file) ;
66                 Gtk.TreeIter iter;
67                 print("Add file %s", title);
68                 store.append(out iter, null);
69                 var lines = tree.get_object_member(file);
70                 title += " (" + lines.get_size().to_string() + ")";
71                 store.set(iter, 0, file, 1, 0, 2, title, 3, file,-1);
72                 
73                 lines.foreach_member((obja, line, nodea) => {
74                     var msg  = "";
75                     var ar = lines.get_array_member(line);
76                     for (var i = 0 ; i < ar.get_length(); i++) {
77                             msg += (msg.length > 0) ? "\n" : "";
78                             msg += ar.get_string_element(i);
79                 }
80                     Gtk.TreeIter citer;  
81                     print("Add line %s", line);
82                     store.append(out citer, iter);
83                     store.set(citer, 
84                         0, file + ":" + line, 
85                         1, int.parse(line), 
86                         2, GLib.Markup.escape_text(line + ": " + msg), 
87                         3, file,-1);
88                 
89                 });
90                 
91                 
92             
93             });
94             
95         int w,h;
96         this.window.el.get_size(out w, out h);
97         
98         // left tree = 250, editor area = 500?
99         
100         var new_w = int.min(250, w-100);
101         if (new_w > (w-100)) {
102             new_w = w-100;
103         }
104         this.el.set_size_request( int.max(100, new_w), int.max(100, h-120));
105     
106         
107     
108         if (this.el.relative_to == null) {
109             this.el.set_relative_to(onbtn);
110         }
111         this.el.show_all();
112        
113         while(Gtk.events_pending()) { 
114                 Gtk.main_iteration();
115         }       
116      //   this.hpane.el.set_position( 0);
117     }
118     public class Xcls_compile_view : Object
119     {
120         public Gtk.Box el;
121         private Xcls_ValaCompileErrors  _this;
122
123
124             // my vars (def)
125
126         // ctor
127         public Xcls_compile_view(Xcls_ValaCompileErrors _owner )
128         {
129             _this = _owner;
130             _this.compile_view = this;
131             this.el = new Gtk.Box( Gtk.Orientation.VERTICAL, 0 );
132
133             // my vars (dec)
134
135             // set gobject values
136             this.el.homogeneous = false;
137             var child_0 = new Xcls_Box3( _this );
138             child_0.ref();
139             this.el.pack_start (  child_0.el , false,false,0 );
140             var child_1 = new Xcls_ScrolledWindow5( _this );
141             child_1.ref();
142             this.el.pack_end (  child_1.el , true,true,0 );
143         }
144
145         // user defined functions
146     }
147     public class Xcls_Box3 : Object
148     {
149         public Gtk.Box el;
150         private Xcls_ValaCompileErrors  _this;
151
152
153             // my vars (def)
154
155         // ctor
156         public Xcls_Box3(Xcls_ValaCompileErrors _owner )
157         {
158             _this = _owner;
159             this.el = new Gtk.Box( Gtk.Orientation.HORIZONTAL, 0 );
160
161             // my vars (dec)
162
163             // set gobject values
164             var child_0 = new Xcls_Button4( _this );
165             child_0.ref();
166             this.el.pack_start (  child_0.el , true,true,0 );
167         }
168
169         // user defined functions
170     }
171     public class Xcls_Button4 : Object
172     {
173         public Gtk.Button el;
174         private Xcls_ValaCompileErrors  _this;
175
176
177             // my vars (def)
178
179         // ctor
180         public Xcls_Button4(Xcls_ValaCompileErrors _owner )
181         {
182             _this = _owner;
183             this.el = new Gtk.Button();
184
185             // my vars (dec)
186
187             // set gobject values
188             this.el.label = "Compile and Run ";
189         }
190
191         // user defined functions
192     }
193
194
195     public class Xcls_ScrolledWindow5 : Object
196     {
197         public Gtk.ScrolledWindow el;
198         private Xcls_ValaCompileErrors  _this;
199
200
201             // my vars (def)
202
203         // ctor
204         public Xcls_ScrolledWindow5(Xcls_ValaCompileErrors _owner )
205         {
206             _this = _owner;
207             this.el = new Gtk.ScrolledWindow( null, null );
208
209             // my vars (dec)
210
211             // set gobject values
212             var child_0 = new Xcls_compile_tree( _this );
213             child_0.ref();
214             this.el.add (  child_0.el  );
215
216             // init method
217
218             {
219              this.el.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);
220              
221             
222             }
223         }
224
225         // user defined functions
226     }
227     public class Xcls_compile_tree : Object
228     {
229         public Gtk.TreeView el;
230         private Xcls_ValaCompileErrors  _this;
231
232
233             // my vars (def)
234
235         // ctor
236         public Xcls_compile_tree(Xcls_ValaCompileErrors _owner )
237         {
238             _this = _owner;
239             _this.compile_tree = this;
240             this.el = new Gtk.TreeView();
241
242             // my vars (dec)
243
244             // set gobject values
245             var child_0 = new Xcls_compile_result_store( _this );
246             child_0.ref();
247             this.el.set_model (  child_0.el  );
248             var child_1 = new Xcls_column( _this );
249             child_1.ref();
250             this.el.append_column (  child_1.el  );
251
252             // init method
253
254             {
255              var description = new Pango.FontDescription();
256                 description.set_size(8000);
257                 this.el.override_font(description);
258             
259             }
260
261             //listeners
262             this.el.button_press_event.connect( ( ev)  => {
263              
264                 Gtk.TreeViewColumn col;
265                 int cell_x;
266                 int cell_y;
267                 Gtk.TreePath path;
268                 if (!this.el.get_path_at_pos((int)ev.x, (int) ev.y, out path, out col, out cell_x, out cell_y )) {
269                     print("nothing selected on click");
270                     
271                     return false; //not on a element.
272                 }
273                 
274                  
275                  // right click.
276                  if (ev.type != Gdk.EventType.2BUTTON_PRESS  || ev.button != 1  ) {    
277                     // show popup!.   
278                         
279                      
280                     return false;
281                 }
282                 Gtk.TreeIter iter;
283                  var mod = _this.compile_result_store.el;
284                 mod.get_iter (out iter, path);
285                 
286                   
287                 
288                 // var val = "";
289                 GLib.Value value;
290                 _this.compile_result_store.el.get_value(iter, 3, out value);
291                 var fname = (string)value;
292                 //GLib.Value lvalue;
293                 //_this.compile_result_store.el.get_value(iter, 1, out lvalue);
294                 //var line = (int) lvalue;
295                 
296                 
297                var  bjsf = "";
298                 try {             
299                    var  regex = new Regex("\\.vala$");
300                 
301                  
302                     bjsf = regex.replace(fname,fname.length , 0 , ".bjs");
303                  } catch (GLib.RegexError e) {
304                     return false;
305                 }   
306                 var p = _this.window.project;
307                     
308                     
309                     
310                 var jsr = p.getByPath(bjsf);
311                 if (jsr != null) {
312                     _this.window.windowstate.fileViewOpen(jsr);
313                     
314                     return false;
315                 
316                 }
317                 
318                 var pf = JsRender.JsRender.factory("PlainFile", p, fname);
319                 _this.window.windowstate.fileViewOpen(pf);
320                 
321                 // try hiding the left nav..
322              
323                 return false;
324                 
325               });
326         }
327
328         // user defined functions
329     }
330     public class Xcls_compile_result_store : Object
331     {
332         public Gtk.TreeStore el;
333         private Xcls_ValaCompileErrors  _this;
334
335
336             // my vars (def)
337
338         // ctor
339         public Xcls_compile_result_store(Xcls_ValaCompileErrors _owner )
340         {
341             _this = _owner;
342             _this.compile_result_store = this;
343             this.el = new Gtk.TreeStore( 4,   typeof(string), typeof(int), typeof(string), typeof(string)  );
344
345             // my vars (dec)
346
347             // set gobject values
348         }
349
350         // user defined functions
351     }
352
353     public class Xcls_column : Object
354     {
355         public Gtk.TreeViewColumn el;
356         private Xcls_ValaCompileErrors  _this;
357
358
359             // my vars (def)
360
361         // ctor
362         public Xcls_column(Xcls_ValaCompileErrors _owner )
363         {
364             _this = _owner;
365             this.el = new Gtk.TreeViewColumn();
366
367             // my vars (dec)
368
369             // set gobject values
370             this.el.title = "Compile output";
371             var child_0 = new Xcls_renderer( _this );
372             child_0.ref();
373             this.el.pack_start (  child_0.el , true );
374
375             // init method
376
377             {
378               this.el.add_attribute(_this.renderer.el , "markup", 2 );
379              
380             }
381         }
382
383         // user defined functions
384     }
385     public class Xcls_renderer : Object
386     {
387         public Gtk.CellRendererText el;
388         private Xcls_ValaCompileErrors  _this;
389
390
391             // my vars (def)
392
393         // ctor
394         public Xcls_renderer(Xcls_ValaCompileErrors _owner )
395         {
396             _this = _owner;
397             _this.renderer = this;
398             this.el = new Gtk.CellRendererText();
399
400             // my vars (dec)
401
402             // set gobject values
403         }
404
405         // user defined functions
406     }
407
408
409
410
411
412 }