Sample/Window.bjs
authorAlan Knowles <alan@akbkhome.com>
Wed, 22 Sep 2010 05:51:49 +0000 (13:51 +0800)
committerAlan Knowles <alan@akbkhome.com>
Wed, 22 Sep 2010 05:51:49 +0000 (13:51 +0800)
Sample/Window.bjs

index bf56c10..146394d 100644 (file)
                                                                             "|editSelected": "function(e) {\n    print(\"EDIT SELECTED?\");\n    var iter = new Gtk.TreeIter();\n    var s = this.get('/LeftPanel.view').selection;\n    s.get_selected(this.get('/LeftPanel.model').el, iter);\n    var m = this.get('/LeftPanel.model')\n   \n    var gval = new GObject.Value('');\n    this.el.get_value(iter, 0 ,gval);\n    var val = '' + gval.value;\n    \n    gval = new GObject.Value('');\n    this.el.get_value(iter, 1 ,gval);\n    var rval = gval.value;\n    var activePath = this.el.get_path(iter).to_string(); \n    this.activePath = activePath ;\n    // was activeIter...\n    //  not listener...\n\n    var showEditor = false;\n    \n    if (val[0] == '!') {\n        showEditor = true;\n    }\n    if (val[0] == '|') {\n        if (rval.match(/function/g) || rval.match(/\\n/g) || rval.length > 20) {\n            showEditor = true;\n        }\n    }\n    \n    if (showEditor) {\n        var _this = this;\n        this.activePath = false;\n        GLib.timeout_add(0, 1, function() {\n            //   Gdk.threads_enter();\n            _this.get('/BottomPane').el.show();\n            _this.get('/RightEditor').el.show();\n            _this.get('/RightEditor.view').load( rval );\n            \n            e.editing_done();\n            e.remove_widget();\n            _this.activePath = activePath ;\n            \n     //       Gdk.threads_leave();\n            return false;\n        });\n        return;\n    }\n      this.get('/BottomPane').el.hide();\n    this.get('/RightEditor').el.hide();\n\n        //var type = this.getValue(this.el.get_path(iter).to_string(),4);\n        \n        \n}\n",
                                                                             "|getIterValue": "function(iter, col) {\n     var gval = new GObject.Value('');\n    this.get('/LeftPanel.model').el.get_value(iter, col ,gval);\n    return '' + gval.value;\n}\n",
                                                                             "|getType": "function(treepath) {\n     return this.getValue(treepath, 4);\n}\n",
