X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=Sample%2FWindow.js;h=04aaf2c7ebd30ab2d438e7522043d3bfbebdba8c;hb=119290bc3234e9ece1c64dbd72ca486d9633b5b7;hp=cac9da95222344dbb936e8f87529def7eac87326;hpb=8ef70127052f6934d550a0e5b388cbc510127da9;p=app.Builder.js diff --git a/Sample/Window.js b/Sample/Window.js index cac9da952..04aaf2c7e 100644 --- a/Sample/Window.js +++ b/Sample/Window.js @@ -8,13 +8,33 @@ GtkSource = imports.gi.GtkSource; WebKit = imports.gi.WebKit; Vte = imports.gi.Vte; GtkClutter = imports.gi.GtkClutter; +Gdl = imports.gi.Gdl; console = imports.console; XObject = imports.XObject.XObject; Window=new XObject({ xtype: Gtk.Window, - type : Gtk.WindowType.TOPLEVEL, - title : "Application Builder", + listeners : { + delete_event : function (self, event) { + return false; + }, + destroy : function (self) { + Gtk.main_quit(); + }, + show : function (self) { + print("WINDOW SHOWING - trying to hide"); + imports.Builder.Provider.ProjectManager.ProjectManager.loadConfig(); + this.get('/MidPropTree').hideWin(); + this.get('/RightPalete').hide(); + this.get('/BottomPane').el.hide(); + //this.get('/Editor').el.show_all(); + + } + }, border_width : 0, + default_height : 500, + default_width : 800, + id : "Window", + title : "Application Builder", init : function() { this.atoms = { "STRING" : Gdk.atom_intern("STRING") @@ -33,28 +53,10 @@ Window=new XObject({ }, - default_width : 800, - default_height : 500, - id : "Window", setTitle : function(str) { this.el.set_title(this.title + ' - ' + str); }, - listeners : { - delete_event : function (self, event) { - return false; - }, - destroy : function (self) { - Gtk.main_quit(); - }, - show : function (self) { - print("WINDOW SHOWING - trying to hide"); - imports.Builder.Provider.ProjectManager.ProjectManager.loadConfig(); - this.get('/MidPropTree').hideWin(); - this.get('/RightPalete').hide(); - this.get('/BottomPane').el.hide(); - - } - }, + type : Gtk.WindowType.TOPLEVEL, items : [ { xtype: Gtk.VBox, @@ -213,7 +215,7 @@ Window=new XObject({ activate : function (self, event) { var js = this.get('/LeftTree.model').toJS(); if (js && js[0]) { - this.get('/RightBrowser.view').renderJS(js[0]); + this.get('/RightBrowser.view').renderJS(js[0], true); } return false; } @@ -342,6 +344,10 @@ Window=new XObject({ // that is done by GTK.. + if (!this.get('/Editor').save()) { + // popup!! - click handled.. + return true; + } if (!this.el.expanded) { this.onExpand(); @@ -363,15 +369,15 @@ Window=new XObject({ id : "expander", label : "Select Project or File", pack : "pack_start,false,true", + init : function() { + XObject.prototype.init.call(this); + this.el.add_events (Gdk.EventMask.BUTTON_MOTION_MASK ); + }, onCollapse : function() { var nb = this.get('/LeftTopPanel.notebook'); nb.el.set_current_page(0); }, - init : function() { - XObject.prototype.init.call(this); - this.el.add_events (Gdk.EventMask.BUTTON_MOTION_MASK ); - }, onExpand : function() { var nb = this.get('/LeftTopPanel.notebook'); var pm = imports.Builder.Provider.ProjectManager.ProjectManager; @@ -470,6 +476,12 @@ Window=new XObject({ listeners : { button_press_event : function (self, ev) { console.log("button press?"); + + if (!this.get('/Editor').save()) { + // popup!! - click handled.. + return true; + } + if (ev.type != Gdk.EventType.BUTTON_PRESS || ev.button.button != 3) { print("click" + ev.type); return false; @@ -479,7 +491,7 @@ Window=new XObject({ var res = {}; this.get('/LeftTree.view').el.get_path_at_pos(ev.button.x,ev.button.y, res); - if (!this.get('/LeftTreeMenu').el) this.get('/LeftTreeMenu').init(); + if (!this.get('/LeftTreeMenu').el) { this.get('/LeftTreeMenu').init(); } this.get('/LeftTreeMenu').el.set_screen(Gdk.Screen.get_default()); this.get('/LeftTreeMenu').el.show_all(); @@ -803,7 +815,9 @@ Window=new XObject({ this.el.set_value(iter, 2, [GObject.TYPE_STRING, this.nodeToJSON(n)]); } //this.currentTree = this.toJS(false, true)[0]; + var d = new Date(); this.file.items = this.toJS(false, false); + print ("TO JS in " + ((new Date()) - d) + "ms"); // print("AFTER CHANGED"); //console.dump(this.file.items); this.file.save(); @@ -1133,8 +1147,8 @@ Window=new XObject({ if (f.items.length && typeof(f.items[0]) == 'string') { - this.get('/RightEditor').el.show(); - this.get('/RightEditor.view').load( f.items[0]); + //this.get('/RightEditor').el.show(); + //this.get('/RightEditor.view').load( f.items[0]); return; } print("LOAD"); @@ -1158,7 +1172,8 @@ Window=new XObject({ //print("hide right editior"); - this.get('/RightEditor').el.hide(); + //this.get('/RightEditor').el.hide(); + this.get('/Editor').el.hide(); //print("set current tree"); this.currentTree = this.toJS(false, false)[0]; //console.dump(this.currentTree); @@ -1453,11 +1468,14 @@ Window=new XObject({ items : [ { xtype: Gtk.ComboBox, - id : "combo", - init : function() { - XObject.prototype.init.call(this); - this.el.add_attribute(this.get('render').el , 'markup', 1 ); + listeners : { + changed : function (self) { + var fn = this.getValue(); + var pm = imports.Builder.Provider.ProjectManager.ProjectManager; + this.get('/LeftProjectTree.model').loadProject(pm.getByFn(fn)) + } }, + id : "combo", getValue : function() { var ix = this.el.get_active(); if (ix < 0 ) { @@ -1469,6 +1487,10 @@ Window=new XObject({ } return data[ix].fn; }, + init : function() { + XObject.prototype.init.call(this); + this.el.add_attribute(this.get('render').el , 'markup', 1 ); + }, setValue : function(fn) { var el = this.el; @@ -1481,13 +1503,6 @@ Window=new XObject({ } }); }, - listeners : { - changed : function (self) { - var fn = this.getValue(); - var pm = imports.Builder.Provider.ProjectManager.ProjectManager; - this.get('/LeftProjectTree.model').loadProject(pm.getByFn(fn)) - } - }, items : [ { xtype: Gtk.CellRendererText, @@ -1496,6 +1511,7 @@ Window=new XObject({ }, { xtype: Gtk.ListStore, + id : "combomodel", pack : "set_model", init : function() { XObject.prototype.init.call(this); @@ -1505,6 +1521,7 @@ Window=new XObject({ ] ); + // this.el.set_sort_column_id(1,Gtk.SortType.ASCENDING); var pm = imports.Builder.Provider.ProjectManager.ProjectManager; var _this = this; pm.on('changed', function() { @@ -1529,8 +1546,7 @@ Window=new XObject({ }); this.get('/LeftProjectTree.combo').setValue(ov); - }, - id : "combomodel" + } } ] } @@ -1714,13 +1730,18 @@ Window=new XObject({ }, { xtype: Gtk.Button, - pack : "add", listeners : { button_press_event : function (self, event) { - this.get('/MidPropTree.model').showData('events'); + + if (!this.get('/Editor').save()) { + // popup!! - click handled.. + return true; + } + this.get('/MidPropTree.model').showData('events'); return false; } }, + pack : "add", items : [ { xtype: Gtk.HBox, @@ -1743,9 +1764,14 @@ Window=new XObject({ }, { xtype: Gtk.Button, - pack : "add", listeners : { button_press_event : function (self, ev) { + + if (!this.get('/Editor').save()) { + // popup!! - click handled.. + return true; + } + var p = this.get('/AddPropertyPopup'); if (!p.el) { p.init(); @@ -1756,6 +1782,7 @@ Window=new XObject({ return true; } }, + pack : "add", items : [ { xtype: Gtk.HBox, @@ -1930,6 +1957,10 @@ Window=new XObject({ button_press_event : function (self, ev) { + if (!this.get('/Editor').save()) { + // popup!! - click handled.. + return true; + } var res = { }; if (!this.el.get_path_at_pos(ev.button.x,ev.button.y, res)) { @@ -1968,6 +1999,16 @@ Window=new XObject({ // this.activePath = false; // stop editing!!!! + if (this.get('/Editor').dirty) { + //if (!this.get('/Editor.buffer').checkSyntax()) { + // this.get('/StandardErrorDialog').show("Fix errors in code and save.."); + // return true; + // // error Dialog + //} + if (!this.get('/Editor.view').save()) { + return true; + } + } this.get('/LeftPanel').editableColumn.items[0].el.stop_editing(); this.get('/LeftPanel').editing = false; @@ -2183,9 +2224,16 @@ Window=new XObject({ ]); }, load : function(ar) { + // might casue problesm.. + // this.get('/Editor.RightEditor').save(); + + this.get('/Editor').el.hide(); + this.get('/Editor').activePath = false; + + this.el.clear(); - - this.get('/RightEditor').el.hide(); + + //this.get('/RightEditor').el.hide(); if (ar === false) { return ; } @@ -2237,7 +2285,8 @@ Window=new XObject({ return ret; }, startEditing : function(path,col) { - // alled by menu 'edit' currently.. + + // alled by menu 'edit' currently.. /** * start editing path (or selected if not set..) * @param {String|false} path (optional) treepath to edit - selected tree gets @@ -2274,7 +2323,9 @@ Window=new XObject({ // make sure the pulldown is set correctly.. // not really needed for second col... var showEditor = false; - + this.get('/Editor').activePath = false; + this.get('/Editor').el.hide(); + if (col) { var provider = this.get('/LeftTree').getPaleteProvider(); var type = this.get('/LeftPanel.model').getType(path); @@ -2304,28 +2355,30 @@ Window=new XObject({ } var _this = this; // end editing.. - this.get('/BottomPane').el.hide(); - this.get('/RightEditor').el.hide(); - + // this.get('/BottomPane').el.hide(); + //this.get('/RightEditor').el.hide(); + if (showEditor) { this.activePath = false; + + _this.get('/Editor').el.show_all(); GLib.timeout_add(0, 1, function() { - _this.get('/BottomPane').el.show(); - _this.get('/RightEditor').el.show(); - _this.get('/RightEditor.view').load( _this.getValue(path, 1) ); + //_this.get('/BottomPane').el.show(); + //_this.get('/RightEditor').el.show(); - //e.editing_done(); - //e.remove_widget(); - _this.activePath = path ; + _this.get('/Editor.RightEditor.view').load( _this.getValue(path, 1) ); + _this.get('/Editor').activePath = path; + _this.activePath = path ; + return false; }); return; } - + @@ -2456,9 +2509,9 @@ Window=new XObject({ } }, + editable : false, pack : "pack_start", text_column : 0, - editable : true, has_entry : true, init : function() { XObject.prototype.init.call(this); @@ -2670,7 +2723,7 @@ Window=new XObject({ // console.log( '' + p.name +' ['+p.type+']'); //GObject.TYPE_STRING, // real key // GObject.TYPE_STRING, // real type - // GObject.TYPE_STRING, // docs ? + // GObject.TYPE_STRING, // docs ?this.el.set_value(iter, 0, p.name);et_value(iter, 0, p.name); // GObject.TYPE_STRING // func def? @@ -2687,6 +2740,7 @@ Window=new XObject({ }, { xtype: Gtk.TreeViewColumn, + pack : false, init : function() { this.el = new Gtk.TreeViewColumn(); this.parent.el.append_column(this.el); @@ -2694,7 +2748,6 @@ Window=new XObject({ XObject.prototype.init.call(this); this.el.add_attribute(this.items[0].el , 'markup', 4 ); }, - pack : false, items : [ { xtype: Gtk.CellRendererText, @@ -2756,18 +2809,36 @@ Window=new XObject({ items : [ { xtype: Gtk.Button, + listeners : { + clicked : function (self) { + this.get('/RightBrowser.view').renderJS(null,true); + } + }, label : "Redraw", pack : "pack_start,false,false,0" }, { xtype: Gtk.CheckButton, listeners : { - state_changed : function (self, state) { - this.setText(state ? "Auto Redraw OFF" : "Auto Redraw On"); + toggled : function (self, state) { + this.el.set_label(this.el.active ? "Auto Redraw On" : "Auto Redraw Off"); } }, + active : true, + id : "AutoRedraw", label : "Auto Redraw On", pack : "pack_start,false,false,0" + }, + { + xtype: Gtk.Button, + listeners : { + clicked : function (self) { + this.get('/RightBrowser.view').redraws = 99; + this.get('/RightBrowser.view').renderJS(null,true); + } + }, + label : "Full Redraw", + pack : "pack_start,false,false,0" } ] }, @@ -2814,11 +2885,26 @@ Window=new XObject({ console_message : function (self, object, p0, p1) { print(object); // console.log(object); + + + if (object.match(/variable/) && object.match(/Builder/)) { + print("got builder missing message"); + this.refreshRequired = true; + this.lastRedraw = 0; + this.runRefresh(); + return true; + } + + if (!object.match(/^\{/)) { //this.get('/Terminal').feed(object); return true; // do not handle!!! -> later maybe in console.. } + + + + // console.log(object); var val = JSON.parse(object); @@ -2957,6 +3043,7 @@ Window=new XObject({ }, id : "view", pack : "add", + redraws : 0, init : function() { XObject.prototype.init.call(this); // this may not work!? @@ -3007,7 +3094,15 @@ Window=new XObject({ }, - renderJS : function(data) { + renderJS : function(data, force) { + + // this is the public redraw call.. + // we refresh in a loop privately.. + var autodraw = this.get('/RightBrowser.AutoRedraw').el.active; + if (!autodraw && !force) { + print("Skipping redraw - no force, and autodraw off"); + return; + } this.refreshRequired = true; }, runRefresh : function() @@ -3047,7 +3142,7 @@ Window=new XObject({ return; } var data = js[0]; - + this.redraws++; var project = this.get('/Window.LeftTree').getActiveFile().project; //print (project.fn); @@ -3058,7 +3153,7 @@ Window=new XObject({ this.runhtml = this.runhtml || ''; - if (project.runhtml != this.runhtml) { + if ((project.runhtml != this.runhtml) || (this.redraws > 10)) { // then we need to reload the browser using // load_html_string.. @@ -3080,7 +3175,7 @@ Window=new XObject({ //fixme - should be a config option! 'http://localhost/app.Builder/' ); - + this.redraws = 0; // should trigger load_finished! - which in truns shoudl set refresh Required; return; @@ -3209,21 +3304,30 @@ Window=new XObject({ */ }, viewAdd : function(item, par) - { + { + // does something similar to xobject.. - item.pack = (typeof(item.pack) == 'undefined') ? 'add' : item.pack; + //item.pack = (typeof(item.pack) == 'undefined') ? 'add' : item.pack; + // pack is forced to 'false' if (item.pack===false || item.pack === 'false') { // no ; return; } + print("CREATE: " + item['|xns'] + '.' + item['xtype']); + + var type = item['|xns'] + '.' + item['xtype']; if (item['|xns'] == 'GtkClutter') { // we can not add this yet! return false; } + var ns = imports.gi[item['|xns']]; - var ctr = ns[item['xtype']]; + var ctr = ns[item['xtype']]; // why are we using array here..? + + + var ctr_args = { }; for(var k in item) { var kv = item[k]; @@ -3241,13 +3345,13 @@ Window=new XObject({ ) { continue; } - + // value is a function.. if (k[0] == '|' && typeof(kv) == 'string') { if (kv.match(new RegExp('function'))) { continue; } - print("WASL " + k + '=' + kv); + print("WASL " + k + '=' + kv); try { eval( 'kv = ' + kv); } catch(e) { continue; } @@ -3267,10 +3371,18 @@ Window=new XObject({ ctr_args[k] = kv; } - + var altctr = XObject.baseXObject({ xtype: ctr} ); + var pack_m = false; + if (!item.pack && altctr) { + // try XObject. + print("SETTING PACK TO XObjectBase method"); + pack_m = altctr.prototype.pack; + + + } var el = new ctr(ctr_args); - + item.el = el; print("PACK" + item.pack); //console.dump(item.pack); @@ -3278,26 +3390,27 @@ Window=new XObject({ var args = []; - var pack_m = false; - if (typeof(item.pack) == 'string') { - - item.pack.split(',').forEach(function(e, i) { + if (!pack_m) { + item.pack = (typeof(item.pack) == 'undefined') ? 'add' : item.pack; + if (typeof(item.pack) == 'string') { + + item.pack.split(',').forEach(function(e, i) { + + if (e == 'false') { args.push( false); return; } + if (e == 'true') { args.push( true); return; } + if (!isNaN(parseInt(e))) { args.push( parseInt(e)); return; } + args.push(e); + }); + //print(args.join(",")); - if (e == 'false') { args.push( false); return; } - if (e == 'true') { args.push( true); return; } - if (!isNaN(parseInt(e))) { args.push( parseInt(e)); return; } - args.push(e); - }); - //print(args.join(",")); - - pack_m = args.shift(); - } else { - pack_m = item.pack.shift(); - args = item.pack; + pack_m = args.shift(); + } else { + pack_m = item.pack.shift(); + args = item.pack; + } } - // handle error. - if (pack_m && typeof(par[pack_m]) == 'undefined') { + if (typeof(pack_m) == 'string' && typeof(par[pack_m]) == 'undefined') { throw { name: "ArgumentError", message : 'pack method not available : ' + par.id + " : " + par + '.' + pack_m + @@ -3312,17 +3425,21 @@ Window=new XObject({ args.unshift(el); //if (XObject.debug) print(pack_m + '[' + args.join(',') +']'); //Seed.print('args: ' + args.length); - if (pack_m) { + if (typeof(pack_m) == 'string') { par[pack_m].apply(par, args); + } else if (pack_m) { + pack_m.call(item, par, item); } var _this = this; item.items = item.items || []; item.items.forEach(function(ch,n) { - print ("type:" + type); + print ("type:" + type); - print ("ch.pack:" + ch.pack); + print ("ch.pack:" + ch.pack); + + if (type == 'Gtk.Table' && ch.pack == 'add') { var c = n % item.n_columns; var r = Math.floor(n/item.n_columns); @@ -3350,7 +3467,7 @@ Window=new XObject({ el.signal.drag_motion.connect(XObject.createDelegate(this.widgetDragMotionEvent, this,[ item ], true)); el.signal.drag_drop.connect(XObject.createDelegate(this.widgetDragDropEvent, this, [ item ], true)); el.signal.button_press_event.connect(XObject.createDelegate(this.widgetPressEvent, this, [ item ], true )); - el.signal.button_release_event.connect(XObject.createDelegate(this.widgetReleaseEvent, this, [ item ], true )); + el.signal.button_release_event.connect(XObject.createDelegate(this.widgetReleaseEvent, this, [ item ], true )); } catch(e) { // ignore! } @@ -3701,94 +3818,11 @@ Window=new XObject({ pack : "add", init : function() { XObject.prototype.init.call(this); - this.el.set_tab_label(this.items[0].el, new Gtk.Label({ label : "Code Editor" })); - this.el.set_tab_label(this.items[1].el, new Gtk.Label({ label : "Console" })); - this.el.set_tab_label(this.items[2].el, new Gtk.Label({ label : "Inspector" })); + //this.el.set_tab_label(this.items[0].el, new Gtk.Label({ label : "Code Editor" })); + this.el.set_tab_label(this.items[0].el, new Gtk.Label({ label : "Console" })); + this.el.set_tab_label(this.items[1].el, new Gtk.Label({ label : "Inspector" })); }, items : [ - { - xtype: Gtk.ScrolledWindow, - pack : "add", - id : "RightEditor", - items : [ - { - xtype: GtkSource.View, - pack : "add", - id : "view", - init : function() { - XObject.prototype.init.call(this); - var description = Pango.Font.description_from_string("monospace") - description.set_size(8000); - this.el.modify_font(description); - - }, - load : function(str) { - - // show the help page for the active node.. - this.get('/Help').show(); - - - this.get('/BottomPane').el.set_current_page(0); - this.el.get_buffer().set_text(str, str.length); - var lm = GtkSource.LanguageManager.get_default(); - - this.el.get_buffer().set_language(lm.get_language('js')); - var buf = this.el.get_buffer(); - var cursor = buf.get_mark("insert"); - var iter= new Gtk.TextIter; - buf.get_iter_at_mark(iter, cursor); - iter.set_line(1); - iter.set_line_offset(4); - buf.move_mark(cursor, iter); - - - cursor = buf.get_mark("selection_bound"); - iter= new Gtk.TextIter; - buf.get_iter_at_mark(iter, cursor); - iter.set_line(1); - iter.set_line_offset(4); - buf.move_mark(cursor, iter); - - this.el.grab_focus(); - }, - insert_spaces_instead_of_tabs : true, - indent_width : 4, - auto_indent : true, - show_line_numbers : true, - items : [ - { - xtype: GtkSource.Buffer, - listeners : { - changed : function (self) { - var s = new Gtk.TextIter(); - var e = new Gtk.TextIter(); - this.el.get_start_iter(s); - this.el.get_end_iter(e); - var str = this.el.get_text(s,e,true); - try { - Seed.check_syntax('var e = ' + str); - } catch (e) { - this.get('/RightEditor.view').el.modify_base(Gtk.StateType.NORMAL, new Gdk.Color({ - red: 0xFFFF, green: 0xCCCC , blue : 0xCCCC - })); - //print("SYNTAX ERROR IN EDITOR"); - //print(e); - //console.dump(e); - return; - } - this.get('/RightEditor.view').el.modify_base(Gtk.StateType.NORMAL, new Gdk.Color({ - red: 0xFFFF, green: 0xFFFF , blue : 0xFFFF - })); - - this.get('/LeftPanel.model').changed( str , false); - } - }, - pack : "set_buffer" - } - ] - } - ] - }, { xtype: Gtk.ScrolledWindow, pack : "add", @@ -3932,48 +3966,6 @@ Window=new XObject({ items : [ { xtype: Gtk.TreeView, - pack : "add", - init : function() { - XObject.prototype.init.call(this); - this.el.set_size_request(150,-1); - // set_reorderable: [1] - - var description = new Pango.FontDescription.c_new(); - description.set_size(8000); - this.el.modify_font(description); - - this.selection = this.el.get_selection(); - this.selection.set_mode( Gtk.SelectionMode.SINGLE); - // this.selection.signal['changed'].connect(function() { - // _view.listeners['cursor-changed'].apply(_view, [ _view, '']); - //}); - // see: http://live.gnome.org/GnomeLove/DragNDropTutorial - - Gtk.drag_source_set ( - this.el, /* widget will be drag-able */ - Gdk.ModifierType.BUTTON1_MASK, /* modifier that will start a drag */ - null, /* lists of target to support */ - 0, /* size of list */ - Gdk.DragAction.COPY /* what to do with data after dropped */ - ); - //Gtk.drag_source_set_target_list(this.el, LeftTree.targetList); - - Gtk.drag_source_set_target_list(this.el, this.get('/Window').targetList); - Gtk.drag_source_add_text_targets(this.el); - /* - print("RP: TARGET:" + LeftTree.atoms["STRING"]); - targets = new Gtk.TargetList(); - targets.add( LeftTree.atoms["STRING"], 0, 0); - targets.add_text_targets( 1 ); - Gtk.drag_dest_set_target_list(this.el, LeftTree.targetList); - - //if you want to allow text to be output elsewhere.. - //Gtk.drag_source_add_text_targets(this.el); - */ - return true; - }, - headers_visible : false, - enable_tree_lines : true, listeners : { drag_begin : function (self, ctx) { // we could fill this in now... @@ -4026,8 +4018,58 @@ Window=new XObject({ this.el.dropList = false; this.get('/LeftTree.view').highlight(false); return true; + }, + button_press_event : function (self, event) { + + if (!this.get('/Editor').save()) { + // popup!! - click handled.. + return true; + } + return false; } }, + pack : "add", + enable_tree_lines : true, + headers_visible : false, + init : function() { + XObject.prototype.init.call(this); + this.el.set_size_request(150,-1); + // set_reorderable: [1] + + var description = new Pango.FontDescription.c_new(); + description.set_size(8000); + this.el.modify_font(description); + + this.selection = this.el.get_selection(); + this.selection.set_mode( Gtk.SelectionMode.SINGLE); + // this.selection.signal['changed'].connect(function() { + // _view.listeners['cursor-changed'].apply(_view, [ _view, '']); + //}); + // see: http://live.gnome.org/GnomeLove/DragNDropTutorial + + Gtk.drag_source_set ( + this.el, /* widget will be drag-able */ + Gdk.ModifierType.BUTTON1_MASK, /* modifier that will start a drag */ + null, /* lists of target to support */ + 0, /* size of list */ + Gdk.DragAction.COPY /* what to do with data after dropped */ + ); + //Gtk.drag_source_set_target_list(this.el, LeftTree.targetList); + + Gtk.drag_source_set_target_list(this.el, this.get('/Window').targetList); + Gtk.drag_source_add_text_targets(this.el); + /* + print("RP: TARGET:" + LeftTree.atoms["STRING"]); + targets = new Gtk.TargetList(); + targets.add( LeftTree.atoms["STRING"], 0, 0); + targets.add_text_targets( 1 ); + Gtk.drag_dest_set_target_list(this.el, LeftTree.targetList); + + //if you want to allow text to be output elsewhere.. + //Gtk.drag_source_add_text_targets(this.el); + */ + return true; + }, items : [ { xtype: Gtk.ListStore,