README.txt
[app.Builder.js] / Builder / 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 s = this.selection;
92                         s.get_selected(MidPropTree.get('model').el, iter);
93                         
94                         
95                         // var val = "";
96                         value = new GObject.Value('');
97                         MidPropTree.get('model').el.get_value(iter, 0, value);
98                         var key = value.value;
99                         value = new GObject.Value('');
100                         MidPropTree.get('model').el.get_value(iter, 1, value);
101                         var type = value.value;
102                         
103                         
104                         value = new GObject.Value('');
105                         MidPropTree.get('model').el.get_value(iter, 3, value);
106                         var skel = value.value;
107                         
108                         
109                         MidPropTree.hideWin();
110                         var LeftPanel       = imports.Builder.LeftPanel.LeftPanel;
111                         if (type == 'function') {
112                             
113                             LeftPanel.get('model').add('|' +key, type, skel) //, skel);
114                             return;
115                         }
116                         
117                         LeftPanel.get('model').add(key, type) //, skel);
118                         
119                         
120                     }
121                 },
122                 items : [
123                 
124                     {
125                         id : 'model',
126                         pack : [ 'set_model' ],
127                         xtype : Gtk.ListStore,
128                         currentData : false,
129                         init : function() {
130                             XObject.prototype.init.call(this); 
131                             this.el.set_column_types ( 5, [
132                                 GObject.TYPE_STRING,  // real key
133                                  GObject.TYPE_STRING, // real type
134                                  GObject.TYPE_STRING, // docs ?
135                                  GObject.TYPE_STRING, // visable desc
136                                  GObject.TYPE_STRING // function desc
137                                 
138                             ] );
139                                 
140                         },
141                         /*
142                         load : function (ar)
143                         {
144                             this.el.clear();
145                             // roo specific..
146                             var LeftTree       = imports.Builder.LeftTree.LeftTree;
147                             var fullpath = LeftTree.get('model').file.guessName(ar);
148                             var palete = LeftTree.getPaleteProvider();
149                             
150                             
151                             this.currentData  = false;
152                             if (!fullpath.length) {
153                                 return;
154                             }
155                             palete.getProperties()
156                             
157                             this.currentData = Roo.proplist[fullpath];
158                             
159                              
160                              
161                             
162                         },
163                         
164                         */
165                         
166                         
167                         showData : function (type) 
168                         {
169                             this.el.clear();
170                             if (!MidPropTree.activeElement || !type) {
171                                 return; // no active element
172                             }
173                             var LeftTree       = imports.Builder.LeftTree.LeftTree;
174                             var fullpath = LeftTree.get('model').file.guessName(MidPropTree.activeElement);
175                             var palete = LeftTree.getPaleteProvider();
176                             
177                              
178                             
179                             Seed.print('Showing right?');
180                             if (!MidPropTree.shown) {
181                                 var Window          = imports.Builder.Window.Window;
182                                 Window.get('left').el.position = Window.get('left').el.position  + 150;
183                                 MidPropTree.el.show();
184                                 MidPropTree.shown = true;
185                             }
186                             
187                             var elementList = palete.getPropertiesFor(fullpath, type);
188                             print ("GOT " + elementList.length + " items for " + fullpath + "|" + type);
189                             
190                            
191                             
192                             var iter = new Gtk.TreeIter();
193                             for(var i =0 ; i < elementList.length; i++) {
194                                 var p=elementList[i];
195                                 this.el.append(iter);
196                               //  console.log( '<b>' + p.name +'</b> ['+p.type+']');
197                                     //GObject.TYPE_STRING,  // real key
198                                     // GObject.TYPE_STRING, // real type
199                                     // GObject.TYPE_STRING, // docs ?
200                                     // GObject.TYPE_STRING // func def?
201                                     
202                                 
203                                 this.el.set_value(iter, 0, p.name);
204                                 this.el.set_value(iter, 1, p.type);
205                                 this.el.set_value(iter, 2, '<span size="small"><b>' + p.name +'</b> ['+p.type+']</span>' + "\n" + p.desc);
206                                 this.el.set_value(iter, 3, p.sig ? p.sig  : '');
207                                 this.el.set_value(iter, 4, '<span size="small"><b>' + p.name +'</b> ['+p.type+']</span>');
208                                 
209                             }
210                              
211                           
212                             
213                         }
214                          
215                         
216                     },
217                   
218                     
219
220                     {
221                         
222                         xtype: Gtk.TreeViewColumn,
223                         pack : ['append_column'],
224                         init : function() {
225                             XObject.prototype.init.call(this); 
226                  
227                         
228                             this.el.add_attribute(this.items[0].el , 'markup', 4  );
229                         },
230                         items : [
231                             {
232                                 xtype : Gtk.CellRendererText,
233                                 pack : ['pack_start']
234                             }
235                         ]
236                     }
237                 ]   
238             }
239         ]    
240             
241     }
242
243 );
244