1 //<Script type="text/javascript">
5 GObject = imports.gi.GObject;
6 Pango = imports.gi.Pango ;
9 XObject = imports.XObject.XObject;
10 console = imports.console;
12 ProjectManager = imports.Builder.Provider.ProjectManager.ProjectManager;
13 EditProject = imports.Builder.EditProject.EditProject;
14 DialogNewComponent = imports.Builder.DialogNewComponent.DialogNewComponent;
15 LeftTree = imports.Builder.LeftTree.LeftTree;
17 // http://www.google.com/codesearch/p?hl=en#EKZaOgYQHwo/unstable/sources/sylpheed-2.2.9.tar.bz2%7C1erxr_ilM1o/sylpheed-2.2.9/src/folderview.c&q=gtk_tree_view_get_drag_dest_row
21 "style \"gtkcombobox-style\" {\n" +
22 " GtkComboBox::appears-as-list = 1\n" +
24 "class \"GtkComboBox\" style \"gtkcombobox-style\"\n");
28 LeftProjectTree = new XObject({
32 showNoProjectSelected : function()
34 StandardErrorDialog.show("Select a Project first.");
43 pack : ['pack_start', false , true ], // expand // fill.
45 'size-allocate': function(w,a) {
48 //LeftProjectTree.get('combo').el.set_size_request(
49 // Gtk.allocation_get_width(a)-50,-1);
58 pack : [ 'insert', 0],
67 //pack : [ 'insert', 1],
72 XObject.prototype.init.call(this);
73 this.el.add_attribute(this.items[0].el , 'markup', 1 );
76 setValue : function(fn)
80 var data = ProjectManager.projects;
81 data.forEach(function(n, ix) {
90 var ix = this.el.get_active();
94 var data = ProjectManager.projects;
102 changed : function() {
103 var fn = this.getValue();
104 var pm = ProjectManager;
105 LeftProjectTree.get('model').loadProject(pm.getByFn(fn))
111 xtype : Gtk.CellRendererText,
112 pack : ['pack_start']
117 pack : [ 'set_model' ],
118 xtype : Gtk.ListStore,
122 XObject.prototype.init.call(this);
124 this.el.set_column_types ( 2, [
125 GObject.TYPE_STRING, // real key
126 GObject.TYPE_STRING // real type
136 loadData : function (data) {
138 var ov = LeftProjectTree.get('combo').getValue();
140 var iter = new Gtk.TreeIter();
142 data.forEach(function(p) {
147 el.set_value(iter, 0, p.fn);
148 el.set_value(iter, 1, p.name);
152 LeftProjectTree.get('combo').setValue(ov);
170 xtype: Gtk.ToolButton,
171 pack : [ 'insert', 1],
173 'stock-id' : Gtk.STOCK_EDIT,
175 clicked: function() {
176 this.get('menu').el.show_all();
177 this.get('menu').el.popup(null, null, null,
178 null, 1, Gtk.get_current_event_time());
192 xtype : Gtk.MenuItem,
194 label : "New Project",
196 activate : function () {
200 success : function(pr) {
201 LeftProjectTree.get('combo').setValue(pr.fn);
210 xtype : Gtk.MenuItem,
212 label : "Add Directory To Current Project",
214 activate : function () {
216 var fn = LeftProjectTree.get('combo').getValue();
218 LeftProjectTree.showNoProjectSelected();
223 var dc = new Gtk.FileChooserDialog({
224 action : Gtk.FileChooserAction.SELECT_FOLDER,
226 'select-multiple' : false,
227 "show-hidden" : true,
229 dc.add_button("Add To Project", Gtk.ResponseType.ACCEPT );
230 dc.add_button("Cancel",Gtk.ResponseType.CANCEL);
232 if (dc.run() != Gtk.ResponseType.ACCEPT) {
238 //Seed.print(dc.get_filename());
239 var pm = ProjectManager;
240 pm.getByFn(fn).add(dc.get_filename(), 'dir');
250 xtype : Gtk.MenuItem,
252 label : "Add File To Current Project",
254 activate : function () {
255 var fn = LeftProjectTree.get('combo').getValue();
257 LeftProjectTree.showNoProjectSelected();
262 var dc = new Gtk.FileChooserDialog({
263 action : Gtk.FileChooserAction.OPEN,
265 'select-multiple' : false, // later..
266 "show-hidden" : true,
269 dc.add_button("Add To Project", Gtk.ResponseType.ACCEPT );
270 dc.add_button("Cancel",Gtk.ResponseType.CANCEL);
272 if (dc.run() != Gtk.ResponseType.ACCEPT) {
278 //Seed.print(dc.get_filename());
280 ProjectManager.getByFn(fn).add(dc.get_filename(), 'file');
291 xtype : Gtk.MenuItem,
293 label : 'Add Component',
295 activate : function () {
296 var fn = LeftProjectTree.get('combo').getValue();
298 LeftProjectTree.showNoProjectSelected();
302 DialogNewComponent.show({
303 project : ProjectManager.getByFn(fn)
328 xtype: Gtk.ScrolledWindow,
329 smooth_scroll : true,
330 shadow_type : Gtk.ShadowType.IN,
333 XObject.prototype.init.call(this);
335 this.el.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC );
336 //set_size_request : [-1,400]
343 xtype : Gtk.TreeView,
344 headers_visible : false,
345 enable_tree_lines : true ,
347 // set_reorderable: [1]
351 XObject.prototype.init.call(this);
352 var description = new Pango.FontDescription.c_new();
353 description.set_size(8000);
354 this.el.modify_font(description);
356 this.selection = this.el.get_selection();
357 this.selection.set_mode( Gtk.SelectionMode.SINGLE);
361 'cursor-changed' : function(tv, a) {
362 //select -- should save existing...
363 var iter = new Gtk.TreeIter();
365 if (this.selection.count_selected_rows() < 1) {
366 //XN.get('Builder.LeftTree.model').
367 LeftTree.get('model').load( false);
371 var model = LeftProjectTree.get('model');
372 //console.log('changed');
373 var s = this.selection;
374 s.get_selected(model, iter);
375 value = new GObject.Value('');
376 model.el.get_value(iter, 2, value);
378 console.log(value.value);// id..
380 var file = LeftProjectTree.project.getById(value.value);
385 var LeftTopPanel = imports.Builder.LeftTopPanel.LeftTopPanel;
387 var nb = LeftTopPanel.get('expander');
388 nb.el.expanded = false;
389 nb.listeners.activate.call(nb);
390 //_expander.el.set_expanded(false);
392 var ltm = LeftTree.get('model');
404 pack : ['set_model'],
406 xtype : Gtk.TreeStore,
410 XObject.prototype.init.call(this);
411 this.el.set_column_types ( 3, [
412 GObject.TYPE_STRING, // title
413 GObject.TYPE_STRING, // tip
414 GObject.TYPE_STRING // id..
419 activeIter : false, // fixme - should not use iters..
424 loadProject : function (pr)
432 LeftProjectTree.project = pr;
433 this.load(pr.toTree());
434 LeftProjectTree.get('view').el.expand_all();
435 // needs more thought!!??
441 load : function(tr,iter)
444 console.log('Project tree load: ' + tr.length);
445 var citer = new Gtk.TreeIter();
446 //this.insert(citer,iter,0);
449 tr.forEach(function (r) {
451 _this.el.append(citer);
453 _this.el.insert(citer,iter,-1);
455 _this.el.set_value(citer, 0, '' + r.getTitle() ); // title
456 _this.el.set_value(citer, 1, '' + r.getTitleTip()); // tip
457 _this.el.set_value(citer, 2, '' + r.id ); //id
458 if (r.cn && r.cn.length) {
459 _this.load(r.cn, citer);
469 getValue: function (iter, col) {
470 var gval = new GObject.Value('');
471 this.el.get_value(iter, col ,gval);
479 // this.expand_all();
484 pack : ['append_column'],
486 xtype : Gtk.TreeViewColumn,
490 xtype : Gtk.CellRendererText,
491 pack: [ 'pack_start']
497 XObject.prototype.init.call(this);
499 this.el.add_attribute(this.items[0].el , 'markup', 0 );