1 //<Script type="text/javascript">
5 GLib = imports.gi.GLib;
6 GObject = imports.gi.GObject;
7 Pango = imports.gi.Pango ;
9 XObject = imports.XObject.XObject;
10 console = imports.console;
13 LeftPanelPopup = imports.Builder.LeftPanelPopup.LeftPanelPopup;
14 RightEditor = imports.Builder.RightEditor.RightEditor;
17 * really the properties..
21 LeftPanel = new XObject({
23 xtype: Gtk.ScrolledWindow,
25 pack : [ 'pack_end', true, true, 0 ],
26 shadow_type : Gtk.ShadowType.IN,
29 XObject.prototype.init.call(this);
30 this.el.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);
39 headers_visible : false ,
40 enable_tree_lines : true ,
43 XObject.prototype.init.call(this);
45 this.selection = this.el.get_selection();
46 this.selection.set_mode( Gtk.SelectionMode.SINGLE);
49 var description = new Pango.FontDescription.c_new();
50 description.set_size(8000);
51 this.el.modify_font(description);
56 'button-press-event' : function(tv, ev) {
57 if (ev.type != Gdk.EventType.BUTTON_PRESS || ev.button.button != 3) {
58 Seed.print("click" + ev.type);
64 this.el.get_path_at_pos(ev.button.x,ev.button.y, res);
66 if (res.column.title == 'value') {
69 if (!LeftPanelPopup.el) LeftPanelPopup.init();
70 LeftPanelPopup.el.set_screen(Gdk.Screen.get_default());
71 LeftPanelPopup.el.show_all();
72 LeftPanelPopup.el.popup(null, null, null, null, 3, ev.button.time);
73 Seed.print("click:" + res.column.title);
82 pack : [ 'set_model' ],
83 xtype : Gtk.ListStore,
87 XObject.prototype.init.call(this);
88 this.el.set_column_types ( 5, [
89 GObject.TYPE_STRING, // real key
90 GObject.TYPE_STRING, // real value
91 GObject.TYPE_STRING, // visable key
92 GObject.TYPE_STRING, // visable value
93 GObject.TYPE_STRING// need to store type of!!!
99 toShort: function(str) {
100 var a = typeof(str) == 'string' ? str.split("\n") : [];
101 return a.length > 1 ? a[0] + '....' : '' + str;
107 RightEditor.el.hide();
113 var iter = new Gtk.TreeIter();
115 if (typeof(ar[i]) == 'object') {
118 this.el.append(iter);
119 this.el.set_value(iter, 0, i);
120 this.el.set_value(iter, 1, '' + ar[i]);
121 this.el.set_value(iter, 2, i);
122 this.el.set_value(iter, 3, this.toShort(ar[i]));
123 this.el.set_value(iter, 4, typeof(ar[i]));
125 ar.listeners = ar.listeners || {};
126 for (var i in ar.listeners ) {
127 this.el.append(iter);
128 this.el.set_value(iter, 0, '!'+ i );
129 this.el.set_value(iter, 1, '' + ar.listeners[i]);
130 this.el.set_value(iter, 2, '<b>'+ i + '</b>');
132 this.el.set_value(iter, 3, '' + this.toShort(ar.listeners[i]));
133 this.el.set_value(iter, 4, typeof(ar[i]));
140 add : function(key, type, val, skel) {
141 type = type.toLowerCase();
142 var data = this.toJS();
143 if ((typeof(data[key]) != 'undefined') &&
144 (typeof(val) == 'undefined') ) {
147 if (typeof(val) == 'undefined') {
150 if (type == 'boolean') {
153 if (type == 'number') {
163 var LeftTree = imports.Builder.LeftTree.LeftTree;
164 LeftTree.get('model').changed(data, true);
168 deleteSelected : function()
170 var data = this.toJS();
171 var iter = new Gtk.TreeIter();
172 var s = LeftPanel.get('view').selection;
173 s.get_selected(this.el, iter);
176 var gval = new GObject.Value('');
177 LeftPanel.get('model').el.get_value(iter, 0 ,gval);
178 if (typeof(data[gval.value]) == 'undefined') {
181 delete data[gval.value];
183 var LeftTree = imports.Builder.LeftTree.LeftTree;
184 LeftTree.get('model').changed(data, true);
191 changed : function(str, doRefresh)
193 if (!this.activeIter) {
196 this.el.set_value(this.activeIter, 1, str);
197 this.el.set_value(this.activeIter, 3, '' + this.toShort(str));
198 // update the tree...
199 var LeftTree = imports.Builder.LeftTree.LeftTree;
200 LeftTree.get('model').changed(this.toJS(), doRefresh);
204 var iter = new Gtk.TreeIter();
205 LeftPanel.get('model').el.get_iter_first(iter);
210 var k = this.getValue(iter, 0);
213 ar.listeners = ar.listeners || {};
214 ar.listeners[k.substring(1)] = this.getValue(iter, 1);
217 ar[ k ] = this.getValue(iter, 1);
220 if (! LeftPanel.get('model').el.iter_next(iter)) {
224 Seed.print(JSON.stringify(ar));
226 // convert the list into a json string..
230 getValue: function (iter, col) {
231 var gval = new GObject.Value('');
232 LeftPanel.get('model').el.get_value(iter, col ,gval);
233 var val = '' + gval.value;
237 gval = new GObject.Value('');
238 LeftPanel.get('model').el.get_value(iter,4 ,gval);
241 return parseFloat(val);
243 return val == 'true' ? true : false;
255 xtype: Gtk.TreeViewColumn,
256 pack : ['append_column'],
260 XObject.prototype.init.call(this);
261 this.el.add_attribute(this.items[0].el , 'markup', 2 );
265 xtype : Gtk.CellRendererText,
266 pack : ['pack_start'],
273 xtype: Gtk.TreeViewColumn,
274 pack : ['append_column'],
278 XObject.prototype.init.call(this);
279 this.el.add_attribute(this.items[0].el , 'text', 3 );
287 xtype : Gtk.CellRendererText,
288 pack : ['pack_start'],
295 edited : function(r,p, t) {
296 LeftPanel.get('model').changed(t, true);
297 LeftPanel.get('model').activeIter = false;
301 'editing-started' : function(r, e, p) {
303 var iter = new Gtk.TreeIter();
304 var s = LeftPanel.get('view').selection;
305 s.get_selected(LeftPanel.get('model').el, iter);
308 var gval = new GObject.Value('');
309 LeftPanel.get('model').el.get_value(iter, 0 ,gval);
310 var val = '' + gval.value;
312 gval = new GObject.Value('');
313 LeftPanel.get('model').el.get_value(iter, 1 ,gval);
314 var rval = gval.value;
316 LeftPanel.get('model').activeIter = iter;
319 var showEditor = false;
325 if (rval.match(/function/g) || rval.match(/\n/g)) {
331 RightEditor.el.hide();
333 var type = LeftPanel.get('model').getValue(iter,4);
336 if (type == 'boolean') {
337 val = ! LeftPanel.get('model').getValue(iter,1);
340 LeftPanel.get('model').activeIter = false;
341 GLib.timeout_add(0, 1, function() {
342 // Gdk.threads_enter();
346 LeftPanel.get('model').activeIter = iter;
347 LeftPanel.get('model').changed(''+val,true);
356 LeftPanel.get('model').activeIter = false;
357 GLib.timeout_add(0, 1, function() {
358 // Gdk.threads_enter();
359 RightEditor.el.show();
360 RightEditor.get('view').load( rval );
364 LeftPanel.get('model').activeIter = iter;
366 // Gdk.threads_leave();
369 //r.stop_editing(true);