src/Builder4/PopoverAddProp.bjs
[roobuilder] / src / Builder4 / PopoverAddProp.vala
1 static Xcls_PopoverAddProp  _PopoverAddProp;
2
3 public class Xcls_PopoverAddProp : Object
4 {
5     public Gtk.Popover el;
6     private Xcls_PopoverAddProp  _this;
7
8     public static Xcls_PopoverAddProp singleton()
9     {
10         if (_PopoverAddProp == null) {
11             _PopoverAddProp= new Xcls_PopoverAddProp();
12         }
13         return _PopoverAddProp;
14     }
15     public Xcls_model model;
16     public Xcls_namecol namecol;
17     public Xcls_namerender namerender;
18     public Xcls_type type;
19     public Xcls_typerender typerender;
20     public Xcls_from from;
21     public Xcls_fromrender fromrender;
22
23         // my vars (def)
24     public JsRender.NodePropType ptype;
25     public signal void select (JsRender.NodeProp prop);
26     public Xcls_MainWindow mainwindow;
27     public bool active;
28
29     // ctor
30     public Xcls_PopoverAddProp()
31     {
32         _this = this;
33         this.el = new Gtk.Popover( null );
34
35         // my vars (dec)
36         this.active = false;
37
38         // set gobject values
39         this.el.width_request = 900;
40         this.el.height_request = 800;
41         this.el.hexpand = false;
42         this.el.modal = true;
43         this.el.position = Gtk.PositionType.RIGHT;
44         var child_0 = new Xcls_ScrolledWindow2( _this );
45         child_0.ref();
46         this.el.add (  child_0.el  );
47     }
48
49     // user defined functions
50     public void show (Palete.Palete pal, JsRender.NodePropType ptype, string xtype,  Gtk.Widget onbtn) {
51     
52         /// what does this do?
53         //if (this.prop_or_listener  != "" && this.prop_or_listener == prop_or_listener) {
54         //      this.prop_or_listener = "";
55         //      this.el.hide();
56         //      return;
57         //}
58         
59         
60         
61         this.ptype = ptype;
62         
63         this.model.el.clear();
64     
65         Gtk.TreeIter iter;
66         var elementList = pal.getPropertiesFor( xtype, ptype);
67          
68         //print ("GOT " + elementList.length + " items for " + fullpath + "|" + type);
69                // console.dump(elementList);
70                
71         var miter = elementList.map_iterator();
72         while (miter.next()) {
73            var p = miter.get_value();
74             
75             this.model.el.append(out iter);
76                 
77                 var prop = p.toNodeProp();
78                 
79                  
80     
81             this.model.el.set(iter,
82                     0,  prop, 
83                     1,  prop.to_property_option_markup(),
84                     2,  prop.to_property_option_tooltip(),                
85                     3,  prop.name,
86                     4,  prop.rtype,
87                     5,  p.propertyof,
88                     -1
89             );
90         }
91         this.model.el.set_sort_column_id(3,Gtk.SortType.ASCENDING);    
92         
93         // set size up...
94         
95     
96         int w,h;
97         this.mainwindow.el.get_size(out w, out h);
98         
99         // left tree = 250, editor area = 500?
100         
101         // min 450?
102         // max hieght ...
103         this.el.set_size_request( 550, h);
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();   // why?
114         }       
115      //   this.hpane.el.set_position( 0);
116     }
117     public void clear () {
118      this.model.el.clear();
119     }
120     public void hide () {
121         this.ptype = JsRender.NodePropType.NONE;
122         this.el.hide();
123     }
124     public class Xcls_ScrolledWindow2 : Object
125     {
126         public Gtk.ScrolledWindow el;
127         private Xcls_PopoverAddProp  _this;
128
129
130             // my vars (def)
131
132         // ctor
133         public Xcls_ScrolledWindow2(Xcls_PopoverAddProp _owner )
134         {
135             _this = _owner;
136             this.el = new Gtk.ScrolledWindow( null, null );
137
138             // my vars (dec)
139
140             // set gobject values
141             this.el.shadow_type = Gtk.ShadowType.IN;
142             var child_0 = new Xcls_TreeView3( _this );
143             child_0.ref();
144             this.el.add (  child_0.el  );
145
146             // init method
147
148             this.el.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);
149         }
150
151         // user defined functions
152     }
153     public class Xcls_TreeView3 : Object
154     {
155         public Gtk.TreeView el;
156         private Xcls_PopoverAddProp  _this;
157
158
159             // my vars (def)
160
161         // ctor
162         public Xcls_TreeView3(Xcls_PopoverAddProp _owner )
163         {
164             _this = _owner;
165             this.el = new Gtk.TreeView();
166
167             // my vars (dec)
168
169             // set gobject values
170             this.el.tooltip_column = 2;
171             this.el.enable_tree_lines = true;
172             this.el.headers_visible = true;
173             var child_0 = new Xcls_model( _this );
174             child_0.ref();
175             this.el.set_model (  child_0.el  );
176             var child_1 = new Xcls_namecol( _this );
177             child_1.ref();
178             this.el.append_column (  child_1.el  );
179             var child_2 = new Xcls_type( _this );
180             child_2.ref();
181             this.el.append_column (  child_2.el  );
182             var child_3 = new Xcls_from( _this );
183             child_3.ref();
184             this.el.append_column (  child_3.el  );
185
186             // init method
187
188             {  
189                    var description = new Pango.FontDescription();
190                  description.set_size(10000);
191                 this.el.override_font(description);     
192                                 
193                 this.el.get_selection().set_mode( Gtk.SelectionMode.SINGLE);
194              
195             
196                 
197               
198                 
199             }
200
201             //listeners
202             this.el.row_activated.connect( (path, column)  => {
203             
204                 Gtk.TreeIter iter;
205             
206             
207                 var m = _this.model;
208             
209                 m.el.get_iter(out iter,path);
210             
211              
212                 var prop = m.getValue(iter);
213              
214             
215                 // hide the popover
216                 _this.el.hide();
217                  
218                 
219                 _this.select(prop);
220              
221             });
222         }
223
224         // user defined functions
225     }
226     public class Xcls_model : Object
227     {
228         public Gtk.ListStore el;
229         private Xcls_PopoverAddProp  _this;
230
231
232             // my vars (def)
233
234         // ctor
235         public Xcls_model(Xcls_PopoverAddProp _owner )
236         {
237             _this = _owner;
238             _this.model = this;
239             this.el = new Gtk.ListStore( 6, 
240 typeof(JsRender.NodeProp),  // 0 real key
241 typeof(string),  // 1 text display
242 typeof(string),  // 2 tooltip
243 typeof(string),  // sortable string
244 typeof(string), // prop type
245 typeof(string) // from interface
246
247   );
248
249             // my vars (dec)
250
251             // set gobject values
252         }
253
254         // user defined functions
255         public JsRender.NodeProp getValue (Gtk.TreeIter iter)
256         {
257         
258             GLib.Value value;
259             this.el.get_value(iter, 0, out value);
260          
261             return (JsRender.NodeProp)value;
262             
263         }
264     }
265
266     public class Xcls_namecol : Object
267     {
268         public Gtk.TreeViewColumn el;
269         private Xcls_PopoverAddProp  _this;
270
271
272             // my vars (def)
273
274         // ctor
275         public Xcls_namecol(Xcls_PopoverAddProp _owner )
276         {
277             _this = _owner;
278             _this.namecol = this;
279             this.el = new Gtk.TreeViewColumn();
280
281             // my vars (dec)
282
283             // set gobject values
284             this.el.sort_column_id = 3;
285             this.el.title = "Double click to add";
286             var child_0 = new Xcls_namerender( _this );
287             child_0.ref();
288             this.el.pack_start (  child_0.el , true );
289
290             // init method
291
292             this.el.add_attribute(_this.namerender.el , "text", 1  );
293              
294               this.el.add_attribute(_this.namerender.el , "tooltip", 2  );
295         }
296
297         // user defined functions
298     }
299     public class Xcls_namerender : Object
300     {
301         public Gtk.CellRendererText el;
302         private Xcls_PopoverAddProp  _this;
303
304
305             // my vars (def)
306
307         // ctor
308         public Xcls_namerender(Xcls_PopoverAddProp _owner )
309         {
310             _this = _owner;
311             _this.namerender = this;
312             this.el = new Gtk.CellRendererText();
313
314             // my vars (dec)
315
316             // set gobject values
317         }
318
319         // user defined functions
320     }
321
322
323     public class Xcls_type : Object
324     {
325         public Gtk.TreeViewColumn el;
326         private Xcls_PopoverAddProp  _this;
327
328
329             // my vars (def)
330
331         // ctor
332         public Xcls_type(Xcls_PopoverAddProp _owner )
333         {
334             _this = _owner;
335             _this.type = this;
336             this.el = new Gtk.TreeViewColumn();
337
338             // my vars (dec)
339
340             // set gobject values
341             this.el.sort_column_id = 4;
342             this.el.title = "Type";
343             var child_0 = new Xcls_typerender( _this );
344             child_0.ref();
345             this.el.pack_start (  child_0.el , true );
346
347             // init method
348
349             this.el.add_attribute(_this.typerender.el , "text", 4  );
350         }
351
352         // user defined functions
353     }
354     public class Xcls_typerender : Object
355     {
356         public Gtk.CellRendererText el;
357         private Xcls_PopoverAddProp  _this;
358
359
360             // my vars (def)
361
362         // ctor
363         public Xcls_typerender(Xcls_PopoverAddProp _owner )
364         {
365             _this = _owner;
366             _this.typerender = this;
367             this.el = new Gtk.CellRendererText();
368
369             // my vars (dec)
370
371             // set gobject values
372         }
373
374         // user defined functions
375     }
376
377
378     public class Xcls_from : Object
379     {
380         public Gtk.TreeViewColumn el;
381         private Xcls_PopoverAddProp  _this;
382
383
384             // my vars (def)
385
386         // ctor
387         public Xcls_from(Xcls_PopoverAddProp _owner )
388         {
389             _this = _owner;
390             _this.from = this;
391             this.el = new Gtk.TreeViewColumn();
392
393             // my vars (dec)
394
395             // set gobject values
396             this.el.sort_column_id = 5;
397             this.el.title = "From";
398             var child_0 = new Xcls_fromrender( _this );
399             child_0.ref();
400             this.el.pack_start (  child_0.el , true );
401
402             // init method
403
404             this.el.add_attribute(_this.fromrender.el , "text", 5);
405         }
406
407         // user defined functions
408     }
409     public class Xcls_fromrender : Object
410     {
411         public Gtk.CellRendererText el;
412         private Xcls_PopoverAddProp  _this;
413
414
415             // my vars (def)
416
417         // ctor
418         public Xcls_fromrender(Xcls_PopoverAddProp _owner )
419         {
420             _this = _owner;
421             _this.fromrender = this;
422             this.el = new Gtk.CellRendererText();
423
424             // my vars (dec)
425
426             // set gobject values
427         }
428
429         // user defined functions
430     }
431
432
433
434
435 }