+ delete data[val];
+ }
+
+
+ this.load(data);
+ this.get('/LeftTree.model').changed(data, true);
+
+ },
+ getIterValue : function(iter, col) {
+ var gval = new GObject.Value('');
+ this.get('/LeftPanel.model').el.get_value(iter, col ,gval);
+ return '' + gval.value;
+ },
+ getType : function(treepath) {
+ return this.getValue(treepath, 4);
+ },
+ getValue : function(treepath_str, col)
+ {
+ // get's the value in a row.. - keys - returns string, values - formats it..
+
+ var iter = new Gtk.TreeIter();
+ this.el.get_iter(iter, new Gtk.TreePath.from_string(treepath_str));
+
+ var gval = new GObject.Value('');
+ this.get('/LeftPanel.model').el.get_value(iter, col ,gval);
+ var val = '' + gval.value;
+
+ if (col != 1) {
+ return val;
+ }
+ var type = this.getType(this.el.get_path(iter).to_string());
+ //print("TYPE: " +type + " - val:" + val);
+ switch(type.toLowerCase()) {
+ case 'number':
+ case 'uint':
+ case 'int':
+ return parseFloat(val); // Nan ?? invalid!!?
+ case 'float':
+ case 'gfloat':
+ return 1.0 * parseFloat(val); // Nan ?? invalid!!?
+ case 'boolean':
+ return val == 'true' ? true : false;
+ default:
+ var nv = parseFloat(val);
+ if (!isNaN(nv) && (val == ''+nv)) {
+ return nv;
+ }
+ return val;
+ }
+
+ },
+ init : function() {
+ XObject.prototype.init.call(this);
+ this.el.set_column_types ( 6, [
+ GObject.TYPE_STRING, // 0 real key
+ GObject.TYPE_STRING, // 1 real value
+ GObject.TYPE_STRING, // 2 visable key
+ GObject.TYPE_STRING, // 3 visable value
+ GObject.TYPE_STRING, // 4 need to store type of!!!
+ GObject.TYPE_STRING // 5 tooltip
+
+ ]);
+ },
+ load : function(ar) {
+ this.el.clear();
+
+ //this.get('/RightEditor').el.hide();
+ if (ar === false) {
+ return ;
+ }
+ var ret = {};
+
+
+ var provider = this.get('/LeftTree').getPaleteProvider();
+ var iter = new Gtk.TreeIter();
+
+ // sort!!!?
+ var keys = XObject.keys(ar);
+ keys.sort();
+ ar.listeners = ar.listeners || {};
+
+ for (var i in ar.listeners ) {
+ this.el.append(iter);
+ var p = this.el.get_path(iter).to_string();
+ ret['!' + i] = p;
+
+ this.el.set_value(iter, 0, '!'+ i );
+ this.el.set_value(iter, 1, '' + ar.listeners[i]);
+ this.el.set_value(iter, 2, '<b>'+ i + '</b>');
+
+ this.el.set_value(iter, 3, '' + this.toShort(ar.listeners[i]));
+ this.el.set_value(iter, 4, 'function');
+ this.el.set_value(iter, 5, i + ' : ' + ar.listeners[i]);
+ }
+
+
+
+ var _this = this;
+ keys.forEach(function(i) {
+ if (typeof(ar[i]) == 'object') {
+ return;
+ }
+
+ var type = provider.findType(ar, i, ar[i]);
+
+ _this.el.append(iter);
+ var p = _this.el.get_path(iter).to_string();
+ ret[i] = p;
+ _this.el.set_value(iter, 0, ''+i);
+ _this.el.set_value(iter, 1, '' + ar[i]);
+ _this.el.set_value(iter, 2, ''+i);
+ _this.el.set_value(iter, 3, ''+ _this.toShort(ar[i]));
+ _this.el.set_value(iter, 4, ''+type);
+ _this.el.set_value(iter, 5, type + ' : ' + ar[i]);
+ })
+ return ret;
+ },
+ startEditing : function(path,col) {
+
+ // alled by menu 'edit' currently..
+ /**
+ * start editing path (or selected if not set..)
+ * @param {String|false} path (optional) treepath to edit - selected tree gets
+ * edited by default.
+ * @param {Number} 0 or 1 (optional)- column to edit.
+ */
+ // fix tp to be the 'treepath' string (eg. 0/1/2...)
+ var tp;
+ if (typeof(path) == 'string') {
+ tp = new Gtk.TreePath.from_string(path);
+ } else {
+ var iter = new Gtk.TreeIter();
+ var s = this.get('/LeftPanel.view').selection;
+ s.get_selected(this.el, iter);
+ tp = this.el.get_path(iter);
+ path = tp.to_string();