src/Builder4/PopoverProperty.bjs
[app.Builder.js] / src / Builder4 / PopoverProperty.vala
1 static Xcls_PopoverProperty  _PopoverProperty;
2
3 public class Xcls_PopoverProperty : Object
4 {
5     public Gtk.Popover el;
6     private Xcls_PopoverProperty  _this;
7
8     public static Xcls_PopoverProperty singleton()
9     {
10         if (_PopoverProperty == null) {
11             _PopoverProperty= new Xcls_PopoverProperty();
12         }
13         return _PopoverProperty;
14     }
15     public Xcls_header header;
16     public Xcls_kflag kflag;
17     public Xcls_dbcellrenderer dbcellrenderer;
18     public Xcls_dbmodel dbmodel;
19     public Xcls_ktype ktype;
20     public Xcls_kname kname;
21
22         // my vars (def)
23     public string old_keyname;
24     public signal void success (Project.Project pr, JsRender.JsRender file);
25     public bool done;
26     public Xcls_MainWindow mainwindow;
27     public string key_type;
28     public JsRender.Node node;
29
30     // ctor
31     public Xcls_PopoverProperty()
32     {
33         _this = this;
34         this.el = new Gtk.Popover( null );
35
36         // my vars (dec)
37         this.done = false;
38         this.mainwindow = null;
39
40         // set gobject values
41         this.el.border_width = 0;
42         this.el.modal = true;
43         this.el.position = Gtk.PositionType.RIGHT;
44         var child_0 = new Xcls_Box2( _this );
45         child_0.ref();
46         this.el.add (  child_0.el  );
47
48         //listeners
49         this.el.closed.connect( () => {
50          
51           
52           var newtext = "";
53           Gtk.TreeIter citer;
54           GLib.Value gval;
55           this.kflag.el.get_active_iter(out citer);
56           this.dbmodel.el.get_value(citer, 0, out  gval);
57           
58           newtext += (string)gval;  
59           newtext += this.ktype.el.get_text().length > 0 && newtext.length > 0 ? " " :"";
60           newtext += this.ktype.el.get_text() ;
61           newtext += this.kname.el.get_text().length > 0 && newtext.length > 0 ? " " :"";
62           newtext += this.kname.el.get_text();
63           
64           
65            var lp =  _this.mainwindow.windowstate.left_props;
66             
67             switch(this.key_type) {
68                 case "listener":
69                     var ov = _this.node.listeners.get(this.old_keyname);
70                     _this.node.listeners.set(newtext, ov);
71                     _this.node.listeners.unset(this.old_keyname);
72                     
73                     
74                     lp.updateKey(this.old_keyname, this.key_type, newtext);
75                     
76                     break;
77                 case "props":
78                     var ov = _this.node.props.get(this.old_keyname);
79                     _this.node.props.set(newtext, ov);
80                     _this.node.props.unset(this.old_keyname);
81                     lp.updateKey(this.old_keyname, this.key_type, newtext);
82                     break;
83              }
84            
85           
86           
87         });
88     }
89
90     // user defined functions
91     public void show (Gtk.Widget btn, JsRender.Node node, string key_type,  string key) 
92         {
93         
94         string kname = "", kflag = "", ktype = "";
95         if (key.length > 0) {
96                 node.normalize_key( key, out  kname, out  kflag, out ktype);
97         }
98     
99         if (key_type == "listener") {
100                 this.header.el.title = "Modify Event Listener";
101         } else {
102                 this.header.el.title = "Modify Property";
103         }
104         
105         this.key_type = key_type;
106         this.old_keyname = key;
107         this.node = node;
108         
109         _this.kname.el.set_text(kname);
110         _this.ktype.el.set_text(ktype);
111         
112         _this.dbmodel.loadData(kflag);
113         // does node have this property...
114     
115     
116          
117     
118         _this.node = node;
119         //console.log('show all');
120         this.el.set_modal(true);
121         this.el.set_relative_to(btn);
122     
123         this.el.set_position(Gtk.PositionType.TOP);
124     
125         // window + header?
126          print("SHOWALL - POPIP\n");
127         this.el.show_all();
128         this.kname.el.grab_focus();
129     
130         //this.success = c.success;
131      
132     }
133     public   void updateNodeFromValues () {
134     
135          /*   _this.file.title = _this.title.el.get_text();
136             _this.file.region = _this.region.el.get_text();            
137             _this.file.parent = _this.parent.el.get_text();                        
138             _this.file.permname = _this.permname.el.get_text();                                    
139             _this.file.modOrder = _this.modOrder.el.get_text();
140             
141             if (_this.file.name.length  > 0 && _this.file.name != _this.name.el.get_text()) {
142                 _this.file.renameTo(_this.name.el.get_text());
143             }
144             // store the module...
145             _this.file.build_module = "";        
146              Gtk.TreeIter iter; 
147             if (_this.build_module.el.get_active_iter (out iter)) {
148                  Value vfname;
149                  this.dbmodel.el.get_value (iter, 0, out vfname);
150                  if (((string)vfname).length > 0) {
151                      _this.file.build_module = (string)vfname;
152                  }
153         
154             }
155             */
156             
157             
158     
159                                                         
160     }
161     public class Xcls_Box2 : Object
162     {
163         public Gtk.Box el;
164         private Xcls_PopoverProperty  _this;
165
166
167             // my vars (def)
168
169         // ctor
170         public Xcls_Box2(Xcls_PopoverProperty _owner )
171         {
172             _this = _owner;
173             this.el = new Gtk.Box( Gtk.Orientation.VERTICAL, 0 );
174
175             // my vars (dec)
176
177             // set gobject values
178             this.el.homogeneous = false;
179             var child_0 = new Xcls_header( _this );
180             child_0.ref();
181             this.el.pack_start (  child_0.el , false,true,0 );
182             var child_1 = new Xcls_Table4( _this );
183             child_1.ref();
184             this.el.pack_start (  child_1.el , false,false,4 );
185         }
186
187         // user defined functions
188     }
189     public class Xcls_header : Object
190     {
191         public Gtk.HeaderBar el;
192         private Xcls_PopoverProperty  _this;
193
194
195             // my vars (def)
196
197         // ctor
198         public Xcls_header(Xcls_PopoverProperty _owner )
199         {
200             _this = _owner;
201             _this.header = this;
202             this.el = new Gtk.HeaderBar();
203
204             // my vars (dec)
205
206             // set gobject values
207             this.el.title = "Modify / Create Property";
208         }
209
210         // user defined functions
211     }
212
213     public class Xcls_Table4 : Object
214     {
215         public Gtk.Table el;
216         private Xcls_PopoverProperty  _this;
217
218
219             // my vars (def)
220
221         // ctor
222         public Xcls_Table4(Xcls_PopoverProperty _owner )
223         {
224             _this = _owner;
225             this.el = new Gtk.Table( 3, 2, true );
226
227             // my vars (dec)
228
229             // set gobject values
230             this.el.margin_right = 4;
231             this.el.margin_left = 4;
232             this.el.row_spacing = 2;
233             var child_0 = new Xcls_Label5( _this );
234             child_0.ref();
235             this.el.attach_defaults (  child_0.el , 0,1,0,1 );
236             var child_1 = new Xcls_kflag( _this );
237             child_1.ref();
238             this.el.attach_defaults (  child_1.el , 1,2,0,1 );
239             var child_2 = new Xcls_Label9( _this );
240             child_2.ref();
241             this.el.attach_defaults (  child_2.el , 0,1,1,2 );
242             var child_3 = new Xcls_ktype( _this );
243             child_3.ref();
244             this.el.attach_defaults (  child_3.el , 1,2,1,2 );
245             var child_4 = new Xcls_Label11( _this );
246             child_4.ref();
247             this.el.attach_defaults (  child_4.el , 0,1,2,3 );
248             var child_5 = new Xcls_kname( _this );
249             child_5.ref();
250             this.el.attach_defaults (  child_5.el , 1,2,2,3 );
251         }
252
253         // user defined functions
254     }
255     public class Xcls_Label5 : Object
256     {
257         public Gtk.Label el;
258         private Xcls_PopoverProperty  _this;
259
260
261             // my vars (def)
262
263         // ctor
264         public Xcls_Label5(Xcls_PopoverProperty _owner )
265         {
266             _this = _owner;
267             this.el = new Gtk.Label( "Special Flags" );
268
269             // my vars (dec)
270
271             // set gobject values
272             this.el.justify = Gtk.Justification.RIGHT;
273             this.el.xalign = 0.900000f;
274         }
275
276         // user defined functions
277     }
278
279     public class Xcls_kflag : Object
280     {
281         public Gtk.ComboBox el;
282         private Xcls_PopoverProperty  _this;
283
284
285             // my vars (def)
286
287         // ctor
288         public Xcls_kflag(Xcls_PopoverProperty _owner )
289         {
290             _this = _owner;
291             _this.kflag = this;
292             this.el = new Gtk.ComboBox();
293
294             // my vars (dec)
295
296             // set gobject values
297             var child_0 = new Xcls_dbcellrenderer( _this );
298             child_0.ref();
299             this.el.pack_start (  child_0.el , true );
300             var child_1 = new Xcls_dbmodel( _this );
301             child_1.ref();
302             this.el.set_model (  child_1.el  );
303
304             // init method
305
306             this.el.add_attribute(_this.dbcellrenderer.el , "markup", 1 );
307         }
308
309         // user defined functions
310     }
311     public class Xcls_dbcellrenderer : Object
312     {
313         public Gtk.CellRendererText el;
314         private Xcls_PopoverProperty  _this;
315
316
317             // my vars (def)
318
319         // ctor
320         public Xcls_dbcellrenderer(Xcls_PopoverProperty _owner )
321         {
322             _this = _owner;
323             _this.dbcellrenderer = this;
324             this.el = new Gtk.CellRendererText();
325
326             // my vars (dec)
327
328             // set gobject values
329         }
330
331         // user defined functions
332     }
333
334     public class Xcls_dbmodel : Object
335     {
336         public Gtk.ListStore el;
337         private Xcls_PopoverProperty  _this;
338
339
340             // my vars (def)
341
342         // ctor
343         public Xcls_dbmodel(Xcls_PopoverProperty _owner )
344         {
345             _this = _owner;
346             _this.dbmodel = this;
347             this.el = new Gtk.ListStore( 2, typeof(string),typeof(string) );
348
349             // my vars (dec)
350
351             // set gobject values
352         }
353
354         // user defined functions
355         public void loadData (string kflag) {
356             this.el.clear();                                    
357             Gtk.TreeIter iter;
358             var el = this.el;
359             
360             
361             // vala signal.. '@'
362             // raw value '$'
363             // user defined property '#'
364             // user defined method '|'
365             // special property '*' => prop  |args|ctor|init
366             
367             
368             
369            /// el.append(out iter);
370             
371              
372            // el.set_value(iter, 0, "");
373            // el.set_value(iter, 1, "aaa  - Just add Element - aaa");
374         
375             el.append(out iter);
376             el.set(iter, 0, "", 1,   "Normal Property", -1);
377                  
378                 if (_this.mainwindow.windowstate.file.xtype == "Gtk") {
379                         el.append(out iter);
380                         el.set(iter, 0, "$", 1,   "($) Raw Property (not escaped)", -1);
381                          
382                         
383                         el.append(out iter);
384                         el.set(iter, 0, "#", 1,   "(#) User defined property", -1);
385                          
386                         el.append(out iter);
387                         el.set(iter, 0, "|", 1,   "(|) User defined method", -1);
388                          
389                         el.append(out iter);
390                         el.set(iter, 0, "*", 1,   "(*) Special property (eg. prop | args | ctor | init )", -1);
391                          
392                         
393                         el.append(out iter);
394                     el.set(iter, 0, "@", 1,   "(@) Vala Signal", -1);
395                          
396                         
397                 } else { 
398                         // javascript
399                         el.append(out iter);
400                         el.set(iter, 0, "$", 1,   "($) Raw Property (not escaped)", -1);
401                          
402                         el.append(out iter);
403                         el.set(iter, 0, "|", 1,   "(|) User defined method", -1);
404                  
405                         el.append(out iter);
406                         el.set(iter, 0, "*", 1,   "(*) Special property (eg. prop )", -1);
407                          
408                 
409                 }
410                 el.foreach((tm, tp, titer) => {
411                         GLib.Value val;
412                         el.get_value(titer, 0, out val);
413                          
414                         print("check %s against %s\n", (string)val, kflag);
415                         if (((string)val) == kflag) {
416                                 _this.kflag.el.set_active_iter(titer);
417                                 return true;
418                         }
419                         return false;
420                 });
421                 
422         
423                                              
424         }
425     }
426
427
428     public class Xcls_Label9 : Object
429     {
430         public Gtk.Label el;
431         private Xcls_PopoverProperty  _this;
432
433
434             // my vars (def)
435
436         // ctor
437         public Xcls_Label9(Xcls_PopoverProperty _owner )
438         {
439             _this = _owner;
440             this.el = new Gtk.Label( "Type" );
441
442             // my vars (dec)
443
444             // set gobject values
445             this.el.justify = Gtk.Justification.RIGHT;
446             this.el.xalign = 0.900000f;
447             this.el.visible = true;
448         }
449
450         // user defined functions
451     }
452
453     public class Xcls_ktype : Object
454     {
455         public Gtk.Entry el;
456         private Xcls_PopoverProperty  _this;
457
458
459             // my vars (def)
460
461         // ctor
462         public Xcls_ktype(Xcls_PopoverProperty _owner )
463         {
464             _this = _owner;
465             _this.ktype = this;
466             this.el = new Gtk.Entry();
467
468             // my vars (dec)
469
470             // set gobject values
471             this.el.visible = true;
472         }
473
474         // user defined functions
475     }
476
477     public class Xcls_Label11 : Object
478     {
479         public Gtk.Label el;
480         private Xcls_PopoverProperty  _this;
481
482
483             // my vars (def)
484
485         // ctor
486         public Xcls_Label11(Xcls_PopoverProperty _owner )
487         {
488             _this = _owner;
489             this.el = new Gtk.Label( "Name" );
490
491             // my vars (dec)
492
493             // set gobject values
494             this.el.justify = Gtk.Justification.RIGHT;
495             this.el.xalign = 0.900000f;
496             this.el.tooltip_text = "center, north, south, east, west";
497             this.el.visible = true;
498         }
499
500         // user defined functions
501     }
502
503     public class Xcls_kname : Object
504     {
505         public Gtk.Entry el;
506         private Xcls_PopoverProperty  _this;
507
508
509             // my vars (def)
510
511         // ctor
512         public Xcls_kname(Xcls_PopoverProperty _owner )
513         {
514             _this = _owner;
515             _this.kname = this;
516             this.el = new Gtk.Entry();
517
518             // my vars (dec)
519
520             // set gobject values
521             this.el.visible = true;
522         }
523
524         // user defined functions
525     }
526
527
528
529 }