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