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         if (key.length > 0) {
117                 this.save_btn.el.set_label("Save");
118         } else {
119                 this.save_btn.el.set_label("Create");
120         }
121     
122         _this.node = node;
123         //console.log('show all');
124         this.el.set_modal(true);
125         this.el.set_relative_to(btn);
126     
127         this.el.set_position(Gtk.PositionType.TOP);
128     
129         // window + header?
130          print("SHOWALL - POPIP\n");
131         this.el.show_all();
132         this.kname.el.grab_focus();
133     
134         //this.success = c.success;
135      
136     }
137     public   void updateNodeFromValues () {
138     
139          /*   _this.file.title = _this.title.el.get_text();
140             _this.file.region = _this.region.el.get_text();            
141             _this.file.parent = _this.parent.el.get_text();                        
142             _this.file.permname = _this.permname.el.get_text();                                    
143             _this.file.modOrder = _this.modOrder.el.get_text();
144             
145             if (_this.file.name.length  > 0 && _this.file.name != _this.name.el.get_text()) {
146                 _this.file.renameTo(_this.name.el.get_text());
147             }
148             // store the module...
149             _this.file.build_module = "";        
150              Gtk.TreeIter iter; 
151             if (_this.build_module.el.get_active_iter (out iter)) {
152                  Value vfname;
153                  this.dbmodel.el.get_value (iter, 0, out vfname);
154                  if (((string)vfname).length > 0) {
155                      _this.file.build_module = (string)vfname;
156                  }
157         
158             }
159             */
160             
161             
162     
163                                                         
164     }
165     public class Xcls_Box2 : Object
166     {
167         public Gtk.Box el;
168         private Xcls_PopoverProperty  _this;
169
170
171             // my vars (def)
172
173         // ctor
174         public Xcls_Box2(Xcls_PopoverProperty _owner )
175         {
176             _this = _owner;
177             this.el = new Gtk.Box( Gtk.Orientation.VERTICAL, 0 );
178
179             // my vars (dec)
180
181             // set gobject values
182             this.el.homogeneous = false;
183             var child_0 = new Xcls_header( _this );
184             child_0.ref();
185             this.el.pack_start (  child_0.el , false,true,0 );
186             var child_1 = new Xcls_Table4( _this );
187             child_1.ref();
188             this.el.pack_start (  child_1.el , false,false,4 );
189         }
190
191         // user defined functions
192     }
193     public class Xcls_header : Object
194     {
195         public Gtk.HeaderBar el;
196         private Xcls_PopoverProperty  _this;
197
198
199             // my vars (def)
200
201         // ctor
202         public Xcls_header(Xcls_PopoverProperty _owner )
203         {
204             _this = _owner;
205             _this.header = this;
206             this.el = new Gtk.HeaderBar();
207
208             // my vars (dec)
209
210             // set gobject values
211             this.el.title = "Modify / Create Property";
212         }
213
214         // user defined functions
215     }
216
217     public class Xcls_Table4 : Object
218     {
219         public Gtk.Table el;
220         private Xcls_PopoverProperty  _this;
221
222
223             // my vars (def)
224
225         // ctor
226         public Xcls_Table4(Xcls_PopoverProperty _owner )
227         {
228             _this = _owner;
229             this.el = new Gtk.Table( 3, 2, true );
230
231             // my vars (dec)
232
233             // set gobject values
234             this.el.margin_right = 4;
235             this.el.margin_left = 4;
236             this.el.row_spacing = 2;
237             var child_0 = new Xcls_Label5( _this );
238             child_0.ref();
239             this.el.attach_defaults (  child_0.el , 0,1,0,1 );
240             var child_1 = new Xcls_kflag( _this );
241             child_1.ref();
242             this.el.attach_defaults (  child_1.el , 1,2,0,1 );
243             var child_2 = new Xcls_Label9( _this );
244             child_2.ref();
245             this.el.attach_defaults (  child_2.el , 0,1,1,2 );
246             var child_3 = new Xcls_ktype( _this );
247             child_3.ref();
248             this.el.attach_defaults (  child_3.el , 1,2,1,2 );
249             var child_4 = new Xcls_Label11( _this );
250             child_4.ref();
251             this.el.attach_defaults (  child_4.el , 0,1,2,3 );
252             var child_5 = new Xcls_kname( _this );
253             child_5.ref();
254             this.el.attach_defaults (  child_5.el , 1,2,2,3 );
255         }
256
257         // user defined functions
258     }
259     public class Xcls_Label5 : Object
260     {
261         public Gtk.Label el;
262         private Xcls_PopoverProperty  _this;
263
264
265             // my vars (def)
266
267         // ctor
268         public Xcls_Label5(Xcls_PopoverProperty _owner )
269         {
270             _this = _owner;
271             this.el = new Gtk.Label( "Special Flags" );
272
273             // my vars (dec)
274
275             // set gobject values
276             this.el.justify = Gtk.Justification.RIGHT;
277             this.el.xalign = 0.900000f;
278         }
279
280         // user defined functions
281     }
282
283     public class Xcls_kflag : Object
284     {
285         public Gtk.ComboBox el;
286         private Xcls_PopoverProperty  _this;
287
288
289             // my vars (def)
290
291         // ctor
292         public Xcls_kflag(Xcls_PopoverProperty _owner )
293         {
294             _this = _owner;
295             _this.kflag = this;
296             this.el = new Gtk.ComboBox();
297
298             // my vars (dec)
299
300             // set gobject values
301             var child_0 = new Xcls_dbcellrenderer( _this );
302             child_0.ref();
303             this.el.pack_start (  child_0.el , true );
304             var child_1 = new Xcls_dbmodel( _this );
305             child_1.ref();
306             this.el.set_model (  child_1.el  );
307
308             // init method
309
310             this.el.add_attribute(_this.dbcellrenderer.el , "markup", 1 );
311         }
312
313         // user defined functions
314     }
315     public class Xcls_dbcellrenderer : Object
316     {
317         public Gtk.CellRendererText el;
318         private Xcls_PopoverProperty  _this;
319
320
321             // my vars (def)
322
323         // ctor
324         public Xcls_dbcellrenderer(Xcls_PopoverProperty _owner )
325         {
326             _this = _owner;
327             _this.dbcellrenderer = this;
328             this.el = new Gtk.CellRendererText();
329
330             // my vars (dec)
331
332             // set gobject values
333         }
334
335         // user defined functions
336     }
337
338     public class Xcls_dbmodel : Object
339     {
340         public Gtk.ListStore el;
341         private Xcls_PopoverProperty  _this;
342
343
344             // my vars (def)
345
346         // ctor
347         public Xcls_dbmodel(Xcls_PopoverProperty _owner )
348         {
349             _this = _owner;
350             _this.dbmodel = this;
351             this.el = new Gtk.ListStore( 2, typeof(string),typeof(string) );
352
353             // my vars (dec)
354
355             // set gobject values
356         }
357
358         // user defined functions
359         public void loadData (string kflag) {
360             this.el.clear();                                    
361             Gtk.TreeIter iter;
362             var el = this.el;
363             
364             
365             // vala signal.. '@'
366             // raw value '$'
367             // user defined property '#'
368             // user defined method '|'
369             // special property '*' => prop  |args|ctor|init
370             
371             
372             
373            /// el.append(out iter);
374             
375              
376            // el.set_value(iter, 0, "");
377            // el.set_value(iter, 1, "aaa  - Just add Element - aaa");
378         
379             el.append(out iter);
380             el.set(iter, 0, "", 1,   "Normal Property", -1);
381                  
382                 if (_this.mainwindow.windowstate.file.xtype == "Gtk") {
383                         el.append(out iter);
384                         el.set(iter, 0, "$", 1,   "($) Raw Property (not escaped)", -1);
385                          
386                         
387                         el.append(out iter);
388                         el.set(iter, 0, "#", 1,   "(#) User defined property", -1);
389                          
390                         el.append(out iter);
391                         el.set(iter, 0, "|", 1,   "(|) User defined method", -1);
392                          
393                         el.append(out iter);
394                         el.set(iter, 0, "*", 1,   "(*) Special property (eg. prop | args | ctor | init )", -1);
395                          
396                         
397                         el.append(out iter);
398                     el.set(iter, 0, "@", 1,   "(@) Vala Signal", -1);
399                          
400                         
401                 } else { 
402                         // javascript
403                         el.append(out iter);
404                         el.set(iter, 0, "$", 1,   "($) Raw Property (not escaped)", -1);
405                          
406                         el.append(out iter);
407                         el.set(iter, 0, "|", 1,   "(|) User defined method", -1);
408                  
409                         el.append(out iter);
410                         el.set(iter, 0, "*", 1,   "(*) Special property (eg. prop )", -1);
411                          
412                 
413                 }
414                 el.foreach((tm, tp, titer) => {
415                         GLib.Value val;
416                         el.get_value(titer, 0, out val);
417                          
418                         print("check %s against %s\n", (string)val, kflag);
419                         if (((string)val) == kflag) {
420                                 _this.kflag.el.set_active_iter(titer);
421                                 return true;
422                         }
423                         return false;
424                 });
425                 
426         
427                                              
428         }
429     }
430
431
432     public class Xcls_Label9 : Object
433     {
434         public Gtk.Label el;
435         private Xcls_PopoverProperty  _this;
436
437
438             // my vars (def)
439
440         // ctor
441         public Xcls_Label9(Xcls_PopoverProperty _owner )
442         {
443             _this = _owner;
444             this.el = new Gtk.Label( "Type" );
445
446             // my vars (dec)
447
448             // set gobject values
449             this.el.justify = Gtk.Justification.RIGHT;
450             this.el.xalign = 0.900000f;
451             this.el.visible = true;
452         }
453
454         // user defined functions
455     }
456
457     public class Xcls_ktype : Object
458     {
459         public Gtk.Entry el;
460         private Xcls_PopoverProperty  _this;
461
462
463             // my vars (def)
464
465         // ctor
466         public Xcls_ktype(Xcls_PopoverProperty _owner )
467         {
468             _this = _owner;
469             _this.ktype = this;
470             this.el = new Gtk.Entry();
471
472             // my vars (dec)
473
474             // set gobject values
475             this.el.visible = true;
476         }
477
478         // user defined functions
479     }
480
481     public class Xcls_Label11 : Object
482     {
483         public Gtk.Label el;
484         private Xcls_PopoverProperty  _this;
485
486
487             // my vars (def)
488
489         // ctor
490         public Xcls_Label11(Xcls_PopoverProperty _owner )
491         {
492             _this = _owner;
493             this.el = new Gtk.Label( "Name" );
494
495             // my vars (dec)
496
497             // set gobject values
498             this.el.justify = Gtk.Justification.RIGHT;
499             this.el.xalign = 0.900000f;
500             this.el.tooltip_text = "center, north, south, east, west";
501             this.el.visible = true;
502         }
503
504         // user defined functions
505     }
506
507     public class Xcls_kname : Object
508     {
509         public Gtk.Entry el;
510         private Xcls_PopoverProperty  _this;
511
512
513             // my vars (def)
514
515         // ctor
516         public Xcls_kname(Xcls_PopoverProperty _owner )
517         {
518             _this = _owner;
519             _this.kname = this;
520             this.el = new Gtk.Entry();
521
522             // my vars (dec)
523
524             // set gobject values
525             this.el.visible = true;
526         }
527
528         // user defined functions
529     }
530
531
532
533 }