9c9363373e1503b5c2ea68cbe2549f528e76af23
[app.Builder.js] / oldbuilder / MidPropTree.js
1 //<Script type="text/javascript">
2 Gio = imports.gi.Gio;
3 Gtk = imports.gi.Gtk;
4 GLib = imports.gi.GLib;
5 GObject = imports.gi.GObject;
6 Pango = imports.gi.Pango ;
7
8
9
10 XObject = imports.XObject.XObject;
11 console = imports.console;
12
13
14 Roo             = imports.Builder.Provider.Palete.Roo.Roo;
15
16
17
18 /**
19  * 
20  * Properties and events tree - that hides and shows when you press buttons on the left....
21  * 
22  */
23  
24 MidPropTree = new XObject({
25          
26         
27         xtype: Gtk.ScrolledWindow,
28         smooth_scroll : true,
29         pack : [ 'pack_end', false, true, 0 ],
30         
31         activeElement : false, // used by left tree to set what list to show.  
32         shadow_type :  Gtk.ShadowType.IN,
33         init : function() {
34             XObject.prototype.init.call(this); 
35             this.el.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
36             this.el.set_size_request ( 150, -1 );
37             this.shown = true;
38         },
39         
40         hideWin : function() {
41             
42             if (!this.shown) {
43                 return;
44             }
45             
46             var Window          = imports.Builder.Window.Window;            
47             if (Window.get('left').el.position < 160) {
48                 return;
49             }
50             Window.get('left').el.position = Window.get('left').el.position  - 150;
51                 
52             this.el.hide();
53             this.shown = false;
54         },
55         items : [
56             {
57                    
58                 
59                 xtype : Gtk.TreeView,
60                 
61                 enable_tree_lines :  true,
62                 tooltip_column : 2,
63                 headers_visible : false,
64                 // selection  -- set by init..
65                 init : function() {
66                     XObject.prototype.init.call(this); 
67                     
68            
69                     
70                     this.selection = this.el.get_selection();
71                     this.selection.set_mode( Gtk.SelectionMode.SINGLE);
72                  
73                 
74                     
75                     var description = new Pango.FontDescription.c_new();
76                     description.set_size(8000);
77                     this.el.modify_font(description);
78                     
79                        // this.column.add_attribute(this.column.items[1], "text", 1);
80                         
81                          
82                      
83                   //  this.expand_all();
84                 },
85                 listeners : {
86                     
87                     'cursor-changed' : function () {
88                         var iter = new Gtk.TreeIter();
89                         
90                         //console.log('changed');
91                         var m = this.get('model');
92                         var s = this.selection;
93                         s.get_selected(m.el, iter);
94                         var tp = m.el.get_path(iter).to_string();
95                         
96                         
97                         // var val = "";
98                         
99                         var key = m.getValue(tp, 0);
100                         
101                         var type = m.getValue(tp, 1);
102                         var skel = m.getValue(tp, 3);
103                         var etype = m.getValue(tp, 5);
104                         
105                         
106                         MidPropTree.hideWin();
107                         var LeftPanel       = imports.Builder.LeftPanel.LeftPanel;
108                         if (type == 'function') {
109                             
110                             if (etype != 'events') {
111                                 key = '|' + key;
112                             }
113                             
114                             LeftPanel.get('model').add({
115                                 key :  key, 
116                                 type : type,
117                                 val  : skel,
118                                 etype : etype
119                             })  
120                             return;
121                         }
122                         
123                         if (type.indexOf('.') > -1 || 
124                                 type == 'boolean') {
125                              key = '|' + key;
126                         }
127                         
128                         LeftPanel.get('model').add( {
129                             key : key, 
130                             type : type,
131                             //skel  : skel,
132                             etype : etype
133                            }) //, skel);
134                         
135                         
136                     }
137                 },
138                 items : [
139                 
140                     {
141                         id : 'model',
142                         pack : [ 'set_model' ],
143                         xtype : Gtk.ListStore,
144                         currentData : false,
145                         init : function() {
146                             XObject.prototype.init.call(this); 
147                             this.el.set_column_types ( 6, [
148                                 GObject.TYPE_STRING,  // real key
149                                  GObject.TYPE_STRING, // real type
150                                  GObject.TYPE_STRING, // docs ?
151                                  GObject.TYPE_STRING, // visable desc
152                                  GObject.TYPE_STRING, // function desc
153                                  GObject.TYPE_STRING // element type (event|prop)
154                                 
155                             ] );
156                                 
157                         },
158                         getValue : function(treepath, col)
159                         {
160                             var tp = new Gtk.TreePath.from_string (treepath);
161                             var iter = new Gtk.TreeIter();
162                             this.el.get_iter (iter, tp);
163                             var value = new GObject.Value('');
164                             this.el.get_value(iter, col, value);
165                             return value.value;
166                             
167                         },
168                         /*
169                         load : function (ar)
170                         {
171                             this.el.clear();
172                             // roo specific..
173                             var LeftTree       = imports.Builder.LeftTree.LeftTree;
174                             var fullpath = LeftTree.get('model').file.guessName(ar);
175                             var palete = LeftTree.getPaleteProvider();
176                             
177                             
178                             this.currentData  = false;
179                             if (!fullpath.length) {
180                                 return;
181                             }
182                             palete.getProperties()
183                             
184                             this.currentData = Roo.proplist[fullpath];
185                             
186                              
187                              
188                             
189                         },
190                         
191                         */
192                         
193                         
194                         showData : function (type) 
195                         {
196                             this.el.clear();
197                             if (!MidPropTree.activeElement || !type) {
198                                 return; // no active element
199                             }
200                             var LeftTree       = imports.Builder.LeftTree.LeftTree;
201                             var fullpath = LeftTree.get('model').file.guessName(MidPropTree.activeElement);
202                             var palete = LeftTree.getPaleteProvider();
203                             
204                              
205                             
206                             Seed.print('Showing right?');
207                             if (!MidPropTree.shown) {
208                                 var Window          = imports.Builder.Window.Window;
209                                 Window.get('left').el.position = Window.get('left').el.position  + 150;
210                                 MidPropTree.el.show();
211                                 MidPropTree.shown = true;
212                             }
213                             
214                             var elementList = palete.getPropertiesFor(fullpath, type);
215                             print ("GOT " + elementList.length + " items for " + fullpath + "|" + type);
216                             console.dump(elementList);
217                            
218                             
219                             var iter = new Gtk.TreeIter();
220                             for(var i =0 ; i < elementList.length; i++) {
221                                 var p=elementList[i];
222                                 this.el.append(iter);
223                               //  console.log( '<b>' + p.name +'</b> ['+p.type+']');
224                                     //GObject.TYPE_STRING,  // real key
225                                     // GObject.TYPE_STRING, // real type
226                                     // GObject.TYPE_STRING, // docs ?
227                                     // GObject.TYPE_STRING // func def?
228                                     
229                                 
230                                 this.el.set_value(iter, 0, p.name);
231                                 this.el.set_value(iter, 1, p.type);
232                                 this.el.set_value(iter, 2, '<span size="small"><b>' + p.name +'</b> ['+p.type+']</span>' + "\n" + p.desc);
233                                 this.el.set_value(iter, 3, p.sig ? p.sig  : '');
234                                 this.el.set_value(iter, 4, '<span size="small"><b>' + p.name +'</b> ['+p.type+']</span>');
235                                 this.el.set_value(iter, 5, type);
236                                 
237                             }
238                              
239                           
240                             
241                         }
242                          
243                         
244                     },
245                   
246                     
247
248                     {
249                         
250                         xtype: Gtk.TreeViewColumn,
251                         pack : ['append_column'],
252                         init : function() {
253                             XObject.prototype.init.call(this); 
254                  
255                         
256                             this.el.add_attribute(this.items[0].el , 'markup', 4  );
257                         },
258                         items : [
259                             {
260                                 xtype : Gtk.CellRendererText,
261                                 pack : ['pack_start'],
262                                 
263                             }
264                         ]
265                     }
266                 ]   
267             }
268         ]    
269             
270     }
271
272 );
273