X-Git-Url: http://git.roojs.org/?p=app.Builder.js;a=blobdiff_plain;f=src%2FBuilder4%2FPopoverFileDetails.vala;h=9bfab0a8ecc3fe275a9b9ee57bf7ee84abcca97a;hp=b6355b7bc00253151b9eae0209c2e17f2cc3967e;hb=HEAD;hpb=948a12a58f44bbd2d17bc058532b840f044c362c diff --git a/src/Builder4/PopoverFileDetails.vala b/src/Builder4/PopoverFileDetails.vala index b6355b7bc..9bfab0a8e 100644 --- a/src/Builder4/PopoverFileDetails.vala +++ b/src/Builder4/PopoverFileDetails.vala @@ -12,6 +12,7 @@ public class Xcls_PopoverFileDetails : Object } return _PopoverFileDetails; } + public Xcls_grid grid; public Xcls_filetypelbl filetypelbl; public Xcls_filetype filetype; public Xcls_ftdbcellrenderer ftdbcellrenderer; @@ -25,6 +26,9 @@ public class Xcls_PopoverFileDetails : Object public Xcls_build_module build_module; public Xcls_dbcellrenderer dbcellrenderer; public Xcls_dbmodel dbmodel; + public Xcls_dir dir; + public Xcls_dircellrenderer dircellrenderer; + public Xcls_dirmodel dirmodel; public Xcls_save_btn save_btn; // my vars (def) @@ -109,18 +113,10 @@ public class Xcls_PopoverFileDetails : Object - _this.ftdbmodel.loadData("bjs"); // fixme - need to determine type.. - _this.filetype.el.hide(); - _this.filetypelbl.el.hide(); - if (c.path.length > 0) { - this.save_btn.el.set_label("Save"); - } else { - this.save_btn.el.set_label("Create"); - _this.filetype.el.show(); - _this.filetypelbl.el.show(); - } + + var ar = new Gee.ArrayList(); _this.dbmodel.loadData(ar,""); @@ -154,6 +150,21 @@ public class Xcls_PopoverFileDetails : Object this.el.show_all(); this.name.el.grab_focus(); + + + if (c.path.length > 0) { + this.save_btn.el.set_label("Save"); + _this.filetype.el.hide(); + _this.filetypelbl.el.hide(); + _this.filetype.showhide(true); // as we only work on bjs files currently + } else { + this.save_btn.el.set_label("Create"); + _this.ftdbmodel.loadData("bjs"); // fixme - need to determine type.. + _this.filetype.el.show(); + _this.filetypelbl.el.show(); + } + + //this.success = c.success; @@ -179,10 +190,10 @@ public class Xcls_PopoverFileDetails : Object var child_0 = new Xcls_HeaderBar3( _this ); child_0.ref(); this.el.pack_start ( child_0.el , false,true,0 ); - var child_1 = new Xcls_Grid4( _this ); + var child_1 = new Xcls_grid( _this ); child_1.ref(); this.el.pack_start ( child_1.el , false,false,4 ); - var child_2 = new Xcls_HButtonBox25( _this ); + var child_2 = new Xcls_HButtonBox29( _this ); child_2.ref(); this.el.pack_end ( child_2.el , false,true,0 ); } @@ -212,7 +223,7 @@ public class Xcls_PopoverFileDetails : Object // user defined functions } - public class Xcls_Grid4 : Object + public class Xcls_grid : Object { public Gtk.Grid el; private Xcls_PopoverFileDetails _this; @@ -221,9 +232,10 @@ public class Xcls_PopoverFileDetails : Object // my vars (def) // ctor - public Xcls_Grid4(Xcls_PopoverFileDetails _owner ) + public Xcls_grid(Xcls_PopoverFileDetails _owner ) { _this = _owner; + _this.grid = this; this.el = new Gtk.Grid(); // my vars (dec) @@ -246,40 +258,46 @@ public class Xcls_PopoverFileDetails : Object this.el.attach ( child_3.el , 1,1,1,1 ); var child_4 = new Xcls_Label11( _this ); child_4.ref(); - this.el.attach ( child_4.el , 0,1,2,3 ); + this.el.attach ( child_4.el , 0,2,1,1 ); var child_5 = new Xcls_title( _this ); child_5.ref(); - this.el.attach ( child_5.el , 1,2,2,3 ); + this.el.attach ( child_5.el , 1,2,1,1 ); var child_6 = new Xcls_Label13( _this ); child_6.ref(); - this.el.attach ( child_6.el , 0,1,3,4 ); + this.el.attach ( child_6.el , 0,3,1,1 ); var child_7 = new Xcls_region( _this ); child_7.ref(); - this.el.attach ( child_7.el , 1,2,3,4 ); + this.el.attach ( child_7.el , 1,3,1,1 ); var child_8 = new Xcls_Label15( _this ); child_8.ref(); - this.el.attach ( child_8.el , 0,1,4,5 ); + this.el.attach ( child_8.el , 0,4,1,1 ); var child_9 = new Xcls_parent( _this ); child_9.ref(); - this.el.attach ( child_9.el , 1,2,4,5 ); + this.el.attach ( child_9.el , 1,4,1,1 ); var child_10 = new Xcls_Label17( _this ); child_10.ref(); - this.el.attach ( child_10.el , 0,1,5,6 ); + this.el.attach ( child_10.el , 0,5,1,1 ); var child_11 = new Xcls_permname( _this ); child_11.ref(); - this.el.attach_defaults ( child_11.el , 1,2,5,6 ); + this.el.attach ( child_11.el , 1,5,1,1 ); var child_12 = new Xcls_Label19( _this ); child_12.ref(); - this.el.attach_defaults ( child_12.el , 0,1,6,7 ); + this.el.attach ( child_12.el , 0,6,1,1 ); var child_13 = new Xcls_modOrder( _this ); child_13.ref(); - this.el.attach_defaults ( child_13.el , 1,2,6,7 ); + this.el.attach ( child_13.el , 1,6,1,1 ); var child_14 = new Xcls_Label21( _this ); child_14.ref(); - this.el.attach_defaults ( child_14.el , 0,1,7,8 ); + this.el.attach ( child_14.el , 0,7,1,1 ); var child_15 = new Xcls_build_module( _this ); child_15.ref(); - this.el.attach_defaults ( child_15.el , 1,2,7,8 ); + this.el.attach ( child_15.el , 1,7,1,1 ); + var child_16 = new Xcls_Label25( _this ); + child_16.ref(); + this.el.attach ( child_16.el , 0,8 ); + var child_17 = new Xcls_dir( _this ); + child_17.ref(); + this.el.attach ( child_17.el , 1,8 ); } // user defined functions @@ -337,9 +355,57 @@ public class Xcls_PopoverFileDetails : Object // init method this.el.add_attribute(_this.ftdbcellrenderer.el , "markup", 1 ); + + //listeners + this.el.changed.connect( () => { + Gtk.TreeIter iter; + bool is_bjs = true; + if (this.el.get_active_iter(out iter)) { + Value vfname; + _this.ftdbmodel.el.get_value (iter, 0, out vfname); + is_bjs = ((string)vfname) == "bjs"; + } + + + // directory is only available for non-bjs + this.showhide(is_bjs); + + + }); } // user defined functions + public void showhide (bool is_bjs) { + for (var i = 2; i < 9;i++) { + var el = _this.grid.el.get_child_at(0,i); + + var showhide= is_bjs; + if (i> 7) { + showhide = !showhide; + } + + if (showhide) { + el.show(); + } else { + el.hide(); + } + el = _this.grid.el.get_child_at(1,i); + if (showhide) { + el.show(); + } else { + el.hide(); + } + } + // load up the directories + //??? why can we not create bjs files in other directories?? + if (!is_bjs && _this.file.path.length < 1) { + _this.dirmodel.loadData(); + + + } + + + } } public class Xcls_ftdbcellrenderer : Object { @@ -867,8 +933,155 @@ public class Xcls_PopoverFileDetails : Object } + public class Xcls_Label25 : Object + { + public Gtk.Label el; + private Xcls_PopoverFileDetails _this; + + + // my vars (def) + + // ctor + public Xcls_Label25(Xcls_PopoverFileDetails _owner ) + { + _this = _owner; + this.el = new Gtk.Label( "Directory" ); + + // my vars (dec) + + // set gobject values + this.el.justify = Gtk.Justification.RIGHT; + this.el.xalign = 0.900000f; + this.el.visible = true; + } + + // user defined functions + } + + public class Xcls_dir : Object + { + public Gtk.ComboBox el; + private Xcls_PopoverFileDetails _this; + + + // my vars (def) + + // ctor + public Xcls_dir(Xcls_PopoverFileDetails _owner ) + { + _this = _owner; + _this.dir = this; + this.el = new Gtk.ComboBox(); + + // my vars (dec) + + // set gobject values + var child_0 = new Xcls_dircellrenderer( _this ); + child_0.ref(); + this.el.pack_start ( child_0.el , true ); + var child_1 = new Xcls_dirmodel( _this ); + child_1.ref(); + this.el.set_model ( child_1.el ); + + // init method + + this.el.add_attribute(_this.dircellrenderer.el , "markup", 1 ); + } + + // user defined functions + } + public class Xcls_dircellrenderer : Object + { + public Gtk.CellRendererText el; + private Xcls_PopoverFileDetails _this; + + + // my vars (def) + + // ctor + public Xcls_dircellrenderer(Xcls_PopoverFileDetails _owner ) + { + _this = _owner; + _this.dircellrenderer = this; + this.el = new Gtk.CellRendererText(); + + // my vars (dec) + + // set gobject values + } + + // user defined functions + } + + public class Xcls_dirmodel : Object + { + public Gtk.ListStore el; + private Xcls_PopoverFileDetails _this; + + + // my vars (def) + + // ctor + public Xcls_dirmodel(Xcls_PopoverFileDetails _owner ) + { + _this = _owner; + _this.dirmodel = this; + this.el = new Gtk.ListStore( 2, typeof(string),typeof(string) ); + + // my vars (dec) + + // set gobject values + } + + // user defined functions + public void loadData () { + + + + this.el.clear(); + + if (!(_this.project is Project.Gtk)) { + return; + } + var sd = ((Project.Gtk)_this.project).sourcedirs(); + + Gtk.TreeIter iter; + var el = this.el; + + /// el.append(out iter); + + + // el.set_value(iter, 0, ""); + // el.set_value(iter, 1, "aaa - Just add Element - aaa"); + + // el.append(out iter); + + + // el.set_value(iter, 0, ""); + // el.set_value(iter, 1, "-- select a directoyr --"); + //_this.build_module.el.set_active_iter(iter); + + for (var i = 0; i < sd.length;i++) { + + + el.append(out iter); + + el.set_value(iter, 0, sd[i]); + el.set_value(iter, 1, sd[i]); + + //if (data.get(i) == cur) { + // _this.build_module.el.set_active_iter(iter); + // } + + } + // this.el.set_sort_column_id(0, Gtk.SortType.ASCENDING); + + } + } + + - public class Xcls_HButtonBox25 : Object + public class Xcls_HButtonBox29 : Object { public Gtk.HButtonBox el; private Xcls_PopoverFileDetails _this; @@ -877,7 +1090,7 @@ public class Xcls_PopoverFileDetails : Object // my vars (def) // ctor - public Xcls_HButtonBox25(Xcls_PopoverFileDetails _owner ) + public Xcls_HButtonBox29(Xcls_PopoverFileDetails _owner ) { _this = _owner; this.el = new Gtk.HButtonBox(); @@ -888,7 +1101,7 @@ public class Xcls_PopoverFileDetails : Object this.el.margin_right = 4; this.el.margin_left = 4; this.el.margin_bottom = 4; - var child_0 = new Xcls_Button26( _this ); + var child_0 = new Xcls_Button30( _this ); child_0.ref(); this.el.add ( child_0.el ); var child_1 = new Xcls_save_btn( _this ); @@ -898,7 +1111,7 @@ public class Xcls_PopoverFileDetails : Object // user defined functions } - public class Xcls_Button26 : Object + public class Xcls_Button30 : Object { public Gtk.Button el; private Xcls_PopoverFileDetails _this; @@ -907,7 +1120,7 @@ public class Xcls_PopoverFileDetails : Object // my vars (def) // ctor - public Xcls_Button26(Xcls_PopoverFileDetails _owner ) + public Xcls_Button30(Xcls_PopoverFileDetails _owner ) { _this = _owner; this.el = new Gtk.Button(); @@ -1000,10 +1213,53 @@ public class Xcls_PopoverFileDetails : Object _this.el.hide(); return; } + + // ---------------- NEW FILES... + Gtk.TreeIter iter; + + if (!_this.filetype.el.get_active_iter(out iter)) { + // should not happen... + // so we are jut going to return without + StandardErrorDialog.show( + _this.mainwindow.el, + "You must select a file type. " + ); + return; + + } + + var fn = _this.name.el.get_text(); - var dir = _this.project.firstPath(); + + Value ftypename; + _this.ftdbmodel.el.get_value (iter, 0, out ftypename); + var ext = ((string)ftypename); + var dir = _this.project.firstPath(); + if (ext != "bjs") { + + if (!_this.dir.el.get_active_iter(out iter)) { + // should not happen... + // so we are jut going to return without + StandardErrorDialog.show( + _this.mainwindow.el, + "You must select a directory " + ); + return; + } + Value vdir; + _this.dirmodel.el.get_value (iter, 0, out vdir); + dir = (string)vdir; + } + + var targetfile = dir + "/" + fn; + + // strip the file type off the end.. + + + var rx = new GLib.Regex("\\." + ext + "$",GLib.RegexCompileFlags.CASELESS); + targetfile = rx.replace(targetfile, targetfile.length, 0, ""); - if (GLib.FileUtils.test(dir + "/" + fn + ".bjs", GLib.FileTest.EXISTS)) { + if (GLib.FileUtils.test(targetfile + "." + ext, GLib.FileTest.EXISTS)) { Xcls_StandardErrorDialog.singleton().show( _this.mainwindow.el, "That file already exists" @@ -1012,9 +1268,9 @@ public class Xcls_PopoverFileDetails : Object } var f = JsRender.JsRender.factory( - _this.file.project.xtype, + ext == "bjs" ? _this.file.project.xtype : "PlainFile", _this.file.project, - dir + "/" + fn + ".bjs"); + targetfile + "." + ext); _this.file = f; @@ -1023,14 +1279,16 @@ public class Xcls_PopoverFileDetails : Object _this.updateFileFromEntry(); _this.file.loaded = true; _this.file.save(); - _this.file.project.addFile(_this.file); + if (ext == "bjs") { + _this.file.project.addFile(_this.file); + } // what about .js ? _this.done = true; _this.el.hide(); - + // hopefull this will work with bjs files.. _this.success(_this.project, _this.file);