-                                                                            "|getValue": "function(treepath_str, col) {\n      var iter = new Gtk.TreeIter();\n    this.el.get_iter(iter, new Gtk.TreePath.from_string(treepath_str));\n    \n    var gval = new GObject.Value('');\n    this.get('/LeftPanel.model').el.get_value(iter, col ,gval);\n    var val = '' + gval.value;\n    if (col != 1) {\n        return val;\n    }\n    var type = this.getType(this.el.get_path(iter).to_string());\n    print(\"TYPE: \" +type + \" -  val:\" + val);\n    switch(type.toLowerCase()) {\n        case 'number':\n        case 'uint':\n        case 'int':\n            return parseFloat(val); // Nan ?? invalid!!?        \n        case 'float':\n        case 'gfloat':\n            return 1.0 * parseFloat(val); // Nan ?? invalid!!?\n        case 'boolean':\n            return val == 'true' ? true : false;\n        default: \n            var nv = parseFloat(val);\n            if (!isNaN(nv) && (val == ''+nv)) {\n                return nv;\n            }\n            return val;\n    }\n                            \n}\n",
+                                                                            "|getValue": "function(treepath_str, col) {\n      var iter = new Gtk.TreeIter();\n    this.el.get_iter(iter, new Gtk.TreePath.from_string(treepath_str));\n    \n    var gval = new GObject.Value('');\n    this.get('/LeftPanel.model').el.get_value(iter, col ,gval);\n    var val = '' + gval.value;\n    if (col != 1) {\n        return val;\n    }\n    var type = this.getType(this.el.get_path(iter).to_string());\n    //print(\"TYPE: \" +type + \" -  val:\" + val);\n    switch(type.toLowerCase()) {\n        case 'number':\n        case 'uint':\n        case 'int':\n            return parseFloat(val); // Nan ?? invalid!!?        \n        case 'float':\n        case 'gfloat':\n            return 1.0 * parseFloat(val); // Nan ?? invalid!!?\n        case 'boolean':\n            return val == 'true' ? true : false;\n        default: \n            var nv = parseFloat(val);\n            if (!isNaN(nv) && (val == ''+nv)) {\n                return nv;\n            }\n            return val;\n    }\n                            \n}\n",
                                                                             "|init": "function() {\n    XObject.prototype.init.call(this);\nthis.el.set_column_types ( 6, [\n                                GObject.TYPE_STRING,  // 0 real key\n                                GObject.TYPE_STRING, // 1 real value \n                                 GObject.TYPE_STRING,  // 2 visable key\n                                 GObject.TYPE_STRING, // 3 visable value\n                                 GObject.TYPE_STRING, // 4 need to store type of!!!\n                                  GObject.TYPE_STRING // 5 tooltip\n                              \n                            ]);\n}\n",
                                                                             "|load": "function(ar) {\n  this.el.clear();\n                        \n    this.get('/RightEditor').el.hide();\n    if (ar === false) {\n        return ;\n    }\n    var ret = {}; \n    \n\n    var provider = this.get('/LeftTree').getPaleteProvider();\n     var iter = new Gtk.TreeIter();\n     \n    // sort!!!?\n    var keys  = XObject.keys(ar);\n    keys.sort();\n    ar.listeners = ar.listeners || {};\n    \n    for (var i in ar.listeners ) {\n        this.el.append(iter);\n        var p = this.el.get_path(iter).to_string();\n        ret['!' + i] = p;\n        \n        this.el.set_value(iter, 0, '!'+  i  );\n        this.el.set_value(iter, 1, '' + ar.listeners[i]);\n        this.el.set_value(iter, 2, '<b>'+ i + '</b>');\n        \n        this.el.set_value(iter, 3, '' + this.toShort(ar.listeners[i]));\n        this.el.set_value(iter, 4, 'function');\n        this.el.set_value(iter, 5, i + ' : ' + ar.listeners[i]);\n    }\n    \n    \n   \n    var _this = this;\n    keys.forEach(function(i) {\n        if (typeof(ar[i]) == 'object') {\n            return;\n        }\n        \n        var type = provider.findType(ar, i, ar[i]);\n        \n        _this.el.append(iter);\n        var p = _this.el.get_path(iter).to_string();\n        ret[i] = p;\n        _this.el.set_value(iter, 0, ''+i);\n        _this.el.set_value(iter, 1, '' + ar[i]);  \n        _this.el.set_value(iter, 2, ''+i);\n        _this.el.set_value(iter, 3, ''+ _this.toShort(ar[i]));\n        _this.el.set_value(iter, 4, ''+type);\n        _this.el.set_value(iter, 5, type + ' : ' + ar[i]);\n    })\n    return ret;\n}\n",
                                                                             "|startEditing": "function(path,col) {\n    /**\n    * start editing path (or selected if not set..)\n    * @param {String|false} path  (optional) treepath to edit - selected tree gets\n    *     edited by default.\n    * @param {Number} 0 or 1 (optional)- column to edit. \n    */\n     var tp;\n    if (typeof(path) == 'string') {\n        tp = new Gtk.TreePath.from_string(path);\n    } else {\n        var iter = new Gtk.TreeIter();\n        var s = this.get('/LeftPanel.view').selection;\n        s.get_selected(this.el, iter);\n        tp = this.el.get_path(iter);\n        path = tp.to_string();\n    }\n    \n   \n    // which colum is to be edited..\n    var colObj = false;\n    if (typeof(col) == 'undefined') {\n        var k = this.getValue(path, 0);\n        colObj = (!k.length || k == '|') ? \n            this.get('/LeftPanel').propertyColumn : this.get('/LeftPanel').editableColumn;\n    } else {\n        colObj = col ? this.get('/LeftPanel').editableColumn : this.get('/LeftPanel').propertyColumn;\n    }\n    \n    // make sure the pulldown is set correctly..\n    // not really needed for second col...\n\n    var provider = this.get('/LeftTree').getPaleteProvider();\n   \n    var type = this.get('/LeftPanel.model').getType(path);\n    var opts = provider.findOptions(type);\n    var renderer = this.get('/LeftPanel').editableColumn.items[0].el;\n    \n    if (opts === false) {\n        this.get('/LeftPanel').editableColumn.setOptions([]);\n        renderer.has_entry = true; /// probably does not have any effect.\n    } else {\n        this.get('/LeftPanel').editableColumn.setOptions(opts);\n        renderer.has_entry = false;\n    }\n    \n    var _this=this;\n    // iter now has row...\n    GLib.timeout_add(0, 100, function() {\n        \n        colObj.items[0].el.editable = true; // esp. need for col 0..\n        _this.get('/LeftPanel.view').el.set_cursor_on_cell(\n            tp,\n            colObj.el,\n            colObj.items[0].el,\n            true\n        );\n    });\n    \n}\n",