Fix #8101 - new roo bjs files fail and fix top drop
authorAlan <alan@roojs.com>
Wed, 20 Mar 2024 09:54:56 +0000 (17:54 +0800)
committerAlan <alan@roojs.com>
Wed, 20 Mar 2024 09:54:56 +0000 (17:54 +0800)
src/Application.vala
src/Builder4/PopoverFileDetails.bjs
src/Builder4/PopoverFileDetails.vala
src/Palete/Roo.vala

index 340a70d..9ba9057 100644 (file)
                                GLib.error("need a project %s, to use --drop-list",BuilderApplication.opt_compile_project);
                         }
                          if (cur_project.xtype != "Gtk") {
-                               GLib.error("need a Gtk project %s, to use --drop-list",BuilderApplication.opt_compile_project);
+                                var rp = (Palete.Roo) cur_project.palete;
+                               print("\n\nDropList:\n%s", geeArrayToString(rp.getDropList(BuilderApplication.opt_drop_list)));
+                                print("\n\nChildList:\n%s", geeArrayToString(rp.getChildList(BuilderApplication.opt_drop_list, false)));
+                                print("\n\nChildList \n(with props): %s", geeArrayToString(rp.getChildList(BuilderApplication.opt_drop_list, true)));  
+                                
+                                
+                                print("\n\nPropsList: %s", this.girArrayToString(rp.getPropertiesFor( BuilderApplication.opt_drop_list, JsRender.NodePropType.PROP)));
+                                print("\n\nSignalList: %s", this.girArrayToString(rp.getPropertiesFor( BuilderApplication.opt_drop_list, JsRender.NodePropType.LISTENER)));
+                                
+                                // ctor.
+                                 print("\n\nCtor Values: %s", rp.fqnToNode(BuilderApplication.opt_drop_list).toJsonString());
+                                GLib.Process.exit(Posix.EXIT_SUCCESS);
+                         
+                         
+                        
                         }
                         var p = (Palete.Gtk) cur_project.palete;
                        
