1 //<Script type="text/javascript">
4 GObject = imports.gi.GObject;
6 GLib = imports.gi.GLib;
8 console = imports.console;
9 XObject = imports.XObject.XObject;
11 Window = imports.Builder.Window.Window;
12 StandardErrorDialog = imports.Builder.StandardErrorDialog.StandardErrorDialog;
16 * basically uses a standard template ? pulled from the web?
18 * you have to pick which template, and give it a name..
20 * and pick which directory to put it in?
24 DialogNewComponent = new XObject({
27 // type: Gtk.WindowType.TOPLEVEL,
30 title : "New Component",
37 c = c || { name : '' , xtype : '' };
38 // check whic project we are adding to..
39 XObject.extend(this, c);
41 this.el.set_screen(Window.el.get_screen());
44 for (var i in this.project.paths) {
52 this.get('directory_model').loadData(paths);
57 this.success = c.success;
59 var tm = this.get('template_model');
64 var dir = __script_path__ + '/templates/';
66 var f = Gio.file_new_for_path(dir);
67 f.enumerate_children_async ("*", Gio.FileQueryInfoFlags.NONE,
68 GLib.PRIORITY_DEFAULT, null, function(o,ar) {
70 var fe = f.enumerate_children_finish(ar);
72 while (ch = fe.next_file(null)) {
73 var add = dir + '/' + ch.get_name();
74 if (!add.match(/\.js$/)) {
77 tm.templates.push(add);
88 'delete-event' : function (widget, event) {
93 response : function (w, id)
95 if (id < 1) { // cancel!
104 if (!DialogNewComponent.get(xnsid).el.get_text().length ||
105 DialogNewComponent.get('template').getValue().length ||
106 DialogNewComponent.get('directory').getValue().length
108 StandardErrorDialog.show(
109 "You have to set Project name ,template and directory"
115 var dir = DialogNewComponent.get('template').getValue();
116 var xidns = DialogNewComponent.get('xnsid').get_text();
119 if (GLib.file_test (GLib.dir + '/' + xidns + '.js', GLib.FileTest.EXISTS)) {
120 StandardErrorDialog.show(
121 "That file already exists"
128 var tmpl = this.project.loadFileOnly(XN.get(this).template.getValue());
131 tmpl.copyTo(dir + '/' + xidns + '.js', function() {
133 _this.project.addFile(tmpl);
134 this.success(_this.project, tmpl);
142 _new : function(self) {
146 _rendered : function()
148 this.el.add_button("OK",1 );
149 this.el.add_button("Cancel",0 );
156 set_border_width : [ 0 ],
157 // set_title : [ 'Project Properties' ],
158 set_default_size: [600, 400] //,
169 packing : function(p,e) {
170 p.el.get_content_area().add(e.el)
176 packing : [ 'pack_start', false, true , 0 ],
181 packing : [ 'pack_start', false, true , 0 ],
183 label : "Component Name:"
191 packing : [ 'pack_end', true, true , 0 ],
193 setValue : function(v) {
196 getValue : function()
198 return this.el.get_text();
208 packing : [ 'pack_start', false, true , 0 ],
213 packing : [ 'pack_start', false, true , 0 ],
215 label : "Using Template:"
223 packing : [ 'pack_end', true, true , 0 ],
225 // set_text_column : [1]
226 //set_size_request : [150,-1]
230 setValue : function(v)
234 Roo.each(XN.get(this).template_model.templates, function(n) {
241 getValue : function()
243 var ix = this.el.get_active();
247 return XN.get(this).template_model.templates[ix];
249 var iter = new Gtk.TreeIter();
250 if (this.el.get_active_iter(iter)) {
253 var value = new GObject.Value('');
254 this.model.el.get_value(iter, 0, value);
263 _rendered : function ()
266 // _form.xtype = this;
267 this.el.add_attribute(this.items[0].el , 'markup', 1 );
268 //this.el.add_attribute(this.items[0].el , 'popup', 2 );
280 xtype : 'CellRendererText',
281 packing : ['pack_start'],
287 xid : 'template_model',
289 packing : [ 'set_model' ],
294 _rendered : function ()
297 this.el.set_column_types ( 2, [
298 GObject.TYPE_STRING, // real key
299 GObject.TYPE_STRING // real type
313 loadData : function () {
315 var iter = new Gtk.TreeIter();
317 Roo.each(this.templates, function(p) {
321 el.set_value(iter, 0, p);
322 el.set_value(iter, 1, p);
342 packing : [ 'pack_start', false, true , 0 ],
347 packing : [ 'pack_start', false, true , 0 ],
349 label : "In Directory:"
357 packing : [ 'pack_end', true, true , 0 ],
359 // set_text_column : [1]
360 //set_size_request : [150,-1]
364 setValue : function(v)
368 Roo.each(XN.get(this).directory_model.data, function(n, ix) {
375 getValue : function()
377 var ix = this.el.get_active();
381 return XN.get(this).directory_model.data[ix].xtype;
383 var iter = new Gtk.TreeIter();
384 if (this.el.get_active_iter(iter)) {
387 var value = new GObject.Value('');
388 this.model.el.get_value(iter, 0, value);
397 _rendered : function ()
400 // _form.xtype = this;
401 this.el.add_attribute(this.items[0].el , 'markup', 1 );
402 //this.el.add_attribute(this.items[0].el , 'popup', 2 );
414 xtype : 'CellRendererText',
415 packing : ['pack_start'],
422 packing : [ 'set_model' ],
424 xid: 'directory_model',
427 _rendered : function ()
430 this.el.set_column_types ( 2, [
431 GObject.TYPE_STRING, // real key
432 GObject.TYPE_STRING // real type
446 loadData : function (data) {
448 var iter = new Gtk.TreeIter();
450 Roo.each(data, function(p) {
455 el.set_value(iter, 0, p.id);
456 el.set_value(iter, 1, p.desc);
475 packing : [ 'pack_end', true, true , 0 ],
492 //_win = XN.xnew(create());