src/Builder4/DialogNewComponent.bjs
[app.Builder.js] / src / Builder4 / DialogNewComponent.vala
1 static Xcls_DialogNewComponent  _DialogNewComponent;
2
3 public class Xcls_DialogNewComponent : Object 
4 {
5     public Gtk.Dialog el;
6     private Xcls_DialogNewComponent  _this;
7
8     public static Xcls_DialogNewComponent singleton()
9     {
10         if (_DialogNewComponent == null) {
11             _DialogNewComponent= new Xcls_DialogNewComponent();
12         }
13         return _DialogNewComponent;
14     }
15     public Xcls_name name;
16     public Xcls_title title;
17     public Xcls_region region;
18     public Xcls_parent parent;
19     public Xcls_permname permname;
20     public Xcls_modOrder modOrder;
21     public Xcls_build_module build_module;
22     public Xcls_dbcellrenderer dbcellrenderer;
23     public Xcls_dbmodel dbmodel;
24
25         // my vars (def)
26     public signal void success (Project.Project pr, JsRender.JsRender file);
27     public Project.Project project;
28     public JsRender.JsRender file;
29
30     // ctor 
31     public Xcls_DialogNewComponent()
32     {
33         _this = this;
34         this.el = new Gtk.Dialog();
35
36         // my vars (dec)
37         this.file = null;
38
39         // set gobject values
40         this.el.title = "New Component";
41         this.el.default_height = 200;
42         this.el.default_width = 500;
43         this.el.deletable = true;
44         this.el.modal = true;
45         var child_0 = new Xcls_VBox2( _this );
46         child_0.ref();
47         this.el.get_content_area().add (  child_0.el  );
48         var child_1 = new Xcls_Button20( _this );
49         child_1.ref();
50         this.el.add_action_widget (  child_1.el , 0 );
51         var child_2 = new Xcls_Button21( _this );
52         child_2.ref();
53         this.el.add_action_widget (  child_2.el , 1 );
54
55         // listeners 
56         this.el.delete_event.connect( (self, event) => {
57             this.el.hide();
58             return true; 
59             //test  
60         });
61         this.el.response.connect( (self, response_id) =>  { 
62           
63                 if (response_id < 1) { // cancel!
64                     this.el.hide();
65                     return;
66                 }
67         
68         
69         
70                 if (_this.name.el.get_text().length  < 1) {
71                     StandardErrorDialog.show(
72                         this.el,
73                         "You have to set Component name "
74                     );
75                      
76                     return;
77                 }
78                 // what does this do?
79                 
80                 var isNew = _this.file.name.length  > 0 ? false : true;
81                 /*
82                 if (!isNew && this.file.name != _this.name.el.get_text()) {
83                     Xcls_StandardErrorDialog.singleton().show(
84                         this.el,
85                         "Sorry changing names does not work yet. "
86                     );
87                      
88                     return;
89                 }
90                 */
91                  
92                 
93               
94                 // FIXME - this may be more complicated...
95                 //for (var i in this.def) {
96                 //    this.file[i] =  this.get(i).el.get_text();
97                 //}
98         
99                 if (!isNew) {
100                     try {
101                          this.updateFileFromEntry();
102                      } catch( JsRender.Error.RENAME_FILE_EXISTS er) {
103                           Xcls_StandardErrorDialog.singleton().show(
104                             this.el,
105                             "The name you used already exists "
106                         );
107                         return;
108                          
109                      }
110                                                                 
111                 
112                     _this.file.save();
113                     this.el.hide();
114                     return;
115                 }
116                 var fn = this.name.el.get_text();
117                 var dir = _this.project.firstPath();
118                
119                 if (GLib.FileUtils.test(dir + "/" + fn + ".bjs", GLib.FileTest.EXISTS)) {
120                     Xcls_StandardErrorDialog.singleton().show(
121                         this.el,
122                         "That file already exists"
123                     ); 
124                     return;
125                 }
126                
127                var f =  JsRender.JsRender.factory(
128                         _this.file.project.xtype,  
129                         _this.file.project, 
130                         dir + "/" + fn + ".bjs");
131         
132                 _this.file = f;
133                 
134         
135                 
136                 this.updateFileFromEntry();
137                 _this.file.save();
138                 _this.file.project.addFile(_this.file);
139                 
140                  
141                 // what about .js ?
142                
143                 this.el.hide();
144                 
145                 
146                 //var tmpl = this.project.loadFileOnly(DialogNewComponent.get('template').getValue());
147                  
148                 //var nf = _this.project.create(dir + "/" + _this.file.name + ".bjs");
149                 //for (var i in this.file) {
150                 //    nf[i] = this.file[i];
151                 //}
152                 _this.success(_this.project, _this.file);
153                 /*
154         
155                 -- fixme -- needs to be a signal..
156                 if (DialogNewComponent.success != null) {
157                     DialogNewComponent.success(_this.project, nf);
158                 }
159                 */
160         });
161         this.el.show.connect( (self)  => {
162           this.el.show_all();
163           //test
164         });
165     }
166
167     // user defined functions 
168     public   void updateFileFromEntry () {
169     
170             _this.file.title = _this.title.el.get_text();
171             _this.file.region = _this.region.el.get_text();            
172             _this.file.parent = _this.parent.el.get_text();                        
173             _this.file.permname = _this.permname.el.get_text();                                    
174             _this.file.modOrder = _this.modOrder.el.get_text();
175             
176             if (_this.file.name.length  > 0 && _this.file.name != _this.name.el.get_text()) {
177                 _this.file.renameTo(_this.name.el.get_text());
178             }
179             // store the module...
180             _this.file.build_module = "";        
181             if (_this.build_module.el.get_active_iter (out iter)) {
182                  Value vfname;
183                  this.dbmodel.el.get_value (iter, 0, out vfname);
184                  if (((string)vfname).length > 0) {
185                      _this.file.build_module = (string)vfname;
186                  }
187         
188             }
189             
190             
191     
192                                                         
193     }
194     public   void show (JsRender.JsRender c) 
195     {
196         this.project = c.project;
197         
198         //if (!this.el) {
199             //this.init();
200          //}
201         
202         _this.name.el.set_text(c.name);
203         _this.title.el.set_text(c.title);
204         _this.parent.el.set_text(c.parent);    
205         _this.region.el.set_text(c.region);
206         _this.modOrder.el.set_text(c.modOrder);
207          _this.permname.el.set_text(c.permname);
208         
209         if (c.path.length > 0) {
210             this.el.set_title("Edit File Details - " + c.name);
211         } else {
212             this.el.set_title("Create New File");
213         }
214         
215          var ar = new Gee.ArrayList<string>();
216          _this.dbmodel.loadData(ar);
217         // load the modules... if relivant..
218         if (this.project.xtype == "Gtk") {
219             var p = (Project.Gtk)c.project;
220               var cg = p.compilegroups;
221     
222             var iter = cg.map_iterator();
223            while(iter.next()) {
224                 var key = iter.get_key();
225                 if (key == "_default_") {
226                     continue;
227                 }
228                 ar.add(key);
229             };
230             _this.dbmodel.loadData(ar);
231     
232         }
233         
234          
235         _this.file = c;
236         //console.log('show all');
237         this.el.show_all();
238         
239         //this.success = c.success;
240         
241         
242     }
243     public class Xcls_VBox2 : Object 
244     {
245         public Gtk.VBox el;
246         private Xcls_DialogNewComponent  _this;
247
248
249             // my vars (def)
250
251         // ctor 
252         public Xcls_VBox2(Xcls_DialogNewComponent _owner )
253         {
254             _this = _owner;
255             this.el = new Gtk.VBox( true, 0 );
256
257             // my vars (dec)
258
259             // set gobject values
260             var child_0 = new Xcls_Table3( _this );
261             child_0.ref();
262             this.el.pack_start (  child_0.el , false,false,0 );
263         }
264
265         // user defined functions 
266     }
267     public class Xcls_Table3 : Object 
268     {
269         public Gtk.Table el;
270         private Xcls_DialogNewComponent  _this;
271
272
273             // my vars (def)
274
275         // ctor 
276         public Xcls_Table3(Xcls_DialogNewComponent _owner )
277         {
278             _this = _owner;
279             this.el = new Gtk.Table( 3, 2, true );
280
281             // my vars (dec)
282
283             // set gobject values
284             var child_0 = new Xcls_Label4( _this );
285             child_0.ref();
286             this.el.attach_defaults (  child_0.el , 0,1,0,1 );
287             var child_1 = new Xcls_name( _this );
288             child_1.ref();
289             this.el.attach_defaults (  child_1.el , 1,2,0,1 );
290             var child_2 = new Xcls_Label6( _this );
291             child_2.ref();
292             this.el.attach_defaults (  child_2.el , 0,1,1,2 );
293             var child_3 = new Xcls_title( _this );
294             child_3.ref();
295             this.el.attach_defaults (  child_3.el , 1,2,1,2 );
296             var child_4 = new Xcls_Label8( _this );
297             child_4.ref();
298             this.el.attach_defaults (  child_4.el , 0,1,2,3 );
299             var child_5 = new Xcls_region( _this );
300             child_5.ref();
301             this.el.attach_defaults (  child_5.el , 1,2,2,3 );
302             var child_6 = new Xcls_Label10( _this );
303             child_6.ref();
304             this.el.attach_defaults (  child_6.el , 0,1,3,4 );
305             var child_7 = new Xcls_parent( _this );
306             child_7.ref();
307             this.el.attach_defaults (  child_7.el , 1,2,3,4 );
308             var child_8 = new Xcls_Label12( _this );
309             child_8.ref();
310             this.el.attach_defaults (  child_8.el , 0,1,4,5 );
311             var child_9 = new Xcls_permname( _this );
312             child_9.ref();
313             this.el.attach_defaults (  child_9.el , 1,2,4,5 );
314             var child_10 = new Xcls_Label14( _this );
315             child_10.ref();
316             this.el.attach_defaults (  child_10.el , 0,1,5,6 );
317             var child_11 = new Xcls_modOrder( _this );
318             child_11.ref();
319             this.el.attach_defaults (  child_11.el , 1,2,5,6 );
320             var child_12 = new Xcls_Label16( _this );
321             child_12.ref();
322             this.el.attach_defaults (  child_12.el , 0,1,6,7 );
323             var child_13 = new Xcls_build_module( _this );
324             child_13.ref();
325             this.el.attach_defaults (  child_13.el , 1,2,6,7 );
326         }
327
328         // user defined functions 
329     }
330     public class Xcls_Label4 : Object 
331     {
332         public Gtk.Label el;
333         private Xcls_DialogNewComponent  _this;
334
335
336             // my vars (def)
337
338         // ctor 
339         public Xcls_Label4(Xcls_DialogNewComponent _owner )
340         {
341             _this = _owner;
342             this.el = new Gtk.Label( "Component Name" );
343
344             // my vars (dec)
345
346             // set gobject values
347             this.el.justify = Gtk.Justification.RIGHT;
348             this.el.xalign = 0.900000f;
349         }
350
351         // user defined functions 
352     }
353     public class Xcls_name : Object 
354     {
355         public Gtk.Entry el;
356         private Xcls_DialogNewComponent  _this;
357
358
359             // my vars (def)
360
361         // ctor 
362         public Xcls_name(Xcls_DialogNewComponent _owner )
363         {
364             _this = _owner;
365             _this.name = this;
366             this.el = new Gtk.Entry();
367
368             // my vars (dec)
369
370             // set gobject values
371             this.el.visible = true;
372         }
373
374         // user defined functions 
375     }
376     public class Xcls_Label6 : Object 
377     {
378         public Gtk.Label el;
379         private Xcls_DialogNewComponent  _this;
380
381
382             // my vars (def)
383
384         // ctor 
385         public Xcls_Label6(Xcls_DialogNewComponent _owner )
386         {
387             _this = _owner;
388             this.el = new Gtk.Label( "Title" );
389
390             // my vars (dec)
391
392             // set gobject values
393             this.el.justify = Gtk.Justification.RIGHT;
394             this.el.xalign = 0.900000f;
395             this.el.visible = true;
396         }
397
398         // user defined functions 
399     }
400     public class Xcls_title : Object 
401     {
402         public Gtk.Entry el;
403         private Xcls_DialogNewComponent  _this;
404
405
406             // my vars (def)
407
408         // ctor 
409         public Xcls_title(Xcls_DialogNewComponent _owner )
410         {
411             _this = _owner;
412             _this.title = this;
413             this.el = new Gtk.Entry();
414
415             // my vars (dec)
416
417             // set gobject values
418             this.el.visible = true;
419         }
420
421         // user defined functions 
422     }
423     public class Xcls_Label8 : Object 
424     {
425         public Gtk.Label el;
426         private Xcls_DialogNewComponent  _this;
427
428
429             // my vars (def)
430
431         // ctor 
432         public Xcls_Label8(Xcls_DialogNewComponent _owner )
433         {
434             _this = _owner;
435             this.el = new Gtk.Label( "Region" );
436
437             // my vars (dec)
438
439             // set gobject values
440             this.el.justify = Gtk.Justification.RIGHT;
441             this.el.xalign = 0.900000f;
442             this.el.tooltip_text = "center, north, south, east, west";
443             this.el.visible = true;
444         }
445
446         // user defined functions 
447     }
448     public class Xcls_region : Object 
449     {
450         public Gtk.Entry el;
451         private Xcls_DialogNewComponent  _this;
452
453
454             // my vars (def)
455
456         // ctor 
457         public Xcls_region(Xcls_DialogNewComponent _owner )
458         {
459             _this = _owner;
460             _this.region = this;
461             this.el = new Gtk.Entry();
462
463             // my vars (dec)
464
465             // set gobject values
466             this.el.visible = true;
467         }
468
469         // user defined functions 
470     }
471     public class Xcls_Label10 : Object 
472     {
473         public Gtk.Label el;
474         private Xcls_DialogNewComponent  _this;
475
476
477             // my vars (def)
478
479         // ctor 
480         public Xcls_Label10(Xcls_DialogNewComponent _owner )
481         {
482             _this = _owner;
483             this.el = new Gtk.Label( "Parent Name" );
484
485             // my vars (dec)
486
487             // set gobject values
488             this.el.justify = Gtk.Justification.RIGHT;
489             this.el.xalign = 0.900000f;
490             this.el.visible = true;
491         }
492
493         // user defined functions 
494     }
495     public class Xcls_parent : Object 
496     {
497         public Gtk.Entry el;
498         private Xcls_DialogNewComponent  _this;
499
500
501             // my vars (def)
502
503         // ctor 
504         public Xcls_parent(Xcls_DialogNewComponent _owner )
505         {
506             _this = _owner;
507             _this.parent = this;
508             this.el = new Gtk.Entry();
509
510             // my vars (dec)
511
512             // set gobject values
513             this.el.visible = true;
514         }
515
516         // user defined functions 
517     }
518     public class Xcls_Label12 : Object 
519     {
520         public Gtk.Label el;
521         private Xcls_DialogNewComponent  _this;
522
523
524             // my vars (def)
525
526         // ctor 
527         public Xcls_Label12(Xcls_DialogNewComponent _owner )
528         {
529             _this = _owner;
530             this.el = new Gtk.Label( "Permission Name" );
531
532             // my vars (dec)
533
534             // set gobject values
535             this.el.justify = Gtk.Justification.RIGHT;
536             this.el.xalign = 0.900000f;
537             this.el.visible = true;
538         }
539
540         // user defined functions 
541     }
542     public class Xcls_permname : Object 
543     {
544         public Gtk.Entry el;
545         private Xcls_DialogNewComponent  _this;
546
547
548             // my vars (def)
549
550         // ctor 
551         public Xcls_permname(Xcls_DialogNewComponent _owner )
552         {
553             _this = _owner;
554             _this.permname = this;
555             this.el = new Gtk.Entry();
556
557             // my vars (dec)
558
559             // set gobject values
560             this.el.visible = true;
561         }
562
563         // user defined functions 
564     }
565     public class Xcls_Label14 : Object 
566     {
567         public Gtk.Label el;
568         private Xcls_DialogNewComponent  _this;
569
570
571             // my vars (def)
572
573         // ctor 
574         public Xcls_Label14(Xcls_DialogNewComponent _owner )
575         {
576             _this = _owner;
577             this.el = new Gtk.Label( "Order (for tabs)" );
578
579             // my vars (dec)
580
581             // set gobject values
582             this.el.justify = Gtk.Justification.RIGHT;
583             this.el.xalign = 0.900000f;
584             this.el.visible = true;
585         }
586
587         // user defined functions 
588     }
589     public class Xcls_modOrder : Object 
590     {
591         public Gtk.Entry el;
592         private Xcls_DialogNewComponent  _this;
593
594
595             // my vars (def)
596
597         // ctor 
598         public Xcls_modOrder(Xcls_DialogNewComponent _owner )
599         {
600             _this = _owner;
601             _this.modOrder = this;
602             this.el = new Gtk.Entry();
603
604             // my vars (dec)
605
606             // set gobject values
607             this.el.visible = true;
608         }
609
610         // user defined functions 
611     }
612     public class Xcls_Label16 : Object 
613     {
614         public Gtk.Label el;
615         private Xcls_DialogNewComponent  _this;
616
617
618             // my vars (def)
619
620         // ctor 
621         public Xcls_Label16(Xcls_DialogNewComponent _owner )
622         {
623             _this = _owner;
624             this.el = new Gtk.Label( "Module to build (Vala only)" );
625
626             // my vars (dec)
627
628             // set gobject values
629             this.el.justify = Gtk.Justification.RIGHT;
630             this.el.xalign = 0.900000f;
631             this.el.visible = true;
632         }
633
634         // user defined functions 
635     }
636     public class Xcls_build_module : Object 
637     {
638         public Gtk.ComboBox el;
639         private Xcls_DialogNewComponent  _this;
640
641
642             // my vars (def)
643
644         // ctor 
645         public Xcls_build_module(Xcls_DialogNewComponent _owner )
646         {
647             _this = _owner;
648             _this.build_module = this;
649             this.el = new Gtk.ComboBox();
650
651             // my vars (dec)
652
653             // set gobject values
654             var child_0 = new Xcls_dbcellrenderer( _this );
655             child_0.ref();
656             this.el.pack_start (  child_0.el , true );
657             var child_1 = new Xcls_dbmodel( _this );
658             child_1.ref();
659             this.el.set_model (  child_1.el  );
660
661             // init method 
662
663             this.el.add_attribute(_this.dbcellrenderer.el , "markup", 1 );
664         }
665
666         // user defined functions 
667     }
668     public class Xcls_dbcellrenderer : Object 
669     {
670         public Gtk.CellRendererText el;
671         private Xcls_DialogNewComponent  _this;
672
673
674             // my vars (def)
675
676         // ctor 
677         public Xcls_dbcellrenderer(Xcls_DialogNewComponent _owner )
678         {
679             _this = _owner;
680             _this.dbcellrenderer = this;
681             this.el = new Gtk.CellRendererText();
682
683             // my vars (dec)
684
685             // set gobject values
686         }
687
688         // user defined functions 
689     }
690     public class Xcls_dbmodel : Object 
691     {
692         public Gtk.ListStore el;
693         private Xcls_DialogNewComponent  _this;
694
695
696             // my vars (def)
697
698         // ctor 
699         public Xcls_dbmodel(Xcls_DialogNewComponent _owner )
700         {
701             _this = _owner;
702             _this.dbmodel = this;
703             this.el = new Gtk.ListStore( 2, typeof(string),typeof(string) );
704
705             // my vars (dec)
706
707             // set gobject values
708         }
709
710         // user defined functions 
711         public void loadData (Gee.ArrayList<string> data) {
712             this.el.clear();                                    
713             Gtk.TreeIter iter;
714             var el = this.el;
715             
716            /// el.append(out iter);
717             
718              
719            // el.set_value(iter, 0, "");
720            // el.set_value(iter, 1, "aaa  - Just add Element - aaa");
721         
722             el.append(out iter);
723         
724             
725             el.set_value(iter, 0, "");
726             el.set_value(iter, 1, "-- select a module --");
727             
728             
729             for (var i = 0; i < data.size;i++) {
730             
731         
732                 el.append(out iter);
733                 
734                 el.set_value(iter, 0, data.get(i));
735                 el.set_value(iter, 1, data.get(i));
736                 
737             }
738              this.el.set_sort_column_id(0, Gtk.SortType.ASCENDING);          
739                                              
740         }
741     }
742     public class Xcls_Button20 : Object 
743     {
744         public Gtk.Button el;
745         private Xcls_DialogNewComponent  _this;
746
747
748             // my vars (def)
749
750         // ctor 
751         public Xcls_Button20(Xcls_DialogNewComponent _owner )
752         {
753             _this = _owner;
754             this.el = new Gtk.Button();
755
756             // my vars (dec)
757
758             // set gobject values
759             this.el.label = "Cancel";
760         }
761
762         // user defined functions 
763     }
764     public class Xcls_Button21 : Object 
765     {
766         public Gtk.Button el;
767         private Xcls_DialogNewComponent  _this;
768
769
770             // my vars (def)
771
772         // ctor 
773         public Xcls_Button21(Xcls_DialogNewComponent _owner )
774         {
775             _this = _owner;
776             this.el = new Gtk.Button();
777
778             // my vars (dec)
779
780             // set gobject values
781             this.el.label = "OK";
782         }
783
784         // user defined functions 
785     }
786 }