index bd2192f..6026f73 100644 (file)
         {
          "$ visible" : true,
          "$ xns" : "Gtk",
-         "* pack" : "attach,1,2,1,1",
          "bool hexpand" : true,
          "id" : "title",
          "xtype" : "Entry"
          "",
          "",
          "\tif (_this.name.el.get_text().length  < 1) {",
-         "\t    Xcls_StandardErrorDialog.singleton().show(",
+         "\t   var msg = new Adw.MessageDialog(",
          "\t        _this.mainwindow.el,",
+         "\t        \"Opps\",",
          "\t        \"You have to set a Component name \"",
          "\t    );",
+         "\t    msg.modal = true;",
+         "\t    msg.present();",
          "\t     ",
          "\t    return;",
          "\t}",
index 94ab8c9..59a720e 100644 (file)
-    static Xcls_PopoverFileDetails  _PopoverFileDetails;
-
-    public class Xcls_PopoverFileDetails : Object
-    {
-        public Gtk.Window el;
-        private Xcls_PopoverFileDetails  _this;
-
-        public static Xcls_PopoverFileDetails singleton()
-        {
-            if (_PopoverFileDetails == null) {
-                _PopoverFileDetails= new Xcls_PopoverFileDetails();
-            }
-            return _PopoverFileDetails;
-        }
-        public Xcls_grid grid;
-        public Xcls_filetype_lbl filetype_lbl;
-        public Xcls_filetype filetype;
-        public Xcls_filetype_model filetype_model;
-        public Xcls_dir_dropdown_lbl dir_dropdown_lbl;
-        public Xcls_dir_dropdown dir_dropdown;
-        public Xcls_dir_model dir_model;
-        public Xcls_name_lbl name_lbl;
-        public Xcls_name name;
-        public Xcls_title_lbl title_lbl;
-        public Xcls_title title;
-        public Xcls_region_lbl region_lbl;
-        public Xcls_region region;
-        public Xcls_parent_lbl parent_lbl;
-        public Xcls_parent parent;
-        public Xcls_permname_lbl permname_lbl;
-        public Xcls_permname permname;
-        public Xcls_modOrder_lbl modOrder_lbl;
-        public Xcls_modOrder modOrder;
-        public Xcls_build_module_lbl build_module_lbl;
-        public Xcls_build_module build_module;
-        public Xcls_build_module_model build_module_model;
-        public Xcls_path_lbl path_lbl;
-        public Xcls_path path;
-        public Xcls_gen_lbl gen_lbl;
-        public Xcls_gen gen;
-        public Xcls_save_btn save_btn;
-
-            // my vars (def)
-        public bool is_new;
-        public bool new_window;
-        public signal void success (Project.Project pr, JsRender.JsRender file);
-        public JsRender.JsRender file;
-        public Project.Project project;
-        public uint border_width;
-        public bool done;
-        public Xcls_MainWindow mainwindow;
-
-        // ctor
-        public Xcls_PopoverFileDetails()
-        {
-            _this = this;
-            this.el = new Gtk.Window();
-
-            // my vars (dec)
-            this.is_new = true;
-            this.new_window = true;
-            this.file = null;
-            this.border_width = 0;
-            this.done = false;
-            this.mainwindow = null;
-
-            // set gobject values
-            this.el.title = "Add / Edit File";
-            this.el.modal = true;
-            var child_1 = new Xcls_Box2( _this );
-            child_1.ref();
-            this.el.set_child ( child_1.el  );
-            var child_2 = new Xcls_HeaderBar29( _this );
-            this.el.titlebar = child_2.el;
-
-            //listeners
-            this.el.close_request.connect( ( ) => {
-               _this.el.hide();
-               return true;
-            });
-        }
-
-        // user defined functions
-        public void onDirChanged () {
-        if (this.dir_dropdown.el.selected == Gtk.INVALID_LIST_POSITION) {
-                       this.build_module_lbl.el.hide();
-                       this.build_module.el.hide();
-                       this.name_lbl.el.hide();
-                       this.name.el.hide();
-                        
-               this.gen_lbl.el.hide();
-                       this.gen.el.hide();
-            
-                       return;
-                       
-               
-               }
-               // directory selected
-               var sel = this.filetype.getValue();
-               
-               if (this.file.project.xtype=="Gtk" && (sel == "bjs" || sel == "vala")) {
-                       this.build_module_lbl.el.show();
-                       this.build_module.el.show();
-               }
-               this.name_lbl.el.show();
-               this.name.el.show();
-               
-               if (sel == "bjs") {
-                _this.gen_lbl.el.show();
-                _this.gen.el.show();
-            }
-            
-            if (this.file.project.xtype == "Roo" && sel == "bjs") {
-               this.title_lbl.el.show();
-                       this.title.el.show();
-                       
-                       this.region_lbl.el.show();
-                       this.region.el.show();
-                       
-                       this.parent_lbl.el.show();
-                       this.parent.el.show();
-                       
-                       this.permname_lbl.el.show();
-                       this.permname.el.show();
-                       
-                       this.modOrder_lbl.el.show();
-                       this.modOrder.el.show();
-               }
-            
-                
-        }
-        public void showEditFile () {
-               this.save_btn.el.set_label("Save");
-               this.filetype_lbl.el.hide();
-               this.filetype.el.hide();
-                        
-               var sel = this.filetype.getValue();
-               switch(_this.project.xtype) {
-                       case "Roo":      
-                                if (sel == "bjs") {
-                                       _this.title_lbl.el.show();
-                                       _this.title.el.show();
-                                       
-                                       _this.region_lbl.el.show();
-                                       _this.region.el.show();
-                                       
-                                       _this.parent_lbl.el.show();
-                                       _this.parent.el.show();
-                                       
-                                       _this.permname_lbl.el.show();
-                                       _this.permname.el.show();
-                                       
-                                       _this.modOrder_lbl.el.show();
-                                       _this.modOrder.el.show();
-                               
-                               }
-                               break;
-                       default:
-                               _this.build_module_lbl.el.show();
-                               _this.build_module.el.show();   
-                               
-                               if (sel == "bjs") {
-                               
-                                        _this.gen_lbl.el.show();
-                                       _this.gen.el.show();
-                               }
-                               break;
-               }
-               this.path.el.show();
-               this.path_lbl.el.show();
-               this.path.el.set_text(_this.file.relpath);
-        }
-        public void show (JsRender.JsRender  c, Gtk.Window pwin, bool new_window) 
-        {
-            
-            this.project = c.project;
-            this.done = false;
-            this.new_window = new_window;
-            
-            //if (!this.el) {
-                //this.init();
-             //} 
-             
-              this.is_new = c.name == "";
-        
-            _this.name.el.set_text(c.name);
-            _this.title.el.set_text(c.title);
-            _this.parent.el.set_text(c.parent);    
-            _this.region.el.set_text(c.region);
-            _this.modOrder.el.set_text(c.modOrder);
-            _this.permname.el.set_text(c.permname);
-         
-           _this.gen.el.active = c.gen_extended;
-           
-        
-            
-            if (this.project.xtype == "Gtk") {
-               var p = (Project.Gtk) this.project;
-                   this.build_module_model.load(p.compilegroups);
-                   // it will select first if available...
-                   // only for new files.
-                   if (!this.is_new) {
-                           this.build_module.setValue(c.build_module);
-                   }
-            }
-                    
-             
-            _this.file = c;
-           
-           // this.el.set_size_request( 550, 100); // should expand height, but give  a min width.
-        
-            this.el.set_transient_for(pwin);
-            
-            // window + header?
-             this.hideAll();
-            this.el.show();
-           // this.name.el.grab_focus();
-            
-            
-            if (!this.is_new) {
-                  this.showEditFile();
-            } else {
-               this.showNewFile();
-                        
-              
-                   
-            }
-            
-            
-            //this.success = c.success;
-            
-            
-        }
-        public void updateFileFromEntry () {
-        
-                _this.file.title = _this.title.el.get_text();
-                _this.file.region = _this.region.el.get_text();            
-                _this.file.parent = _this.parent.el.get_text();                        
-                _this.file.permname = _this.permname.el.get_text();                                    
-                _this.file.modOrder = _this.modOrder.el.get_text();
-                _this.file.gen_extended = _this.gen.el.active;
-                var new_name =  _this.name.el.get_text();
-                if (_this.file.name.length  > 0 && _this.file.name != new_name) {
-                    try {
-                       _this.file.renameTo( new_name );
-                       } catch (JsRender.Error e) { } // do nothing?
-                }
-                
-                _this.file.build_module = _this.build_module.getValue();
-                       
-                
-                
-        
-                                                            
-        }
-        public void onFileTypeChange () {
-               if (this.filetype.el.selected == Gtk.INVALID_LIST_POSITION) {
-                       this.dir_dropdown.el.hide();
-                       this.dir_dropdown_lbl.el.hide();
-                       this.build_module_lbl.el.hide();
-                       this.build_module.el.hide();
-                       this.name_lbl.el.hide();
-                       this.name.el.hide();
-                
-               this.gen_lbl.el.hide();
-                       this.gen.el.hide();
-            
-            
-               this.title_lbl.el.hide();
-                       this.title.el.hide();
-                       
-                       this.region_lbl.el.hide();
-                       this.region.el.hide();
-                       
-                       this.parent_lbl.el.hide();
-                       this.parent.el.hide();
-                       
-                       this.permname_lbl.el.hide();
-                       this.permname.el.hide();
-                       
-                       this.modOrder_lbl.el.hide();
-                       this.modOrder.el.hide();
-         
-                       return;
-                        
-               }
-               
-               this.dir_dropdown.el.show();
-               this.dir_dropdown_lbl.el.show();
-               var sel = this.filetype.getValue();
-               
-               var old_sel = _this.dir_dropdown.el.selected != Gtk.INVALID_LIST_POSITION;
-               var olddir = this.dir_dropdown.getValue();
-               GLib.debug("old dir = %s", olddir);
-               if (this.file.project.xtype=="Gtk" && (sel == "bjs" || sel == "vala")) {
-                       _this.project.loadDirsToStringList(_this.dir_model.el, "/src");
-                       if (old_sel && olddir.has_prefix("/src")) {
-                               this.dir_dropdown.setValue(olddir);
-                       } else {
-                            _this.dir_dropdown.el.selected = Gtk.INVALID_LIST_POSITION;
-                   }
-                 
-               } else {
-        
-                _this.project.loadDirsToStringList(_this.dir_model.el, "");
-                       if (old_sel) {
-                               this.dir_dropdown.setValue(olddir);
-                       } else {
-                            _this.dir_dropdown.el.selected = Gtk.INVALID_LIST_POSITION;
-                    }
-               
-            }
-        
-         
-            // is this confusing?  - should we just strip out / add if necessary..
-            if (sel == "bjs" || sel == "vala" || sel == "js" || sel == "css" || sel == "php") {
-                _this.name_lbl.el.label = "Component Name (Filename with-out extension)";                               
-            } else {
-                   _this.name_lbl.el.label = "File Name (with extension)";
-            }
-         
-        }
-        public void showNewFile () {
-               this.save_btn.el.set_label("Create");
-               this.hideAll();
-               this.filetype.el.show();
-            this.filetype_lbl.el.show();
-            this.filetype_model.load();
-               this.filetype.el.selected = Gtk.INVALID_LIST_POSITION;
-         
-                   
-        }
-        public void hideAll () {
-        
-               // exiting only
-               this.path_lbl.el.hide();
-            this.path.el.hide();
-             
-            // new 
-            this.name_lbl.el.hide();
-            this.name.el.hide();
-            //new 
-            this.dir_dropdown_lbl.el.hide();
-            this.dir_dropdown.el.hide();
-               // roo
-               this.title_lbl.el.hide();
-               this.title.el.hide();
-               
-               this.region_lbl.el.hide();
-               this.region.el.hide();
-               
-               this.parent_lbl.el.hide();
-               this.parent.el.hide();
-               
-               this.permname_lbl.el.hide();
-               this.permname.el.hide();
-               
-               this.modOrder_lbl.el.hide();
-               this.modOrder.el.hide();
-               
-               this.build_module_lbl.el.hide();
-               this.build_module.el.hide();
-               
-               this.gen_lbl.el.hide();
-               this.gen.el.hide();
-                       this.filetype_lbl.el.hide();
-                       this.filetype.el.hide();
-        }
-        public class Xcls_Box2 : Object
-        {
-            public Gtk.Box el;
-            private Xcls_PopoverFileDetails  _this;
-
-
-                // my vars (def)
-
-            // ctor
-            public Xcls_Box2(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                this.el = new Gtk.Box( Gtk.Orientation.VERTICAL, 0 );
-
-                // my vars (dec)
-
-                // set gobject values
-                this.el.homogeneous = false;
-                this.el.margin_end = 4;
-                this.el.margin_start = 4;
-                this.el.hexpand = true;
-                this.el.margin_bottom = 4;
-                this.el.margin_top = 4;
-                new Xcls_grid( _this );
-                this.el.append ( _this.grid.el  );
-            }
-
-            // user defined functions
-        }
-        public class Xcls_grid : Object
-        {
-            public Gtk.Grid el;
-            private Xcls_PopoverFileDetails  _this;
-
-
-                // my vars (def)
-
-            // ctor
-            public Xcls_grid(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.grid = this;
-                this.el = new Gtk.Grid();
-
-                // my vars (dec)
-
-                // set gobject values
-                this.el.margin_end = 4;
-                this.el.margin_start = 4;
-                this.el.hexpand = true;
-                this.el.column_spacing = 4;
-                this.el.row_spacing = 2;
-                new Xcls_filetype_lbl( _this );
-                this.el.attach( _this.filetype_lbl.el, 0, 0, 1, 1 );
-                new Xcls_filetype( _this );
-                this.el.attach( _this.filetype.el, 1, 0, 1, 1 );
-                new Xcls_dir_dropdown_lbl( _this );
-                this.el.attach( _this.dir_dropdown_lbl.el, 0, 1, 1, 1 );
-                new Xcls_dir_dropdown( _this );
-                this.el.attach( _this.dir_dropdown.el, 1, 1, 1, 1 );
-                new Xcls_name_lbl( _this );
-                this.el.attach( _this.name_lbl.el, 0, 2, 1, 1 );
-                new Xcls_name( _this );
-                this.el.attach( _this.name.el, 1, 2, 1, 1 );
-                new Xcls_title_lbl( _this );
-                this.el.attach( _this.title_lbl.el, 0, 3, 1, 1 );
-                new Xcls_title( _this );
-                this.el.attach ( _this.title.el , 1,2,1,1 );
-                new Xcls_region_lbl( _this );
-                this.el.attach( _this.region_lbl.el, 0, 4, 1, 1 );
-                new Xcls_region( _this );
-                this.el.attach( _this.region.el, 1, 4, 1, 1 );
-                new Xcls_parent_lbl( _this );
-                this.el.attach( _this.parent_lbl.el, 0, 5, 1, 1 );
-                new Xcls_parent( _this );
-                this.el.attach( _this.parent.el, 1, 5, 1, 1 );
-                new Xcls_permname_lbl( _this );
-                this.el.attach( _this.permname_lbl.el, 0, 6, 1, 1 );
-                new Xcls_permname( _this );
-                this.el.attach( _this.permname.el, 1, 6, 1, 1 );
-                new Xcls_modOrder_lbl( _this );
-                this.el.attach( _this.modOrder_lbl.el, 0, 7, 1, 1 );
-                new Xcls_modOrder( _this );
-                this.el.attach( _this.modOrder.el, 1, 7, 1, 1 );
-                new Xcls_build_module_lbl( _this );
-                this.el.attach( _this.build_module_lbl.el, 0, 8, 1, 1 );
-                new Xcls_build_module( _this );
-                this.el.attach( _this.build_module.el, 1, 8, 1, 1 );
-                new Xcls_path_lbl( _this );
-                this.el.attach( _this.path_lbl.el, 0, 9, 1, 1 );
-                new Xcls_path( _this );
-                this.el.attach( _this.path.el, 1, 9, 1, 1 );
-                new Xcls_gen_lbl( _this );
-                this.el.attach( _this.gen_lbl.el, 0, 10, 1, 1 );
-                new Xcls_gen( _this );
-                this.el.attach( _this.gen.el, 1, 10, 1, 1 );
-            }
-
-            // user defined functions
-            public void xhideRow (int row) 
-            {
-               var el = _this.grid.el.get_child_at(0,row);
-            
-               el.hide();
-               el = _this.grid.el.get_child_at(1,row);
-               el.hide();
-            
-            }
-            public void xshowAllRows () {
-               for (var i = 2; i < 10;i++) {
-                       var el = _this.grid.el.get_child_at(0,i);
-                       el.show();
-                       el = _this.grid.el.get_child_at(1,i);
-                       el.show();
-                }
-            }
-        }
-        public class Xcls_filetype_lbl : Object
-        {
-            public Gtk.Label el;
-            private Xcls_PopoverFileDetails  _this;
-
-
-                // my vars (def)
-
-            // ctor
-            public Xcls_filetype_lbl(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.filetype_lbl = this;
-                this.el = new Gtk.Label( "File type" );
-
-                // my vars (dec)
-
-                // set gobject values
-                this.el.justify = Gtk.Justification.RIGHT;
-                this.el.xalign = 0.900000f;
-            }
-
-            // user defined functions
-        }
-
-        public class Xcls_filetype : Object
-        {
-            public Gtk.DropDown el;
-            private Xcls_PopoverFileDetails  _this;
-
-
-                // my vars (def)
-            public bool in_showhide;
-
-            // ctor
-            public Xcls_filetype(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.filetype = this;
-                new Xcls_filetype_model( _this );
-                this.el = new Gtk.DropDown( _this.filetype_model.el, null );
-
-                // my vars (dec)
-                this.in_showhide = false;
-
-                // set gobject values
-                this.el.hexpand = true;
-
-                //listeners
-                this.el.notify["selected"].connect( () => {
-                
-                       _this.onFileTypeChange();
-                
-                 });
-            }
-
-            // user defined functions
-            public string getValue () {
-               
-               if (!_this.is_new) {
-                       return _this.file.xtype != "Plainfile" ? "bjs" :  _this.file.file_ext;
-               }
-               
-               if (this.el.selected == Gtk.INVALID_LIST_POSITION) {
-                       return "";
-               }
-               
-               return _this.filetype_model.el.get_string(this.el.selected).split(" ")[0];
-            }
-            public void setValue (string cur) {
-               var el  = _this.filetype_model.el;
-               for(var i= 0; i < el.get_n_items();i++)  {
-                       if (el.get_string(i).has_prefix(cur)) {
-                               this.el.selected = i;
-                               break;
-                       }
-               }
-            }
-        }
-        public class Xcls_filetype_model : Object
-        {
-            public Gtk.StringList el;
-            private Xcls_PopoverFileDetails  _this;
-
-
-                // my vars (def)
-
-            // ctor
-            public Xcls_filetype_model(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.filetype_model = this;
-                this.el = new Gtk.StringList( {} );
-
-                // my vars (dec)
-
-                // set gobject values
-            }
-
-            // user defined functions
-            public void load () {
-                var el = this.el;
-                
-                while (el.get_n_items() > 0) {
-                       el.remove(0);
-               }
-               el.append("bjs - User Interface File");
-             
-                
-             switch(_this.project.xtype) {
-               case "Roo":
-                       el.append("js - Javascript File");
-                       el.append("css - CSS File");
-                       el.append("php - Javascript File");
-                       
-                       break;
-            
-               case "Gtk":             
-                               
-                       el.append("vala - Vala File");
-                       el.append("css - CSS File");
-                       el.append("other - Other Type");
-                       break;
-                default : 
-                       break;
-               }
-            
-               
-               
-               
-            }
-        }
-
-
-        public class Xcls_dir_dropdown_lbl : Object
-        {
-            public Gtk.Label el;
-            private Xcls_PopoverFileDetails  _this;
-
-
-                // my vars (def)
-
-            // ctor
-            public Xcls_dir_dropdown_lbl(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.dir_dropdown_lbl = this;
-                this.el = new Gtk.Label( "Create File in this 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_dropdown : Object
-        {
-            public Gtk.DropDown el;
-            private Xcls_PopoverFileDetails  _this;
-
-
-                // my vars (def)
-            public int colspan;
-
-            // ctor
-            public Xcls_dir_dropdown(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.dir_dropdown = this;
-                new Xcls_dir_model( _this );
-                this.el = new Gtk.DropDown( _this.dir_model.el, null );
-
-                // my vars (dec)
-                this.colspan = 1;
-
-                // set gobject values
-
-                //listeners
-                this.el.notify["selected"].connect( () => {
-                
-                        _this.onDirChanged();
-                       
-                       
-                       
-                 });
-            }
-
-            // user defined functions
-            public string getValue () {
-               return _this.dir_model.el.get_string(this.el.selected);
-            }
-            public void setValue (string cur) {
-               var el  = _this.dir_model.el;
-               for(var i= 0; i < el.get_n_items();i++)  {
-                       if (el.get_string(i) == cur) {
-                               this.el.selected = i;
-                               break;
-                       }
-               }
-            }
-        }
-        public class Xcls_dir_model : Object
-        {
-            public Gtk.StringList el;
-            private Xcls_PopoverFileDetails  _this;
-
-
-                // my vars (def)
-
-            // ctor
-            public Xcls_dir_model(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.dir_model = this;
-                this.el = new Gtk.StringList( {} );
-
-                // my vars (dec)
+static Xcls_PopoverFileDetails  _PopoverFileDetails;
+
+public class Xcls_PopoverFileDetails : Object
+{
+       public Gtk.Window el;
+       private Xcls_PopoverFileDetails  _this;
+
+       public static Xcls_PopoverFileDetails singleton()
+       {
+               if (_PopoverFileDetails == null) {
+                   _PopoverFileDetails= new Xcls_PopoverFileDetails();
+               }
+               return _PopoverFileDetails;
+       }
+       public Xcls_grid grid;
+       public Xcls_filetype_lbl filetype_lbl;
+       public Xcls_filetype filetype;
+       public Xcls_filetype_model filetype_model;
+       public Xcls_dir_dropdown_lbl dir_dropdown_lbl;
+       public Xcls_dir_dropdown dir_dropdown;
+       public Xcls_dir_model dir_model;
+       public Xcls_name_lbl name_lbl;
+       public Xcls_name name;
+       public Xcls_title_lbl title_lbl;
+       public Xcls_title title;
+       public Xcls_region_lbl region_lbl;
+       public Xcls_region region;
+       public Xcls_parent_lbl parent_lbl;
+       public Xcls_parent parent;
+       public Xcls_permname_lbl permname_lbl;
+       public Xcls_permname permname;
+       public Xcls_modOrder_lbl modOrder_lbl;
+       public Xcls_modOrder modOrder;
+       public Xcls_build_module_lbl build_module_lbl;
+       public Xcls_build_module build_module;
+       public Xcls_build_module_model build_module_model;
+       public Xcls_path_lbl path_lbl;
+       public Xcls_path path;
+       public Xcls_gen_lbl gen_lbl;
+       public Xcls_gen gen;
+       public Xcls_save_btn save_btn;
+
+               // my vars (def)
+       public bool is_new;
+       public bool new_window;
+       public signal void success (Project.Project pr, JsRender.JsRender file);
+       public JsRender.JsRender file;
+       public Project.Project project;
+       public uint border_width;
+       public bool done;
+       public Xcls_MainWindow mainwindow;
+
+       // ctor
+       public Xcls_PopoverFileDetails()
+       {
+               _this = this;
+               this.el = new Gtk.Window();
+
+               // my vars (dec)
+               this.is_new = true;
+               this.new_window = true;
+               this.file = null;
+               this.border_width = 0;
+               this.done = false;
+               this.mainwindow = null;
+
+               // set gobject values
+               this.el.title = "Add / Edit File";
+               this.el.modal = true;
+               var child_1 = new Xcls_Box1( _this );
+               child_1.ref();
+               this.el.set_child ( child_1.el  );
+               var child_2 = new Xcls_HeaderBar28( _this );
+               child_2.ref();
+               this.el.titlebar = child_2.el;
+
+               //listeners
+               this.el.close_request.connect( ( ) => {
+                       _this.el.hide();
+                       return true;
+               });
+       }
+
+       // user defined functions
+       public void onDirChanged () {
+       if (this.dir_dropdown.el.selected == Gtk.INVALID_LIST_POSITION) {
+                       this.build_module_lbl.el.hide();
+                       this.build_module.el.hide();
+                       this.name_lbl.el.hide();
+                       this.name.el.hide();
+                        
+               this.gen_lbl.el.hide();
+                       this.gen.el.hide();
+           
+                       return;
+                       
+               
+               }
+               // directory selected
+               var sel = this.filetype.getValue();
+               
+               if (this.file.project.xtype=="Gtk" && (sel == "bjs" || sel == "vala")) {
+                       this.build_module_lbl.el.show();
+                       this.build_module.el.show();
+               }
+               this.name_lbl.el.show();
+               this.name.el.show();
+               
+               if (sel == "bjs") {
+               _this.gen_lbl.el.show();
+               _this.gen.el.show();
+           }
+           
+           if (this.file.project.xtype == "Roo" && sel == "bjs") {
+               this.title_lbl.el.show();
+                       this.title.el.show();
+                       
+                       this.region_lbl.el.show();
+                       this.region.el.show();
+                       
+                       this.parent_lbl.el.show();
+                       this.parent.el.show();
+                       
+                       this.permname_lbl.el.show();
+                       this.permname.el.show();
+                       
+                       this.modOrder_lbl.el.show();
+                       this.modOrder.el.show();
+               }
+           
+               
+       }
+       public void showEditFile () {
+               this.save_btn.el.set_label("Save");
+               this.filetype_lbl.el.hide();
+               this.filetype.el.hide();
+                        
+               var sel = this.filetype.getValue();
+               switch(_this.project.xtype) {
+                       case "Roo":      
+                                if (sel == "bjs") {
+                                       _this.title_lbl.el.show();
+                                       _this.title.el.show();
+                                       
+                                       _this.region_lbl.el.show();
+                                       _this.region.el.show();
+                                       
+                                       _this.parent_lbl.el.show();
+                                       _this.parent.el.show();
+                                       
+                                       _this.permname_lbl.el.show();
+                                       _this.permname.el.show();
+                                       
+                                       _this.modOrder_lbl.el.show();
+                                       _this.modOrder.el.show();
+                               
+                               }
+                               break;
+                       default:
+                               _this.build_module_lbl.el.show();
+                               _this.build_module.el.show();   
+                               
+                               if (sel == "bjs") {
+                               
+                                        _this.gen_lbl.el.show();
+                                       _this.gen.el.show();
+                               }
+                               break;
+               }
+               this.path.el.show();
+               this.path_lbl.el.show();
+               this.path.el.set_text(_this.file.relpath);
+       }
+       public void show (JsRender.JsRender  c, Gtk.Window pwin, bool new_window) 
+       {
+           
+           this.project = c.project;
+           this.done = false;
+           this.new_window = new_window;
+           
+           //if (!this.el) {
+               //this.init();
+            //} 
+            
+             this.is_new = c.name == "";
+       
+           _this.name.el.set_text(c.name);
+           _this.title.el.set_text(c.title);
+           _this.parent.el.set_text(c.parent);    
+           _this.region.el.set_text(c.region);
+           _this.modOrder.el.set_text(c.modOrder);
+           _this.permname.el.set_text(c.permname);
+        
+          _this.gen.el.active = c.gen_extended;
+          
+       
+           
+           if (this.project.xtype == "Gtk") {
+               var p = (Project.Gtk) this.project;
+                   this.build_module_model.load(p.compilegroups);
+                   // it will select first if available...
+                   // only for new files.
+                   if (!this.is_new) {
+                           this.build_module.setValue(c.build_module);
+                   }
+           }
+                    
+            
+           _this.file = c;
+          
+          // this.el.set_size_request( 550, 100); // should expand height, but give  a min width.
+       
+           this.el.set_transient_for(pwin);
+           
+           // window + header?
+            this.hideAll();
+           this.el.show();
+          // this.name.el.grab_focus();
+           
+           
+           if (!this.is_new) {
+                  this.showEditFile();
+           } else {
+               this.showNewFile();
+                        
+             
+                   
+           }
+           
+           
+           //this.success = c.success;
+           
+           
+       }
+       public void updateFileFromEntry () {
+       
+               _this.file.title = _this.title.el.get_text();
+               _this.file.region = _this.region.el.get_text();            
+               _this.file.parent = _this.parent.el.get_text();                        
+               _this.file.permname = _this.permname.el.get_text();                                    
+               _this.file.modOrder = _this.modOrder.el.get_text();
+               _this.file.gen_extended = _this.gen.el.active;
+               var new_name =  _this.name.el.get_text();
+               if (_this.file.name.length  > 0 && _this.file.name != new_name) {
+                   try {
+                       _this.file.renameTo( new_name );
+                       } catch (JsRender.Error e) { } // do nothing?
+               }
+               
+               _this.file.build_module = _this.build_module.getValue();
+                       
+               
+               
+       
+                                                           
+       }
+       public void onFileTypeChange () {
+               if (this.filetype.el.selected == Gtk.INVALID_LIST_POSITION) {
+                       this.dir_dropdown.el.hide();
+                       this.dir_dropdown_lbl.el.hide();
+                       this.build_module_lbl.el.hide();
+                       this.build_module.el.hide();
+                       this.name_lbl.el.hide();
+                       this.name.el.hide();
+                
+               this.gen_lbl.el.hide();
+                       this.gen.el.hide();
+           
+           
+               this.title_lbl.el.hide();
+                       this.title.el.hide();
+                       
+                       this.region_lbl.el.hide();
+                       this.region.el.hide();
+                       
+                       this.parent_lbl.el.hide();
+                       this.parent.el.hide();
+                       
+                       this.permname_lbl.el.hide();
+                       this.permname.el.hide();
+                       
+                       this.modOrder_lbl.el.hide();
+                       this.modOrder.el.hide();
+        
+                       return;
+                        
+               }
+               
+               this.dir_dropdown.el.show();
+               this.dir_dropdown_lbl.el.show();
+               var sel = this.filetype.getValue();
+               
+               var old_sel = _this.dir_dropdown.el.selected != Gtk.INVALID_LIST_POSITION;
+               var olddir = this.dir_dropdown.getValue();
+               GLib.debug("old dir = %s", olddir);
+               if (this.file.project.xtype=="Gtk" && (sel == "bjs" || sel == "vala")) {
+                       _this.project.loadDirsToStringList(_this.dir_model.el, "/src");
+                       if (old_sel && olddir.has_prefix("/src")) {
+                               this.dir_dropdown.setValue(olddir);
+                       } else {
+                            _this.dir_dropdown.el.selected = Gtk.INVALID_LIST_POSITION;
+                   }
+                
+               } else {
+       
+               _this.project.loadDirsToStringList(_this.dir_model.el, "");
+                       if (old_sel) {
+                               this.dir_dropdown.setValue(olddir);
+                       } else {
+                            _this.dir_dropdown.el.selected = Gtk.INVALID_LIST_POSITION;
+                    }
+              
+           }
+       
+        
+           // is this confusing?  - should we just strip out / add if necessary..
+           if (sel == "bjs" || sel == "vala" || sel == "js" || sel == "css" || sel == "php") {
+               _this.name_lbl.el.label = "Component Name (Filename with-out extension)";                                
+           } else {
+                   _this.name_lbl.el.label = "File Name (with extension)";
+           }
+        
+       }
+       public void showNewFile () {
+               this.save_btn.el.set_label("Create");
+               this.hideAll();
+               this.filetype.el.show();
+           this.filetype_lbl.el.show();
+           this.filetype_model.load();
+               this.filetype.el.selected = Gtk.INVALID_LIST_POSITION;
+        
+                   
+       }
+       public void hideAll () {
+       
+               // exiting only
+               this.path_lbl.el.hide();
+           this.path.el.hide();
+            
+           // new 
+           this.name_lbl.el.hide();
+           this.name.el.hide();
+           //new 
+           this.dir_dropdown_lbl.el.hide();
+           this.dir_dropdown.el.hide();
+               // roo
+               this.title_lbl.el.hide();
+               this.title.el.hide();
+               
+               this.region_lbl.el.hide();
+               this.region.el.hide();
+               
+               this.parent_lbl.el.hide();
+               this.parent.el.hide();
+               
+               this.permname_lbl.el.hide();
+               this.permname.el.hide();
+               
+               this.modOrder_lbl.el.hide();
+               this.modOrder.el.hide();
+               
+               this.build_module_lbl.el.hide();
+               this.build_module.el.hide();
+               
+               this.gen_lbl.el.hide();
+               this.gen.el.hide();
+                       this.filetype_lbl.el.hide();
+                       this.filetype.el.hide();
+       }
+       public class Xcls_Box1 : Object
+       {
+               public Gtk.Box el;
+               private Xcls_PopoverFileDetails  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_Box1(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       this.el = new Gtk.Box( Gtk.Orientation.VERTICAL, 0 );
+
+                       // my vars (dec)
+
+                       // set gobject values
+                       this.el.homogeneous = false;
+                       this.el.margin_end = 4;
+                       this.el.margin_start = 4;
+                       this.el.hexpand = true;
+                       this.el.margin_bottom = 4;
+                       this.el.margin_top = 4;
+                       new Xcls_grid( _this );
+                       this.el.append ( _this.grid.el  );
+               }
+
+               // user defined functions
+       }
+       public class Xcls_grid : Object
+       {
+               public Gtk.Grid el;
+               private Xcls_PopoverFileDetails  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_grid(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.grid = this;
+                       this.el = new Gtk.Grid();
+
+                       // my vars (dec)
+
+                       // set gobject values
+                       this.el.margin_end = 4;
+                       this.el.margin_start = 4;
+                       this.el.hexpand = true;
+                       this.el.column_spacing = 4;
+                       this.el.row_spacing = 2;
+                       new Xcls_filetype_lbl( _this );
+                       this.el.attach( _this.filetype_lbl.el, 0, 0, 1, 1 );
+                       new Xcls_filetype( _this );
+                       this.el.attach( _this.filetype.el, 1, 0, 1, 1 );
+                       new Xcls_dir_dropdown_lbl( _this );
+                       this.el.attach( _this.dir_dropdown_lbl.el, 0, 1, 1, 1 );
+                       new Xcls_dir_dropdown( _this );
+                       this.el.attach( _this.dir_dropdown.el, 1, 1, 1, 1 );
+                       new Xcls_name_lbl( _this );
+                       this.el.attach( _this.name_lbl.el, 0, 2, 1, 1 );
+                       new Xcls_name( _this );
+                       this.el.attach( _this.name.el, 1, 2, 1, 1 );
+                       new Xcls_title_lbl( _this );
+                       this.el.attach( _this.title_lbl.el, 0, 3, 1, 1 );
+                       new Xcls_title( _this );
+                       this.el.attach( _this.title.el, 1, 3, 1, 1 );
+                       new Xcls_region_lbl( _this );
+                       this.el.attach( _this.region_lbl.el, 0, 4, 1, 1 );
+                       new Xcls_region( _this );
+                       this.el.attach( _this.region.el, 1, 4, 1, 1 );
+                       new Xcls_parent_lbl( _this );
+                       this.el.attach( _this.parent_lbl.el, 0, 5, 1, 1 );
+                       new Xcls_parent( _this );
+                       this.el.attach( _this.parent.el, 1, 5, 1, 1 );
+                       new Xcls_permname_lbl( _this );
+                       this.el.attach( _this.permname_lbl.el, 0, 6, 1, 1 );
+                       new Xcls_permname( _this );
+                       this.el.attach( _this.permname.el, 1, 6, 1, 1 );
+                       new Xcls_modOrder_lbl( _this );
+                       this.el.attach( _this.modOrder_lbl.el, 0, 7, 1, 1 );
+                       new Xcls_modOrder( _this );
+                       this.el.attach( _this.modOrder.el, 1, 7, 1, 1 );
+                       new Xcls_build_module_lbl( _this );
+                       this.el.attach( _this.build_module_lbl.el, 0, 8, 1, 1 );
+                       new Xcls_build_module( _this );
+                       this.el.attach( _this.build_module.el, 1, 8, 1, 1 );
+                       new Xcls_path_lbl( _this );
+                       this.el.attach( _this.path_lbl.el, 0, 9, 1, 1 );
+                       new Xcls_path( _this );
+                       this.el.attach( _this.path.el, 1, 9, 1, 1 );
+                       new Xcls_gen_lbl( _this );
+                       this.el.attach( _this.gen_lbl.el, 0, 10, 1, 1 );
+                       new Xcls_gen( _this );
+                       this.el.attach( _this.gen.el, 1, 10, 1, 1 );
+               }
+
+               // user defined functions
+               public void xhideRow (int row) 
+               {
+                       var el = _this.grid.el.get_child_at(0,row);
+               
+                       el.hide();
+                       el = _this.grid.el.get_child_at(1,row);
+                       el.hide();
+               
+               }
+               public void xshowAllRows () {
+                       for (var i = 2; i < 10;i++) {
+                               var el = _this.grid.el.get_child_at(0,i);
+                               el.show();
+                               el = _this.grid.el.get_child_at(1,i);
+                               el.show();
+                   }
+               }
+       }
+       public class Xcls_filetype_lbl : Object
+       {
+               public Gtk.Label el;
+               private Xcls_PopoverFileDetails  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_filetype_lbl(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.filetype_lbl = this;
+                       this.el = new Gtk.Label( "File type" );
+
+                       // my vars (dec)
+
+                       // set gobject values
+                       this.el.justify = Gtk.Justification.RIGHT;
+                       this.el.xalign = 0.900000f;
+               }
+
+               // user defined functions
+       }
+
+       public class Xcls_filetype : Object
+       {
+               public Gtk.DropDown el;
+               private Xcls_PopoverFileDetails  _this;
+
+
+                       // my vars (def)
+               public bool in_showhide;
+
+               // ctor
+               public Xcls_filetype(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.filetype = this;
+                       new Xcls_filetype_model( _this );
+                       this.el = new Gtk.DropDown( _this.filetype_model.el, null );
+
+                       // my vars (dec)
+                       this.in_showhide = false;
+
+                       // set gobject values
+                       this.el.hexpand = true;
+
+                       //listeners
+                       this.el.notify["selected"].connect( () => {
+                       
+                               _this.onFileTypeChange();
+                       
+                        });
+               }
+
+               // user defined functions
+               public string getValue () {
+                       
+                       if (!_this.is_new) {
+                               return _this.file.xtype != "Plainfile" ? "bjs" :  _this.file.file_ext;
+                       }
+                       
+                       if (this.el.selected == Gtk.INVALID_LIST_POSITION) {
+                               return "";
+                       }
+                       
+                       return _this.filetype_model.el.get_string(this.el.selected).split(" ")[0];
+               }
+               public void setValue (string cur) {
+                       var el  = _this.filetype_model.el;
+                       for(var i= 0; i < el.get_n_items();i++)  {
+                               if (el.get_string(i).has_prefix(cur)) {
+                                       this.el.selected = i;
+                                       break;
+                               }
+                       }
+               }
+       }
+       public class Xcls_filetype_model : Object
+       {
+               public Gtk.StringList el;
+               private Xcls_PopoverFileDetails  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_filetype_model(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.filetype_model = this;
+                       this.el = new Gtk.StringList( {} );
+
+                       // my vars (dec)
+
+                       // set gobject values
+               }
+
+               // user defined functions
+               public void load () {
+                   var el = this.el;
+                   
+                   while (el.get_n_items() > 0) {
+                       el.remove(0);
+                       }
+                       el.append("bjs - User Interface File");
+                
+                   
+                switch(_this.project.xtype) {
+                       case "Roo":
+                               el.append("js - Javascript File");
+                               el.append("css - CSS File");
+                               el.append("php - Javascript File");
+                               
+                               break;
+               
+                       case "Gtk":             
+                                       
+                               el.append("vala - Vala File");
+                               el.append("css - CSS File");
+                               el.append("other - Other Type");
+                               break;
+                        default : 
+                               break;
+                       }
+               
+                       
+                       
+                       
+               }
+       }
+
+
+       public class Xcls_dir_dropdown_lbl : Object
+       {
+               public Gtk.Label el;
+               private Xcls_PopoverFileDetails  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_dir_dropdown_lbl(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.dir_dropdown_lbl = this;
+                       this.el = new Gtk.Label( "Create File in this 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_dropdown : Object
+       {
+               public Gtk.DropDown el;
+               private Xcls_PopoverFileDetails  _this;
+
+
+                       // my vars (def)
+               public int colspan;
+
+               // ctor
+               public Xcls_dir_dropdown(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.dir_dropdown = this;
+                       new Xcls_dir_model( _this );
+                       this.el = new Gtk.DropDown( _this.dir_model.el, null );
+
+                       // my vars (dec)
+                       this.colspan = 1;
+
+                       // set gobject values
+
+                       //listeners
+                       this.el.notify["selected"].connect( () => {
+                       
+                                _this.onDirChanged();
+                               
+                               
+                               
+                        });
+               }
+
+               // user defined functions
+               public string getValue () {
+                       return _this.dir_model.el.get_string(this.el.selected);
+               }
+               public void setValue (string cur) {
+                       var el  = _this.dir_model.el;
+                       for(var i= 0; i < el.get_n_items();i++)  {
+                               if (el.get_string(i) == cur) {
+                                       this.el.selected = i;
+                                       break;
+                               }
+                       }
+               }
+       }
+       public class Xcls_dir_model : Object
+       {
+               public Gtk.StringList el;
+               private Xcls_PopoverFileDetails  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_dir_model(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.dir_model = this;
+                       this.el = new Gtk.StringList( {} );
+
+                       // my vars (dec)
 
-                // set gobject values
-            }
+                       // set gobject values
+               }
 
-            // user defined functions
-        }
+               // user defined functions
+       }
 
 
-        public class Xcls_name_lbl : Object
-        {
-            public Gtk.Label el;
-            private Xcls_PopoverFileDetails  _this;
+       public class Xcls_name_lbl : Object
+       {
+               public Gtk.Label el;
+               private Xcls_PopoverFileDetails  _this;
 
 
-                // my vars (def)
+                       // my vars (def)
 
-            // ctor
-            public Xcls_name_lbl(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.name_lbl = this;
-                this.el = new Gtk.Label( "Component Name (File name without extension)" );
+               // ctor
+               public Xcls_name_lbl(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.name_lbl = this;
+                       this.el = new Gtk.Label( "Component Name (File name without extension)" );
 
-                // my vars (dec)
+                       // my vars (dec)
 
-                // set gobject values
-                this.el.justify = Gtk.Justification.RIGHT;
-                this.el.xalign = 0.900000f;
-            }
+                       // set gobject values
+                       this.el.justify = Gtk.Justification.RIGHT;
+                       this.el.xalign = 0.900000f;
+               }
 
-            // user defined functions
-        }
+               // user defined functions
+       }
 
-        public class Xcls_name : Object
-        {
-            public Gtk.Entry el;
-            private Xcls_PopoverFileDetails  _this;
+       public class Xcls_name : Object
+       {
+               public Gtk.Entry el;
+               private Xcls_PopoverFileDetails  _this;
 
 
-                // my vars (def)
+                       // my vars (def)
 
-            // ctor
-            public Xcls_name(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.name = this;
-                this.el = new Gtk.Entry();
+               // ctor
+               public Xcls_name(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.name = this;
+                       this.el = new Gtk.Entry();
 
-                // my vars (dec)
+                       // my vars (dec)
 
-                // set gobject values
-                this.el.hexpand = true;
-                this.el.visible = true;
-            }
+                       // set gobject values
+                       this.el.hexpand = true;
+                       this.el.visible = true;
+               }
 
-            // user defined functions
-        }
+               // user defined functions
+       }
 
-        public class Xcls_title_lbl : Object
-        {
-            public Gtk.Label el;
-            private Xcls_PopoverFileDetails  _this;
+       public class Xcls_title_lbl : Object
+       {
+               public Gtk.Label el;
+               private Xcls_PopoverFileDetails  _this;
 
 
-                // my vars (def)
+                       // my vars (def)
 
-            // ctor
-            public Xcls_title_lbl(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.title_lbl = this;
-                this.el = new Gtk.Label( "Title" );
+               // ctor
+               public Xcls_title_lbl(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.title_lbl = this;
+                       this.el = new Gtk.Label( "Title" );
 
-                // my vars (dec)
+                       // my vars (dec)
 
-                // set gobject values
-                this.el.justify = Gtk.Justification.RIGHT;
-                this.el.xalign = 0.900000f;
-                this.el.visible = true;
-            }
+                       // set gobject values
+                       this.el.justify = Gtk.Justification.RIGHT;
+                       this.el.xalign = 0.900000f;
+                       this.el.visible = true;
+               }
 
-            // user defined functions
-        }
+               // user defined functions
+       }
 
-        public class Xcls_title : Object
-        {
-            public Gtk.Entry el;
-            private Xcls_PopoverFileDetails  _this;
+       public class Xcls_title : Object
+       {
+               public Gtk.Entry el;
+               private Xcls_PopoverFileDetails  _this;
 
 
-                // my vars (def)
+                       // my vars (def)
 
-            // ctor
-            public Xcls_title(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.title = this;
-                this.el = new Gtk.Entry();
+               // ctor
+               public Xcls_title(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.title = this;
+                       this.el = new Gtk.Entry();
 
-                // my vars (dec)
+                       // my vars (dec)
 
-                // set gobject values
-                this.el.hexpand = true;
-                this.el.visible = true;
-            }
+                       // set gobject values
+                       this.el.hexpand = true;
+                       this.el.visible = true;
+               }
 
-            // user defined functions
-        }
+               // user defined functions
+       }
 
-        public class Xcls_region_lbl : Object
-        {
-            public Gtk.Label el;
-            private Xcls_PopoverFileDetails  _this;
+       public class Xcls_region_lbl : Object
+       {
+               public Gtk.Label el;
+               private Xcls_PopoverFileDetails  _this;
 
 
-                // my vars (def)
+                       // my vars (def)
 
-            // ctor
-            public Xcls_region_lbl(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.region_lbl = this;
-                this.el = new Gtk.Label( "Region" );
+               // ctor
+               public Xcls_region_lbl(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.region_lbl = this;
+                       this.el = new Gtk.Label( "Region" );
 
-                // my vars (dec)
+                       // my vars (dec)
 
-                // set gobject values
-                this.el.justify = Gtk.Justification.RIGHT;
-                this.el.xalign = 0.900000f;
-                this.el.tooltip_text = "center, north, south, east, west";
-                this.el.visible = true;
-            }
+                       // set gobject values
+                       this.el.justify = Gtk.Justification.RIGHT;
+                       this.el.xalign = 0.900000f;
+                       this.el.tooltip_text = "center, north, south, east, west";
+                       this.el.visible = true;
+               }
 
-            // user defined functions
-        }
+               // user defined functions
+       }
 
-        public class Xcls_region : Object
-        {
-            public Gtk.Entry el;
-            private Xcls_PopoverFileDetails  _this;
+       public class Xcls_region : Object
+       {
+               public Gtk.Entry el;
+               private Xcls_PopoverFileDetails  _this;
 
 
-                // my vars (def)
+                       // my vars (def)
 
-            // ctor
-            public Xcls_region(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.region = this;
-                this.el = new Gtk.Entry();
+               // ctor
+               public Xcls_region(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.region = this;
+                       this.el = new Gtk.Entry();
 
-                // my vars (dec)
+                       // my vars (dec)
 
-                // set gobject values
-                this.el.hexpand = true;
-                this.el.visible = true;
-            }
+                       // set gobject values
+                       this.el.hexpand = true;
+                       this.el.visible = true;
+               }
 
-            // user defined functions
-        }
+               // user defined functions
+       }
 
-        public class Xcls_parent_lbl : Object
-        {
-            public Gtk.Label el;
-            private Xcls_PopoverFileDetails  _this;
+       public class Xcls_parent_lbl : Object
+       {
+               public Gtk.Label el;
+               private Xcls_PopoverFileDetails  _this;
 
 
-                // my vars (def)
+                       // my vars (def)
 
-            // ctor
-            public Xcls_parent_lbl(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.parent_lbl = this;
-                this.el = new Gtk.Label( "Parent Name" );
+               // ctor
+               public Xcls_parent_lbl(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.parent_lbl = this;
+                       this.el = new Gtk.Label( "Parent Name" );
 
-                // my vars (dec)
+                       // my vars (dec)
 
-                // set gobject values
-                this.el.justify = Gtk.Justification.RIGHT;
-                this.el.xalign = 0.900000f;
-                this.el.visible = true;
-            }
+                       // set gobject values
+                       this.el.justify = Gtk.Justification.RIGHT;
+                       this.el.xalign = 0.900000f;
+                       this.el.visible = true;
+               }
 
-            // user defined functions
-        }
+               // user defined functions
+       }
 
-        public class Xcls_parent : Object
-        {
-            public Gtk.Entry el;
-            private Xcls_PopoverFileDetails  _this;
+       public class Xcls_parent : Object
+       {
+               public Gtk.Entry el;
+               private Xcls_PopoverFileDetails  _this;
 
 
-                // my vars (def)
+                       // my vars (def)
 
-            // ctor
-            public Xcls_parent(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.parent = this;
-                this.el = new Gtk.Entry();
+               // ctor
+               public Xcls_parent(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.parent = this;
+                       this.el = new Gtk.Entry();
 
-                // my vars (dec)
+                       // my vars (dec)
 
-                // set gobject values
-                this.el.visible = true;
-            }
+                       // set gobject values
+                       this.el.visible = true;
+               }
 
-            // user defined functions
-        }
+               // user defined functions
+       }
 
-        public class Xcls_permname_lbl : Object
-        {
-            public Gtk.Label el;
-            private Xcls_PopoverFileDetails  _this;
+       public class Xcls_permname_lbl : Object
+       {
+               public Gtk.Label el;
+               private Xcls_PopoverFileDetails  _this;
 
 
-                // my vars (def)
+                       // my vars (def)
 
-            // ctor
-            public Xcls_permname_lbl(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.permname_lbl = this;
-                this.el = new Gtk.Label( "Permission Name" );
+               // ctor
+               public Xcls_permname_lbl(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.permname_lbl = this;
+                       this.el = new Gtk.Label( "Permission Name" );
 
-                // my vars (dec)
+                       // my vars (dec)
 
-                // set gobject values
-                this.el.justify = Gtk.Justification.RIGHT;
-                this.el.xalign = 0.900000f;
-                this.el.visible = true;
-            }
+                       // set gobject values
+                       this.el.justify = Gtk.Justification.RIGHT;
+                       this.el.xalign = 0.900000f;
+                       this.el.visible = true;
+               }
 
-            // user defined functions
-        }
+               // user defined functions
+       }
 
-        public class Xcls_permname : Object
-        {
-            public Gtk.Entry el;
-            private Xcls_PopoverFileDetails  _this;
+       public class Xcls_permname : Object
+       {
+               public Gtk.Entry el;
+               private Xcls_PopoverFileDetails  _this;
 
 
-                // my vars (def)
+                       // my vars (def)
 
-            // ctor
-            public Xcls_permname(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.permname = this;
-                this.el = new Gtk.Entry();
+               // ctor
+               public Xcls_permname(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.permname = this;
+                       this.el = new Gtk.Entry();
 
-                // my vars (dec)
+                       // my vars (dec)
 
-                // set gobject values
-                this.el.visible = true;
-            }
+                       // set gobject values
+                       this.el.visible = true;
+               }
 
-            // user defined functions
-        }
+               // user defined functions
+       }
 
-        public class Xcls_modOrder_lbl : Object
-        {
-            public Gtk.Label el;
-            private Xcls_PopoverFileDetails  _this;
+       public class Xcls_modOrder_lbl : Object
+       {
+               public Gtk.Label el;
+               private Xcls_PopoverFileDetails  _this;
 
 
-                // my vars (def)
+                       // my vars (def)
 
-            // ctor
-            public Xcls_modOrder_lbl(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.modOrder_lbl = this;
-                this.el = new Gtk.Label( "Order (for tabs)" );
+               // ctor
+               public Xcls_modOrder_lbl(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.modOrder_lbl = this;
+                       this.el = new Gtk.Label( "Order (for tabs)" );
 
-                // my vars (dec)
+                       // my vars (dec)
 
-                // set gobject values
-                this.el.justify = Gtk.Justification.RIGHT;
-                this.el.xalign = 0.900000f;
-                this.el.visible = true;
-            }
+                       // set gobject values
+                       this.el.justify = Gtk.Justification.RIGHT;
+                       this.el.xalign = 0.900000f;
+                       this.el.visible = true;
+               }
 
-            // user defined functions
-        }
+               // user defined functions
+       }
 
-        public class Xcls_modOrder : Object
-        {
-            public Gtk.Entry el;
-            private Xcls_PopoverFileDetails  _this;
+       public class Xcls_modOrder : Object
+       {
+               public Gtk.Entry el;
+               private Xcls_PopoverFileDetails  _this;
 
 
-                // my vars (def)
+                       // my vars (def)
 
-            // ctor
-            public Xcls_modOrder(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.modOrder = this;
-                this.el = new Gtk.Entry();
+               // ctor
+               public Xcls_modOrder(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.modOrder = this;
+                       this.el = new Gtk.Entry();
 
-                // my vars (dec)
+                       // my vars (dec)
 
-                // set gobject values
-                this.el.visible = true;
-            }
-
-            // user defined functions
-        }
-
-        public class Xcls_build_module_lbl : Object
-        {
-            public Gtk.Label el;
-            private Xcls_PopoverFileDetails  _this;
-
-
-                // my vars (def)
-
-            // ctor
-            public Xcls_build_module_lbl(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.build_module_lbl = this;
-                this.el = new Gtk.Label( "Module to build" );
-
-                // 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_build_module : Object
-        {
-            public Gtk.DropDown el;
-            private Xcls_PopoverFileDetails  _this;
-
-
-                // my vars (def)
-
-            // ctor
-            public Xcls_build_module(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.build_module = this;
-                new Xcls_build_module_model( _this );
-                this.el = new Gtk.DropDown( _this.build_module_model.el, null );
-
-                // my vars (dec)
-
-                // set gobject values
-            }
-
-            // user defined functions
-            public string getValue () {
-               if (this.el.selected < 0) {
-                       return "";
-               }
-               
-               return _this.build_module_model.el.get_string(this.el.selected);
-            }
-            public void setValue (string str) {
-               var m = _this.build_module_model.el;
-               for(var i = 0; i < m.get_n_items(); i++) {
-                       if (m.get_string(i) == str) {
-                               this.el.selected = i;
-                               return;
-                       }
-               }
-                       
-            }
-        }
-        public class Xcls_build_module_model : Object
-        {
-            public Gtk.StringList el;
-            private Xcls_PopoverFileDetails  _this;
-
-
-                // my vars (def)
-
-            // ctor
-            public Xcls_build_module_model(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.build_module_model = this;
-                this.el = new Gtk.StringList( {} );
-
-                // my vars (dec)
-
-                // set gobject values
-            }
-
-            // user defined functions
-            public void load (Gee.HashMap<string,Project.GtkValaSettings>? compilegroups)
-            {
-               
-               _this.build_module.el.hide();
-                       _this.build_module_lbl.el.hide();
-               var el = _this.build_module_model.el;
-                while (el.get_n_items() > 0) {
-                               el.remove(0);
-               }
-               
-               if (compilegroups == null) {
-                       return;
-               }
-               foreach(var k in compilegroups.keys) {
-                       this.el.append(k);
-               }
-               if (compilegroups.keys.size > 0) {
-                       _this.build_module.el.selected = 0;
-                       _this.build_module.el.show();
-                       _this.build_module_lbl.el.show();
-               } else {
-                       
-               }
-               
-            }
-        }
-
-
-        public class Xcls_path_lbl : Object
-        {
-            public Gtk.Label el;
-            private Xcls_PopoverFileDetails  _this;
-
-
-                // my vars (def)
-            public int colspan;
-
-            // ctor
-            public Xcls_path_lbl(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.path_lbl = this;
-                this.el = new Gtk.Label( "Full path" );
-
-                // my vars (dec)
-                this.colspan = 1;
-
-                // set gobject values
-                this.el.justify = Gtk.Justification.RIGHT;
-                this.el.xalign = 0.900000f;
-                this.el.visible = true;
-            }
-
-            // user defined functions
-        }
-
-        public class Xcls_path : Object
-        {
-            public Gtk.Entry el;
-            private Xcls_PopoverFileDetails  _this;
-
-
-                // my vars (def)
-            public int colspan;
-
-            // ctor
-            public Xcls_path(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.path = this;
-                this.el = new Gtk.Entry();
-
-                // my vars (dec)
-                this.colspan = 1;
-
-                // set gobject values
-                this.el.editable = false;
-                this.el.hexpand = true;
-                this.el.visible = true;
-            }
-
-            // user defined functions
-        }
-
-        public class Xcls_gen_lbl : Object
-        {
-            public Gtk.Label el;
-            private Xcls_PopoverFileDetails  _this;
-
-
-                // my vars (def)
-            public int colspan;
-
-            // ctor
-            public Xcls_gen_lbl(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.gen_lbl = this;
-                this.el = new Gtk.Label( "Generate as Extended (no working)" );
-
-                // my vars (dec)
-                this.colspan = 1;
-
-                // set gobject values
-                this.el.justify = Gtk.Justification.RIGHT;
-                this.el.xalign = 0.900000f;
-                this.el.visible = true;
-            }
-
-            // user defined functions
-        }
+                       // set gobject values
+                       this.el.visible = true;
+               }
+
+               // user defined functions
+       }
+
+       public class Xcls_build_module_lbl : Object
+       {
+               public Gtk.Label el;
+               private Xcls_PopoverFileDetails  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_build_module_lbl(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.build_module_lbl = this;
+                       this.el = new Gtk.Label( "Module to build" );
+
+                       // 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_build_module : Object
+       {
+               public Gtk.DropDown el;
+               private Xcls_PopoverFileDetails  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_build_module(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.build_module = this;
+                       new Xcls_build_module_model( _this );
+                       this.el = new Gtk.DropDown( _this.build_module_model.el, null );
+
+                       // my vars (dec)
+
+                       // set gobject values
+               }
+
+               // user defined functions
+               public string getValue () {
+                       if (this.el.selected < 0) {
+                               return "";
+                       }
+                       
+                       return _this.build_module_model.el.get_string(this.el.selected);
+               }
+               public void setValue (string str) {
+                       var m = _this.build_module_model.el;
+                       for(var i = 0; i < m.get_n_items(); i++) {
+                               if (m.get_string(i) == str) {
+                                       this.el.selected = i;
+                                       return;
+                               }
+                       }
+                               
+               }
+       }
+       public class Xcls_build_module_model : Object
+       {
+               public Gtk.StringList el;
+               private Xcls_PopoverFileDetails  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_build_module_model(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.build_module_model = this;
+                       this.el = new Gtk.StringList( {} );
+
+                       // my vars (dec)
+
+                       // set gobject values
+               }
+
+               // user defined functions
+               public void load (Gee.HashMap<string,Project.GtkValaSettings>? compilegroups)
+               {
+                       
+                       _this.build_module.el.hide();
+                               _this.build_module_lbl.el.hide();
+                       var el = _this.build_module_model.el;
+                        while (el.get_n_items() > 0) {
+                                       el.remove(0);
+                       }
+                       
+                       if (compilegroups == null) {
+                               return;
+                       }
+                       foreach(var k in compilegroups.keys) {
+                               this.el.append(k);
+                       }
+                       if (compilegroups.keys.size > 0) {
+                               _this.build_module.el.selected = 0;
+                               _this.build_module.el.show();
+                               _this.build_module_lbl.el.show();
+                       } else {
+                               
+                       }
+                       
+               }
+       }
+
+
+       public class Xcls_path_lbl : Object
+       {
+               public Gtk.Label el;
+               private Xcls_PopoverFileDetails  _this;
+
+
+                       // my vars (def)
+               public int colspan;
+
+               // ctor
+               public Xcls_path_lbl(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.path_lbl = this;
+                       this.el = new Gtk.Label( "Full path" );
+
+                       // my vars (dec)
+                       this.colspan = 1;
+
+                       // set gobject values
+                       this.el.justify = Gtk.Justification.RIGHT;
+                       this.el.xalign = 0.900000f;
+                       this.el.visible = true;
+               }
+
+               // user defined functions
+       }
+
+       public class Xcls_path : Object
+       {
+               public Gtk.Entry el;
+               private Xcls_PopoverFileDetails  _this;
+
+
+                       // my vars (def)
+               public int colspan;
+
+               // ctor
+               public Xcls_path(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.path = this;
+                       this.el = new Gtk.Entry();
+
+                       // my vars (dec)
+                       this.colspan = 1;
+
+                       // set gobject values
+                       this.el.editable = false;
+                       this.el.hexpand = true;
+                       this.el.visible = true;
+               }
+
+               // user defined functions
+       }
+
+       public class Xcls_gen_lbl : Object
+       {
+               public Gtk.Label el;
+               private Xcls_PopoverFileDetails  _this;
+
+
+                       // my vars (def)
+               public int colspan;
+
+               // ctor
+               public Xcls_gen_lbl(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.gen_lbl = this;
+                       this.el = new Gtk.Label( "Generate as Extended (no working)" );
+
+                       // my vars (dec)
+                       this.colspan = 1;
+
+                       // set gobject values
+                       this.el.justify = Gtk.Justification.RIGHT;
+                       this.el.xalign = 0.900000f;
+                       this.el.visible = true;
+               }
+
+               // user defined functions
+       }
 
-        public class Xcls_gen : Object
-        {
-            public Gtk.CheckButton el;
-            private Xcls_PopoverFileDetails  _this;
+       public class Xcls_gen : Object
+       {
+               public Gtk.CheckButton el;
+               private Xcls_PopoverFileDetails  _this;
 
 
-                // my vars (def)
+                       // my vars (def)
 
-            // ctor
-            public Xcls_gen(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.gen = this;
-                this.el = new Gtk.CheckButton();
+               // ctor
+               public Xcls_gen(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.gen = this;
+                       this.el = new Gtk.CheckButton();
 
-                // my vars (dec)
+                       // my vars (dec)
 
-                // set gobject values
-                this.el.label = "Wrapped";
+                       // set gobject values
+                       this.el.label = "Wrapped";
 
-                //listeners
-                this.el.toggled.connect( ( ) => {
-                         
-                       this.el.label = this.el.active ? "Extended" : "Wrapped";
-                
-                });
-            }
-
-            // user defined functions
-        }
-
-
-
-        public class Xcls_HeaderBar29 : Object
-        {
-            public Gtk.HeaderBar el;
-            private Xcls_PopoverFileDetails  _this;
-
-
-                // my vars (def)
-
-            // ctor
-            public Xcls_HeaderBar29(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                this.el = new Gtk.HeaderBar();
-
-                // my vars (dec)
-
-                // set gobject values
-                this.el.show_title_buttons = false;
-                var child_1 = new Xcls_Button30( _this );
-                child_1.ref();
-                this.el.pack_start ( child_1.el  );
-                new Xcls_save_btn( _this );
-                this.el.pack_end ( _this.save_btn.el  );
-            }
-
-            // user defined functions
-        }
-        public class Xcls_Button30 : Object
-        {
-            public Gtk.Button el;
-            private Xcls_PopoverFileDetails  _this;
-
-
-                // my vars (def)
-
-            // ctor
-            public Xcls_Button30(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                this.el = new Gtk.Button();
-
-                // my vars (dec)
-
-                // set gobject values
-                this.el.label = "Cancel";
-
-                //listeners
-                this.el.clicked.connect( () => { 
-                       _this.done = true;
-                    _this.el.hide(); 
-                });
-            }
-
-            // user defined functions
-        }
-
-        public class Xcls_save_btn : Object
-        {
-            public Gtk.Button el;
-            private Xcls_PopoverFileDetails  _this;
-
-
-                // my vars (def)
-            public bool always_show_image;
-
-            // ctor
-            public Xcls_save_btn(Xcls_PopoverFileDetails _owner )
-            {
-                _this = _owner;
-                _this.save_btn = this;
-                this.el = new Gtk.Button();
-
-                // my vars (dec)
-                this.always_show_image = true;
-
-                // set gobject values
-                this.el.icon_name = "document-save";
-                this.el.hexpand = false;
-                this.el.css_classes = { "suggested-action" };
-                this.el.label = "Save";
-
-                //listeners
-                this.el.clicked.connect( ( ) =>  { 
-                
-                 
-                
-                
-                       if (_this.name.el.get_text().length  < 1) {
-                           Xcls_StandardErrorDialog.singleton().show(
-                               _this.mainwindow.el,
-                               "You have to set a Component name "
-                           );
-                            
-                           return;
-                       }
-                        
-                
-                       if (!_this.is_new) {
-                         //  try {
-                         
-                               var old_target = _this.file.build_module;
-                         _this.updateFileFromEntry();
-                           if (_this.project.xtype == "Gtk" && old_target != _this.file.build_module) {
-                               var gp = (JsRender.Gtk)_this.file;
-                               gp.updateCompileGroup(old_target,  _this.file.build_module);
-                       }
-                
-                             _this.done = true;
-                           _this.file.save();
-                           _this.el.hide();
-                           return;
-                       }  
-                       
-                       // ---------------- NEW FILES...
-                       var ftype = _this.filetype.getValue();
-                
-                       if (ftype == "") {
-                               // should not happen...
-                               // so we are jut going to return without 
-                               Xcls_StandardErrorDialog.singleton().show(
-                               _this.mainwindow.el,
-                               "You must select a file type. "
-                           );
-                           return;
-                                
-                       }
-                       
-                       
-                       var fn = _this.name.el.get_text();
-                       
-                        
-                       var ext = ftype;
-                       //var dir = _this.project.path; 
-                        
-                        var dir = _this.dir_dropdown.getValue();
-                       
-                        
-                       
-                        
-                       var targetfile  = _this.project.path;
-                       if (dir != "") {
-                               targetfile += dir;
-                       }
-                       targetfile += "/" + fn;
-                       
-                       // strip the file type off the end..
-                       
-                       try {
-                               var rx = new GLib.Regex("\\." + ext + "$",GLib.RegexCompileFlags.CASELESS);
-                               fn = rx.replace(targetfile, targetfile.length, 0, ""); 
-                         } catch (RegexError e) {} // ignore.
-                         
-                         targetfile += "." + ext;
-                         
-                         
-                       if (GLib.FileUtils.test(targetfile, GLib.FileTest.EXISTS)) {
-                           Xcls_StandardErrorDialog.singleton().show(
-                               _this.mainwindow.el,
-                               "That file already exists"
-                           ); 
-                           return;
-                       }
-                       JsRender.JsRender f;
-                   try {
-                          f =  JsRender.JsRender.factory(
-                                       ext == "bjs" ? _this.file.project.xtype : "PlainFile",  
-                                       _this.file.project, 
-                                       targetfile);
-                       } catch (JsRender.Error e) {
-                               Xcls_StandardErrorDialog.singleton().show(
-                               _this.mainwindow.el,
-                               "Error creating file"
-                           ); 
-                               return;
-                       }
-                       _this.file = f;
-                       
-                       
-                
-                       
-                       _this.updateFileFromEntry();
-                       _this.file.loaded = true;
-                       _this.file.save();
-                     _this.file.project.addFile(_this.file);
-                     var sel = _this.filetype.getValue();
-                        if (_this.file.project.xtype == "Gtk" && 
-                               _this.file.build_module.length > 0 &&
-                               ( sel == "bjs" || sel == "vala")) {
-                        
-                               var pr = (Project.Gtk) _this.file.project;
-                               if (pr.compilegroups.has_key(_this.file.build_module)) {
-                                       var cg = pr.compilegroups.get(_this.file.build_module);
-                                       if (!cg.sources.contains(_this.file.relpath)) {
-                                               cg.sources.add(_this.file.relpath);
-                                       }
-                               }
-                       
-                       }
-                        
-                 
-                       // what about .js ?
-                   _this.done = true;
-                       _this.el.hide();
-                
-                // hopefull this will work with bjs files..
-                       
-                       _this.success(_this.project, _this.file);
-                   
-                });
-            }
-
-            // user defined functions
-        }
-
-
-    }
+                       //listeners
+                       this.el.toggled.connect( ( ) => {
+                                 
+                               this.el.label = this.el.active ? "Extended" : "Wrapped";
+                       
+                       });
+               }
+
+               // user defined functions
+       }
+
+
+
+       public class Xcls_HeaderBar28 : Object
+       {
+               public Gtk.HeaderBar el;
+               private Xcls_PopoverFileDetails  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_HeaderBar28(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       this.el = new Gtk.HeaderBar();
+
+                       // my vars (dec)
+
+                       // set gobject values
+                       this.el.show_title_buttons = false;
+                       var child_1 = new Xcls_Button29( _this );
+                       child_1.ref();
+                       this.el.pack_start ( child_1.el  );
+                       new Xcls_save_btn( _this );
+                       this.el.pack_end ( _this.save_btn.el  );
+               }
+
+               // user defined functions
+       }
+       public class Xcls_Button29 : Object
+       {
+               public Gtk.Button el;
+               private Xcls_PopoverFileDetails  _this;
+
+
+                       // my vars (def)
+
+               // ctor
+               public Xcls_Button29(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       this.el = new Gtk.Button();
+
+                       // my vars (dec)
+
+                       // set gobject values
+                       this.el.label = "Cancel";
+
+                       //listeners
+                       this.el.clicked.connect( () => { 
+                               _this.done = true;
+                           _this.el.hide(); 
+                       });
+               }
+
+               // user defined functions
+       }
+
+       public class Xcls_save_btn : Object
+       {
+               public Gtk.Button el;
+               private Xcls_PopoverFileDetails  _this;
+
+
+                       // my vars (def)
+               public bool always_show_image;
+
+               // ctor
+               public Xcls_save_btn(Xcls_PopoverFileDetails _owner )
+               {
+                       _this = _owner;
+                       _this.save_btn = this;
+                       this.el = new Gtk.Button();
+
+                       // my vars (dec)
+                       this.always_show_image = true;
+
+                       // set gobject values
+                       this.el.icon_name = "document-save";
+                       this.el.hexpand = false;
+                       this.el.css_classes = { "suggested-action" };
+                       this.el.label = "Save";
+
+                       //listeners
+                       this.el.clicked.connect( ( ) =>  { 
+                       
+                        
+                       
+                       
+                               if (_this.name.el.get_text().length  < 1) {
+                                  var msg = new Adw.MessageDialog(
+                                       _this.mainwindow.el,
+                                       "Opps",
+                                       "You have to set a Component name "
+                                   );
+                                   msg.modal = true;
+                                   msg.present();
+                                    
+                                   return;
+                               }
+                                
+                       
+                               if (!_this.is_new) {
+                                 //  try {
+                                 
+                                       var old_target = _this.file.build_module;
+                                _this.updateFileFromEntry();
+                                   if (_this.project.xtype == "Gtk" && old_target != _this.file.build_module) {
+                                       var gp = (JsRender.Gtk)_this.file;
+                                       gp.updateCompileGroup(old_target,  _this.file.build_module);
+                               }
+                       
+                                     _this.done = true;
+                                   _this.file.save();
+                                   _this.el.hide();
+                                   return;
+                               }  
+                               
+                               // ---------------- NEW FILES...
+                               var ftype = _this.filetype.getValue();
+                       
+                               if (ftype == "") {
+                                       // should not happen...
+                                       // so we are jut going to return without 
+                                       Xcls_StandardErrorDialog.singleton().show(
+                                       _this.mainwindow.el,
+                                       "You must select a file type. "
+                                   );
+                                   return;
+                                        
+                               }
+                               
+                               
+                               var fn = _this.name.el.get_text();
+                               
+                                
+                               var ext = ftype;
+                               //var dir = _this.project.path; 
+                                
+                                var dir = _this.dir_dropdown.getValue();
+                               
+                                
+                               
+                                
+                               var targetfile  = _this.project.path;
+                               if (dir != "") {
+                                       targetfile += dir;
+                               }
+                               targetfile += "/" + fn;
+                               
+                               // strip the file type off the end..
+                               
+                               try {
+                                       var rx = new GLib.Regex("\\." + ext + "$",GLib.RegexCompileFlags.CASELESS);
+                                       fn = rx.replace(targetfile, targetfile.length, 0, ""); 
+                                 } catch (RegexError e) {} // ignore.
+                                 
+                                 targetfile += "." + ext;
+                                 
+                                 
+                               if (GLib.FileUtils.test(targetfile, GLib.FileTest.EXISTS)) {
+                                   Xcls_StandardErrorDialog.singleton().show(
+                                       _this.mainwindow.el,
+                                       "That file already exists"
+                                   ); 
+                                   return;
+                               }
+                               JsRender.JsRender f;
+                          try {
+                                  f =  JsRender.JsRender.factory(
+                                               ext == "bjs" ? _this.file.project.xtype : "PlainFile",  
+                                               _this.file.project, 
+                                               targetfile);
+                               } catch (JsRender.Error e) {
+                                       Xcls_StandardErrorDialog.singleton().show(
+                                       _this.mainwindow.el,
+                                       "Error creating file"
+                                   ); 
+                                       return;
+                               }
+                               _this.file = f;
+                               
+                               
+                       
+                               
+                               _this.updateFileFromEntry();
+                               _this.file.loaded = true;
+                               _this.file.save();
+                            _this.file.project.addFile(_this.file);
+                            var sel = _this.filetype.getValue();
+                                if (_this.file.project.xtype == "Gtk" && 
+                                       _this.file.build_module.length > 0 &&
+                                       ( sel == "bjs" || sel == "vala")) {
+                                
+                                       var pr = (Project.Gtk) _this.file.project;
+                                       if (pr.compilegroups.has_key(_this.file.build_module)) {
+                                               var cg = pr.compilegroups.get(_this.file.build_module);
+                                               if (!cg.sources.contains(_this.file.relpath)) {
+                                                       cg.sources.add(_this.file.relpath);
+                                               }
+                                       }
+                               
+                               }
+                                
+                        
+                               // what about .js ?
+                          _this.done = true;
+                               _this.el.hide();
+                       
+                       // hopefull this will work with bjs files..
+                               
+                               _this.success(_this.project, _this.file);
+                          
+                       });
+               }
+
+               // user defined functions
+       }
+
+
+}
index 68f2a28..d05c7a1 100644 (file)
@@ -444,9 +444,11 @@ namespace Palete {
                        }
                        
                        foreach(var str in cls.can_drop_onto) {
-
                                ret.add(str);
                        }
+                       if (this.top_classes.contains(rval)) {
+                               ret.add("*top");
+                       }
                        //GLib.debug("getDropList for %s return[] %s", rval, string.joinv(", ", ret));
                        this.dropCache.set(rval,ret);
                        return ret;