Sample/Window.bjs
authorAlan Knowles <alan@akbkhome.com>
Mon, 1 Nov 2010 06:16:56 +0000 (14:16 +0800)
committerAlan Knowles <alan@akbkhome.com>
Mon, 1 Nov 2010 06:16:56 +0000 (14:16 +0800)
Sample/Window.bjs

index 16de1dd..eb8f8d3 100644 (file)
                                                                     "items": [
                                                                         {
                                                                             "listeners": {
-                                                                                "button_press_event": "function (self, ev) {\n \tconsole.log(\"button press?\");\n        if (ev.type != Gdk.EventType.BUTTON_PRESS  || ev.button.button != 3) {\n            print(\"click\" + ev.type);\n            return false;\n        }\n      \n    \n        var res = {}; \n        this.get('/LeftTree.view').el.get_path_at_pos(ev.button.x,ev.button.y, res);\n        \n        if (!this.get('/LeftTreeMenu').el)  this.get('/LeftTreeMenu').init();\n        \n        this.get('/LeftTreeMenu').el.set_screen(Gdk.Screen.get_default());\n        this.get('/LeftTreeMenu').el.show_all();\n        this.get('/LeftTreeMenu').el.popup(null, null, null, null, 3, ev.button.time);\n        print(\"click:\" + res.path.to_string());\n        return false;\n}",
+                                                                                "button_press_event": "function (self, ev) {\n \tconsole.log(\"button press?\");\n        if (ev.type != Gdk.EventType.BUTTON_PRESS  || ev.button.button != 3) {\n            print(\"click\" + ev.type);\n            return false;\n        }\n      \n    \n        var res = {}; \n        this.get('/LeftTree.view').el.get_path_at_pos(ev.button.x,ev.button.y, res);\n        \n        if (!this.get('/LeftTreeMenu').el)  { this.get('/LeftTreeMenu').init(); }\n        \n        this.get('/LeftTreeMenu').el.set_screen(Gdk.Screen.get_default());\n        this.get('/LeftTreeMenu').el.show_all();\n        this.get('/LeftTreeMenu').el.popup(null, null, null, null, 3, ev.button.time);\n        print(\"click:\" + res.path.to_string());\n        return false;\n}",
                                                                                 "drag_begin": "function (self, drag_context) {\n\tprint('SOURCE: drag-begin');\n         this.targetData = false;\n        // find what is selected in our tree...\n        var iter = new Gtk.TreeIter();\n        var s = this.selection;\n        s.get_selected(this.get('/LeftTree.model').el, iter);\n\n        // set some properties of the tree for use by the dropped element.\n        var value = new GObject.Value('');\n        this.get('/LeftTree.model').el.get_value(iter, 2, value);\n        var data = JSON.parse(value.value);\n        var xname = this.get('/LeftTree.model').file.guessName(data);\n        \n        this.el.dragData = xname;\n        this.el.dropList = this.get('/LeftTree').getPaleteProvider().getDropList(xname);\n        \n\n        // make the drag icon a picture of the node that was selected\n        var path = this.get('/LeftTree.model').el.get_path(iter);\n        this.el.treepath = path.to_string();\n        \n        var pix = this.el.create_row_drag_icon ( path);\n        \n        Gtk.drag_set_icon_pixmap (ctx,\n            pix.get_colormap(),\n            pix,\n            null,\n            -10,\n            -10);\n        \n        return true;\n}",
                                                                                 "drag_end": "function (self, drag_context) {\n\tSeed.print('LEFT-TREE: drag-end');\n        this.el.dragData = false;\n        this.el.dropList = false;\n        this.targetData = false;\n        this.get('/LeftTree.view').highlight(false);\n        return true;\n}",
                                                                                 "drag_motion": "function (self, ctx, x, y, time) {\n    console.log(\"LEFT-TREE: drag-motion\");\n                var src = Gtk.drag_get_source_widget(ctx);\n\n                // a drag from  elsewhere...- prevent drop..\n                if (!src.dragData) {\n                    print(\"no drag data!\");\n                    Gdk.drag_status(ctx, 0, time);\n                    this.targetData = false;\n                    return true;\n                }\n                var action = Gdk.DragAction.COPY;\n                if (src == this.el) {\n                    // unless we are copying!!! ctl button..\n                    action = ctx.actions & Gdk.DragAction.MOVE ? Gdk.DragAction.MOVE : Gdk.DragAction.COPY ;\n                }\n                var data = {};\n\n\t\tif (!this.get('/LeftTree.model').el.iter_n_children(null)) {\n\t\t\t// no children.. -- asume it's ok..\n\t\t\tthis.targetData =  [ '' , Gtk.TreeViewDropPosition.INTO_OR_AFTER , ''];\n\t\t\tGdk.drag_status(ctx, action ,time);\n\t\t\treturn true;\n\t\t}\n\n                print(\"GETTING POS\");\n                var isOver = this.get('/LeftTree.view').el.get_dest_row_at_pos(x,y, data);\n                print(\"ISOVER? \" + isOver);\n                if (!isOver) {\n                    Gdk.drag_status(ctx, 0 ,time);\n                    return false; // not over apoint!?!\n                }\n                // drag node is parent of child..\n                console.log(\"SRC TREEPATH: \" + src.treepath);\n                console.log(\"TARGET TREEPATH: \" + data.path.to_string());\n                \n                // nned to check a  few here..\n                //Gtk.TreeViewDropPosition.INTO_OR_AFTER\n                //Gtk.TreeViewDropPosition.INTO_OR_BEFORE\n                //Gtk.TreeViewDropPosition.AFTER\n                //Gtk.TreeViewDropPosition.BEFORE\n                \n                if (typeof(src.treepath) != 'undefined'  && \n                    src.treepath == data.path.to_string().substring(0,src.treepath.length)) {\n                    print(\"subpath drag\");\n                     Gdk.drag_status(ctx, 0 ,time);\n                    return false;\n                }\n                \n                // check that \n                //print(\"DUMPING DATA\");\n                //console.dump(data);\n                // path, pos\n                \n                print(data.path.to_string() +' => '+  data.pos);\n                var tg = this.get('/LeftTree.model').findDropNodeByPath(\n                    data.path.to_string(), src.dropList, data.pos);\n                    \n                this.get('/LeftTree.view').highlight(tg);\n                if (!tg.length) {\n                    print(\"Can not find drop node path\");\n                    this.targetData = false;\n                    Gdk.drag_status(ctx, 0, time);\n                    return true;\n                }\n                //console.dump(tg);\n                this.targetData = tg;    \n                \n                \n                Gdk.drag_status(ctx, action ,time);\n                 \n                return true;\n}",