Partial Fix #5782 - messing around with libgit2-glib
[gitlive] / Clones.vala
index 782b61c..d4c267b 100644 (file)
@@ -12,10 +12,27 @@ public class Clones : Object
         }
         return _Clones;
     }
-    public Xcls_Clones Clones;
+    public Xcls_spinner spinner;
+    public Xcls_toolbar toolbar;
+    public Xcls_scrolled scrolled;
     public Xcls_reposView reposView;
     public Xcls_reposStore reposStore;
-    public Xcls_ok_button ok_button;
+    public Xcls_tv_autocommit tv_autocommit;
+    public Xcls_cr_autocommit cr_autocommit;
+    public Xcls_tv_autopush tv_autopush;
+    public Xcls_cr_autopush cr_autopush;
+    public Xcls_tv_autobranch tv_autobranch;
+    public Xcls_cr_autobranch cr_autobranch;
+    public Xcls_tv_repo tv_repo;
+    public Xcls_cr_repo cr_repo;
+    public Xcls_tv_active_ticket tv_active_ticket;
+    public Xcls_cr_active_ticket cr_active_ticket;
+    public Xcls_tv_current_branch tv_current_branch;
+    public Xcls_cr_current_branch cr_current_branch;
+    public Xcls_tv_last_updated tv_last_updated;
+    public Xcls_cr_last_updated cr_last_updated;
+    public Xcls_tv_all_branches tv_all_branches;
+    public Xcls_cr_all_branches cr_all_branches;
 
         // my vars (def)
 
@@ -31,18 +48,12 @@ public class Clones : Object
         this.el.title = "Manage Clones";
         this.el.border_width = 3;
         this.el.default_height = 500;
-        this.el.default_width = 600;
+        this.el.default_width = 1024;
         this.el.deletable = true;
         this.el.modal = true;
-        var child_0 = new Xcls_Clones( _this );
+        var child_0 = new Xcls_Box2( _this );
         child_0.ref();
-        this.el.function(p (  child_0.el , e) {
-        p.el.get_content_area().pack_start(e.el,true,true,0)
-    }
- );
-        var child_1 = new Xcls_ok_button( _this );
-        child_1.ref();
-        this.el.add_action_widget (  child_1.el , 1  );
+        this.el.get_content_area().add (  child_0.el  );
 
         //listeners
         this.el.delete_event.connect( (self, event) => {
@@ -58,11 +69,51 @@ public class Clones : Object
     }
 
     // user defined functions
-    public void show () =>  {
-    
-        
-        this.el.set_deletable(false);
+    public void loadAndShow () {
+       this.el.set_deletable(true);
+        this.el.set_gravity(Gdk.Gravity.NORTH);
+        this.el.move((Gdk.Screen.width() / 2 ) - (int.min(1280,Gdk.Screen.width()) / 2) ,0);
+         this.el.set_keep_above(true);
+        this.el.set_default_size(
+                       int.min(1280,Gdk.Screen.width()),
+                       int.max(500,Gdk.Screen.height() - 200)
+       );
+       this.el.show_all();
+       
+       this.toolbar.el.hide();
+       this.scrolled.el.hide();
+       this.spinner.el.show();
+       this.spinner.el.start();        
+       
+       GitRepo.updateAllAsync("show_clones");
+       
+         
+     
+       
+       
+    }
+    public void show ()    {
+    this.el.set_deletable(true);
+        this.el.set_gravity(Gdk.Gravity.NORTH);
+        this.el.move((Gdk.Screen.width() / 2 ) - (int.max(1280,Gdk.Screen.width()) / 2) ,0);
+         this.el.set_keep_above(true);
+       this.el.set_default_size(
+                       int.max(1280,Gdk.Screen.width()),
+                       int.max(500,Gdk.Screen.height() - 100)
+       );
         this.el.show_all();
+       this.spinner.el.stop();
+       this.spinner.el.hide(); 
+       this.toolbar.el.show();
+       this.scrolled.el.show();        
+     
+        
+         
+    
+        this.reposStore.load();
+       
+        GLib.debug("show clones = run?");
+        this.el.run();
         // load clones..
     //     this.get('/reposStore').load();
         
@@ -79,282 +130,88 @@ public class Clones : Object
        // return this.get('bug').getValue();
         //this.success = c.success;
     }
-    public class Xcls_Clones : Object
-    {
-        public Gtk.VBox el;
-        private Clones  _this;
-
-
-            // my vars (def)
-
-        // ctor
-        public Xcls_Clones(Clones _owner )
-        {
-            _this = _owner;
-            _this.Clones = this;
-            this.el = new Gtk.VBox( true, 0 );
-
-            // my vars (dec)
-
-            // set gobject values
-            var child_0 = new Xcls_HBox3( _this );
-            child_0.ref();
-            this.el.pack_start (  child_0.el , false,true );
-            var child_1 = new Xcls_ScrolledWindow9( _this );
-            child_1.ref();
-        }
-
-        // user defined functions
-    }
-    public class Xcls_HBox3 : Object
+    public class Xcls_Box2 : Object
     {
-        public Gtk.HBox el;
+        public Gtk.Box el;
         private Clones  _this;
 
 
             // my vars (def)
 
         // ctor
-        public Xcls_HBox3(Clones _owner )
+        public Xcls_Box2(Clones _owner )
         {
             _this = _owner;
-            this.el = new Gtk.HBox( true, 0 );
+            this.el = new Gtk.Box( Gtk.Orientation.VERTICAL, 0 );
 
             // my vars (dec)
 
             // set gobject values
-            var child_0 = new Xcls_Button4( _this );
+            var child_0 = new Xcls_spinner( _this );
             child_0.ref();
             this.el.add (  child_0.el  );
-            var child_1 = new Xcls_Button5( _this );
+            var child_1 = new Xcls_toolbar( _this );
             child_1.ref();
-            this.el.add (  child_1.el  );
-            var child_2 = new Xcls_Button6( _this );
+            this.el.pack_start (  child_1.el , false,false,0 );
+            var child_2 = new Xcls_scrolled( _this );
             child_2.ref();
-            this.el.add (  child_2.el  );
-            var child_3 = new Xcls_Button7( _this );
-            child_3.ref();
-            this.el.add (  child_3.el  );
-            var child_4 = new Xcls_Button8( _this );
-            child_4.ref();
-            this.el.add (  child_4.el  );
+            this.el.pack_end (  child_2.el , true,true,0 );
         }
 
         // user defined functions
     }
-    public class Xcls_Button4 : Object
-    {
-        public Gtk.Button el;
-        private Clones  _this;
-
-
-            // my vars (def)
-
-        // ctor
-        public Xcls_Button4(Clones _owner )
-        {
-            _this = _owner;
-            this.el = new Gtk.Button();
-
-            // my vars (dec)
-
-            // set gobject values
-            this.el.label = "Remotes / Clones";
-
-            //listeners
-            this.el.clicked.connect( () => {
-            
-            /*    var rv = this.get('/reposView');
-                var rs = this.get('/reposStore');
-                if (rv.el.get_selection().count_selected_rows() != 1) {
-                    //nothing?
-                    // error condition.
-                    return;
-                }
-                var Remotes =     imports.Remotes.Remotes;
-                
-             
-                var ret = {};       
-                var s = rv.el.get_selection();
-                var path = '';
-                s.selected_foreach(function(model,p,iter) {
-                                                                
-                   path = model.get_value(iter, 6).value.get_string();
-                 
-                }); 
-            
-                var repo = false;
-                rs.repos.forEach(function(r) {
-                    if (r.repopath == path) {
-                        repo = r;
-                    
-                    }
-                
-                });
-                Remotes.repo = repo;
-                Remotes.el.set_transient_for(Clones.el);
-                Clones.el.set_title("Manage Clones - " + repo.repopath);
-                Remotes.show();
-                Clones.el.set_title("Manage Clones");
-            
-              */   
-                
-                
-                
-            
-                   
-                
-                
-            });
-        }
-
-        // user defined functions
-    }
-
-    public class Xcls_Button5 : Object
+    public class Xcls_spinner : Object
     {
-        public Gtk.Button el;
+        public Gtk.Spinner el;
         private Clones  _this;
 
 
             // my vars (def)
 
         // ctor
-        public Xcls_Button5(Clones _owner )
+        public Xcls_spinner(Clones _owner )
         {
             _this = _owner;
-            this.el = new Gtk.Button();
+            _this.spinner = this;
+            this.el = new Gtk.Spinner();
 
             // my vars (dec)
 
             // set gobject values
-            this.el.label = "Branches";
-
-            //listeners
-            this.el.clicked.connect( () => {
-            /*
-                var rv = this.get('/reposView');
-                var rs = this.get('/reposStore');
-                if (rv.el.get_selection().count_selected_rows() != 1) {
-                    //nothing?
-                    // error condition.
-                    return;
-                }
-                var Branches =     imports.Branches.Branches;
-                
-             
-                var ret = {};       
-                var s = rv.el.get_selection();
-                var path = '';
-                s.selected_foreach(function(model,p,iter) {
-                                                                
-                   path = model.get_value(iter, 6).value.get_string();
-                 
-                }); 
-            
-                var repo = false;
-                rs.repos.forEach(function(r) {
-                    if (r.repopath == path) {
-                        repo = r;
-                    
-                    }
-                
-                });
-                Branches.repo = repo;
-                Branches.el.set_transient_for(Clones.el);
-                Clones.el.set_title("Manage Clones - " + repo.repopath);
-                Branches.show();
-                Clones.el.set_title("Manage Clones");
-            
-                 
-                
-                
-                
-            
-                   
-             */   
-                
-            });
+            this.el.hexpand = true;
+            this.el.vexpand = true;
         }
 
         // user defined functions
     }
 
-    public class Xcls_Button6 : Object
+    public class Xcls_toolbar : Object
     {
-        public Gtk.Button el;
+        public Gtk.Box el;
         private Clones  _this;
 
 
             // my vars (def)
 
         // ctor
-        public Xcls_Button6(Clones _owner )
+        public Xcls_toolbar(Clones _owner )
         {
             _this = _owner;
-            this.el = new Gtk.Button();
+            _this.toolbar = this;
+            this.el = new Gtk.Box( Gtk.Orientation.HORIZONTAL, 0 );
 
             // my vars (dec)
 
             // set gobject values
-            this.el.label = "Merge";
-
-            //listeners
-            this.el.clicked.connect( () {
-            /*
-                var rv = this.get('/reposView');
-                var rs = this.get('/reposStore');
-                if (rv.el.get_selection().count_selected_rows() != 1) {
-                    //nothing?
-                    // error condition.
-                    return;
-                }
-                var Merger =     imports.Merger.Merger;
-                
-             
-                var ret = {};       
-                var s = rv.el.get_selection();
-                var path = '';
-                s.selected_foreach(function(model,p,iter) {
-                                                                
-                   path = model.get_value(iter, 6).value.get_string();
-                 
-                }); 
-            
-                var repo = false;
-                rs.repos.forEach(function(r) {
-                    if (r.repopath == path) {
-                        repo = r;
-                    
-                    }
-                
-                });
-                Merger.repo = repo;
-                Merger.el.set_transient_for(Clones.el);
-                Clones.el.set_title("Manage Clones - " + repo.repopath);
-                Merger.show();
-                Clones.el.set_title("Manage Clones");
-            
-                
-                
-            
-                
-            
-                
-                
-                
-                
-            
-             */      
-                
-                
-            });
+            this.el.homogeneous = true;
+            var child_0 = new Xcls_Button5( _this );
+            child_0.ref();
+            this.el.add (  child_0.el  );
         }
 
         // user defined functions
     }
-
-    public class Xcls_Button7 : Object
+    public class Xcls_Button5 : Object
     {
         public Gtk.Button el;
         private Clones  _this;
@@ -363,7 +220,7 @@ public class Clones : Object
             // my vars (def)
 
         // ctor
-        public Xcls_Button7(Clones _owner )
+        public Xcls_Button5(Clones _owner )
         {
             _this = _owner;
             this.el = new Gtk.Button();
@@ -371,48 +228,19 @@ public class Clones : Object
             // my vars (dec)
 
             // set gobject values
-            this.el.label = "Switch Branch";
-
-            //listeners
-            this.el.clicked.connect( () => {
-                
-                
-             
-                   
-                
-                
-            });
-        }
-
-        // user defined functions
-    }
+            this.el.label = "Add Repository";
 
-    public class Xcls_Button8 : Object
-    {
-        public Gtk.Button el;
-        private Clones  _this;
-
-
-            // my vars (def)
-
-        // ctor
-        public Xcls_Button8(Clones _owner )
-        {
-            _this = _owner;
-            this.el = new Gtk.Button();
-
-            // my vars (dec)
+            // init method
 
-            // set gobject values
-            this.el.label = "Pull";
+            {
+               this.el.get_style_context().add_class("suggested-action");
+            }
 
             //listeners
             this.el.clicked.connect( () => {
+                       Clone.singleton().show(this.el);
                 
                 
-             
-                   
-                
                 
             });
         }
@@ -421,7 +249,7 @@ public class Clones : Object
     }
 
 
-    public class Xcls_ScrolledWindow9 : Object
+    public class Xcls_scrolled : Object
     {
         public Gtk.ScrolledWindow el;
         private Clones  _this;
@@ -430,25 +258,27 @@ public class Clones : Object
             // my vars (def)
 
         // ctor
-        public Xcls_ScrolledWindow9(Clones _owner )
+        public Xcls_scrolled(Clones _owner )
         {
             _this = _owner;
+            _this.scrolled = this;
             this.el = new Gtk.ScrolledWindow( null, null );
 
             // my vars (dec)
 
             // set gobject values
+            this.el.expand = true;
+            this.el.hexpand = true;
+            this.el.shadow_type = Gtk.ShadowType.IN;
             var child_0 = new Xcls_reposView( _this );
             child_0.ref();
             this.el.add (  child_0.el  );
-            var child_1 = new Xcls_TreeView24( _this );
-            child_1.ref();
 
             // init method
 
-            () => {
-                XObject.prototype.init.call(this);
-                  this.el.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
+            {
+              
+               this.el.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);
             }
         }
 
@@ -472,52 +302,77 @@ public class Clones : Object
             // my vars (dec)
 
             // set gobject values
+            this.el.search_column = 0;
+            this.el.activate_on_single_click = true;
+            this.el.enable_grid_lines = Gtk.TreeViewGridLines.HORIZONTAL;
             var child_0 = new Xcls_reposStore( _this );
             child_0.ref();
             this.el.set_model (  child_0.el  );
-            var child_1 = new Xcls_TreeViewColumn12( _this );
+            var child_1 = new Xcls_tv_autocommit( _this );
             child_1.ref();
             this.el.append_column (  child_1.el  );
-            var child_2 = new Xcls_TreeViewColumn14( _this );
+            var child_2 = new Xcls_tv_autopush( _this );
             child_2.ref();
             this.el.append_column (  child_2.el  );
-            var child_3 = new Xcls_TreeViewColumn16( _this );
+            var child_3 = new Xcls_tv_autobranch( _this );
             child_3.ref();
             this.el.append_column (  child_3.el  );
-            var child_4 = new Xcls_TreeViewColumn18( _this );
+            var child_4 = new Xcls_tv_repo( _this );
             child_4.ref();
             this.el.append_column (  child_4.el  );
-            var child_5 = new Xcls_TreeViewColumn20( _this );
+            var child_5 = new Xcls_tv_active_ticket( _this );
             child_5.ref();
             this.el.append_column (  child_5.el  );
-            var child_6 = new Xcls_TreeViewColumn22( _this );
+            var child_6 = new Xcls_tv_current_branch( _this );
             child_6.ref();
             this.el.append_column (  child_6.el  );
+            var child_7 = new Xcls_tv_last_updated( _this );
+            child_7.ref();
+            this.el.append_column (  child_7.el  );
+            var child_8 = new Xcls_tv_all_branches( _this );
+            child_8.ref();
+            this.el.append_column (  child_8.el  );
 
             // init method
 
-            function() {
-                XObject.prototype.init.call(this);
-                    var description = new Pango.FontDescription.c_new();
-               description.set_size(10000);
-                 this.el.modify_font(description);
+            {
+                var selection = this.el.get_selection();
+                selection.set_mode( Gtk.SelectionMode.SINGLE);
             
-                 this.selection = this.el.get_selection();
-                  this.selection.set_mode( Gtk.SelectionMode.MULTIPLE);
-                var _this = this;
-                
-                
-              this.selection.signal['changed'].connect(function() {
-                 _this.listeners.cursor_changed.apply(
-                      _this, [ _this, '']
-                   );
-                         });
-              }
+            
+                var description = new Pango.FontDescription();
+                description.set_size(10000);
+                this.el.override_font(description);
+             
+            }
 
             //listeners
-            this.el.cursor_changed.connect( function (self) {
+            this.el.row_activated.connect( (path, col)  =>  {
+            
+               if (col.title == "Auto Commit" || col.title == "Auto Push" || col.title == "Auto Branch") {
+                       return;
+               }
+               
+               //
+               
+               Gtk.TreeIter iter;
+               _this.reposStore.el.get_iter(out iter, path);
+               GLib.Value val;
+                _this.reposStore.el.get_value(iter, 6, out val);
+                var git_working_dir = (string)val;
+                
+                var repo = GitRepo.singleton().get_sync(git_working_dir);
+                
+                Gdk.Rectangle rect;
+                _this.reposView.el.get_cell_area(path, col, out rect);
+                RepoStatusPopover.singleton().show(this.el, rect, repo);
+                
+                 
+                
+            });
+            this.el.cursor_changed.connect( ()  => {
               // SEE SELECTION.CHANGED
-              
+              /*
               
               return;
               
@@ -541,7 +396,7 @@ public class Clones : Object
                 // load the list in the right grid..
                  
                 return true;
-            
+            */
             });
         }
 
@@ -560,33 +415,101 @@ public class Clones : Object
         {
             _this = _owner;
             _this.reposStore = this;
-            this.el = new Gtk.ListStore( 0, null );
+            this.el = new Gtk.ListStore( 10,      typeof(string),  // 0 repo
+     typeof(string),  // 1 current branch
+     typeof(string),  // 2 all branch
+     typeof(string),  // 3 updated
+     typeof(bool),   // 4 auto commit
+     typeof(bool),   // 5 auto push
+     typeof(string),   // 6 repopath
+      typeof(string),   // 7 color highlighting?
+       typeof(bool),   // 8 auto branch,
+      typeof(string)   // 9 active Ticket
+       );
 
             // my vars (dec)
 
             // set gobject values
-
-            // init method
-
-            function() {
-                XObject.prototype.init.call(this);
-                this.el.set_column_types ( 8, [
-                   GObject.TYPE_STRING, // repo  
-                  GObject.TYPE_STRING, // current branch
-                  GObject.TYPE_STRING, // all branch      
-                  GObject.TYPE_STRING, // updated
-                   GObject.TYPE_BOOLEAN, // auto-commit
-                    GObject.TYPE_BOOLEAN, // auto-push
-                       GObject.TYPE_STRING, // repopath
-                       GObject.TYPE_STRING // color highighling 
-              ] );
-            }
         }
 
         // user defined functions
+        public void load ()
+        {
+            //this.insert(citer,iter,0);
+            print("getting list");
+            var tr = GitRepo.list();
+            
+            this.el.clear();
+            
+            // fixme .. sort by last updated ...
+            
+            
+            for(var i =0 ; i < tr.length; i++) {
+                   var repo = tr.index(i);
+                   // this is done before we display stuff...
+                   //repo.loadBranches();
+                   //repo.loadStatus();
+                   
+                   Gtk.TreeIter iter;
+                   this.el.append(out iter);
+             
+                //print(JSON.stringify(ret,null,4));
+                 //tr[i].getBranches();
+                 //tr[i].getStatus();
+                 //var hi;
+                 //try {
+                     //tr[i].debug=1;
+                 //     hi = tr[i].history('/', 1, 'branch', tr[i].currentBranch.name );
+        //             print(JSON.stringify(hi,null,4));
+                // } catch(e) { print(e);}
+                  
+                this.el.set_value(iter, 0,   repo.name );
+                this.el.set_value( iter, 1, repo.getCurrentBranch().name   );
+                this.el.set_value( iter, 2,  repo.branchesToString()   );
+        //        this.el.set_value(ret.iter, 2, '' + repo.branches.map(
+        //                        function(e) { return e.name; 
+        //                    }).join(', ') 
+         //        );
+        //        this.el.set_value(iter, 3, '' +  (!hi  ? '??' : hi[0].changed_raw));        
+                this.el.set_value(iter, 4, repo.is_autocommit() );                
+                this.el.set_value(iter, 5, repo.is_autopush() );                        
+                this.el.set_value(iter, 6,  repo.git_working_dir );  
+                // highlight color.
+                var cb = repo.getCurrentBranch();
+                //print(JSON.stringify(cb,null,4));
+                var col = "#ffffff";
+                
+                if (cb.lastrev != cb.remoterev) {
+                    col =  "#f2dede";
+                    this.el.set_value( iter, 1, repo.getCurrentBranch().name +"\n" +
+                       (repo.ahead_or_behind == "B" ? "Local is BEHIND remote" : "Local is AHEAD of remote")
+                    
+                       );
+                }
+                if (repo.has_local_changes) {
+                    col =  "#d9edf7";
+                    this.el.set_value( iter, 1, repo.getCurrentBranch().name +"\nHas uncommitted changes"   );
+                }
+                if  ((cb.lastrev != cb.remoterev) && (repo.has_local_changes)) {
+                    col =  "#fcf8e3";
+                    this.el.set_value( iter, 1, repo.getCurrentBranch().name +"\n" + 
+                    (repo.ahead_or_behind == "B" ? "Local is BEHIND remote" : "Local is AHEAD of remote") +
+                    "\nHas uncommitted changes"   );            
+                }
+                
+                this.el.set_value(iter, 7, col  );      
+                var ticket = repo.activeTicket;
+                
+                this.el.set_value(iter, 8, repo.is_auto_branch()  );      
+                this.el.set_value(iter, 9, ticket == null ? "" : ticket.id  );      
+                
+                
+            }     
+            this.el.set_sort_column_id (0, Gtk.SortType.ASCENDING);
+        }
     }
 
-    public class Xcls_TreeViewColumn12 : Object
+    public class Xcls_tv_autocommit : Object
     {
         public Gtk.TreeViewColumn el;
         private Clones  _this;
@@ -595,9 +518,10 @@ public class Clones : Object
             // my vars (def)
 
         // ctor
-        public Xcls_TreeViewColumn12(Clones _owner )
+        public Xcls_tv_autocommit(Clones _owner )
         {
             _this = _owner;
+            _this.tv_autocommit = this;
             this.el = new Gtk.TreeViewColumn();
 
             // my vars (dec)
@@ -605,23 +529,19 @@ public class Clones : Object
             // set gobject values
             this.el.title = "Auto Commit";
             this.el.min_width = 50;
-            var child_0 = new Xcls_CellRendererToggle13( _this );
+            var child_0 = new Xcls_cr_autocommit( _this );
             child_0.ref();
-            this.el.pack_start (  child_0.el  );
+            this.el.pack_start (  child_0.el , false );
 
             // init method
 
-            function() {
-                XObject.prototype.init.call(this);
-                this.el.add_attribute(this.items[0].el , 'active', 4 );
-                this.items[0].el.set_activatable(true);
-            
-            }
+            //    this.items[0].el.set_activatable(true);
+             this.el.add_attribute(_this.cr_autocommit.el , "active", 4 );
         }
 
         // user defined functions
     }
-    public class Xcls_CellRendererToggle13 : Object
+    public class Xcls_cr_autocommit : Object
     {
         public Gtk.CellRendererToggle el;
         private Clones  _this;
@@ -630,9 +550,10 @@ public class Clones : Object
             // my vars (def)
 
         // ctor
-        public Xcls_CellRendererToggle13(Clones _owner )
+        public Xcls_cr_autocommit(Clones _owner )
         {
             _this = _owner;
+            _this.cr_autocommit = this;
             this.el = new Gtk.CellRendererToggle();
 
             // my vars (dec)
@@ -641,22 +562,25 @@ public class Clones : Object
             this.el.mode = Gtk.CellRendererMode.ACTIVATABLE;
 
             //listeners
-            this.el.toggled.connect( function (self, path) {
-                var ret ={} ;
-                var store = this.get('/reposStore');
-                store.el.get_iter_from_string(ret, path);
-                                                                             
-                var value =   store.el.get_value(ret.iter,4).value.get_boolean();
-                                                                             
-                //print(JSON.stringify(value));
-                store.el.set_value(ret.iter,4, !value);
-                
-                 var path =  store.el.get_value(ret.iter, 6).value.get_string();
-                 var repo = imports.Scm.Repo.Repo.get(path);
-                 repo.autocommit(!value);
-                 
-                
-                
+            this.el.toggled.connect( (self, path)  => {
+              
+               Gtk.TreeIter iter;
+               _this.reposStore.el.get_iter_from_string(out iter, path);
+               
+               GLib.Value val;
+               GLib.Value rval;
+               _this.reposStore.el.get_value(iter, 4, out val);
+               _this.reposStore.el.get_value(iter, 6, out rval);
+               
+               var repopath = (string)rval;
+               var bval = (bool)val;
+               _this.reposStore.el.set_value(iter, 4, !bval);
+               GLib.debug("got repopath? %s", repopath);
+               
+               var repo = GitRepo.get_sync(repopath);
+               repo.set_autocommit(!bval);
+                
+              
             });
         }
 
@@ -664,7 +588,7 @@ public class Clones : Object
     }
 
 
-    public class Xcls_TreeViewColumn14 : Object
+    public class Xcls_tv_autopush : Object
     {
         public Gtk.TreeViewColumn el;
         private Clones  _this;
@@ -673,9 +597,10 @@ public class Clones : Object
             // my vars (def)
 
         // ctor
-        public Xcls_TreeViewColumn14(Clones _owner )
+        public Xcls_tv_autopush(Clones _owner )
         {
             _this = _owner;
+            _this.tv_autopush = this;
             this.el = new Gtk.TreeViewColumn();
 
             // my vars (dec)
@@ -683,22 +608,19 @@ public class Clones : Object
             // set gobject values
             this.el.title = "Auto Push";
             this.el.min_width = 50;
-            var child_0 = new Xcls_CellRendererToggle15( _this );
+            var child_0 = new Xcls_cr_autopush( _this );
             child_0.ref();
-            this.el.pack_start (  child_0.el  );
+            this.el.pack_start (  child_0.el , false );
 
             // init method
 
-            function() {
-                XObject.prototype.init.call(this);
-                this.el.add_attribute(this.items[0].el , 'active', 5 );
-                  this.items[0].el.set_activatable(true);
-            }
+            this.el.add_attribute(_this.cr_autopush.el , "active", 5 );
+            //      this.items[0].el.set_activatable(true);
         }
 
         // user defined functions
     }
-    public class Xcls_CellRendererToggle15 : Object
+    public class Xcls_cr_autopush : Object
     {
         public Gtk.CellRendererToggle el;
         private Clones  _this;
@@ -707,9 +629,10 @@ public class Clones : Object
             // my vars (def)
 
         // ctor
-        public Xcls_CellRendererToggle15(Clones _owner )
+        public Xcls_cr_autopush(Clones _owner )
         {
             _this = _owner;
+            _this.cr_autopush = this;
             this.el = new Gtk.CellRendererToggle();
 
             // my vars (dec)
@@ -718,19 +641,25 @@ public class Clones : Object
             this.el.mode = Gtk.CellRendererMode.ACTIVATABLE;
 
             //listeners
-            this.el.toggled.connect( function (self, path) {
-                var ret ={} ;
-                var store = this.get('/reposStore');
-                store.el.get_iter_from_string(ret, path);
-                                                                             
-                var value =   store.el.get_value(ret.iter,5).value.get_boolean();
-                                                                             
-                //print(JSON.stringify(value));
-                store.el.set_value(ret.iter,5, !value);
-                  var path =  store.el.get_value(ret.iter, 6).value.get_string();
-                 var repo = imports.Scm.Repo.Repo.get(path);
-                 repo.autopush(!value);
-                 
+            this.el.toggled.connect( (self, path)  => {
+              
+               Gtk.TreeIter iter;
+               _this.reposStore.el.get_iter_from_string(out iter, path);
+               
+               GLib.Value val;
+               GLib.Value rval;
+               _this.reposStore.el.get_value(iter, 5, out val);
+               _this.reposStore.el.get_value(iter, 6, out rval);
+               
+               var repopath = (string)rval;
+               var bval = (bool)val;
+               _this.reposStore.el.set_value(iter, 5, !bval);
+               var repo = GitRepo.get_sync(repopath);
+               repo.set_autopush(!bval);
+               
+               
+               
+              
             });
         }
 
@@ -738,7 +667,7 @@ public class Clones : Object
     }
 
 
-    public class Xcls_TreeViewColumn16 : Object
+    public class Xcls_tv_autobranch : Object
     {
         public Gtk.TreeViewColumn el;
         private Clones  _this;
@@ -747,56 +676,77 @@ public class Clones : Object
             // my vars (def)
 
         // ctor
-        public Xcls_TreeViewColumn16(Clones _owner )
+        public Xcls_tv_autobranch(Clones _owner )
         {
             _this = _owner;
+            _this.tv_autobranch = this;
             this.el = new Gtk.TreeViewColumn();
 
             // my vars (dec)
 
             // set gobject values
-            this.el.title = "Repo";
-            this.el.min_width = 200;
-            this.el.resizable = true;
-            var child_0 = new Xcls_CellRendererText17( _this );
+            this.el.title = "Auto Branch";
+            this.el.min_width = 50;
+            var child_0 = new Xcls_cr_autobranch( _this );
             child_0.ref();
-            this.el.pack_start (  child_0.el  );
+            this.el.pack_start (  child_0.el , false );
 
             // init method
 
-            function() {
-                XObject.prototype.init.call(this);
-                this.el.add_attribute(this.items[0].el , 'markup', 0 );
-            
-            }
+            this.el.add_attribute(_this.cr_autobranch.el , "active", 8 );
+            //      this.items[0].el.set_activatable(true);
         }
 
         // user defined functions
     }
-    public class Xcls_CellRendererText17 : Object
+    public class Xcls_cr_autobranch : Object
     {
-        public Gtk.CellRendererText el;
+        public Gtk.CellRendererToggle el;
         private Clones  _this;
 
 
             // my vars (def)
 
         // ctor
-        public Xcls_CellRendererText17(Clones _owner )
+        public Xcls_cr_autobranch(Clones _owner )
         {
             _this = _owner;
-            this.el = new Gtk.CellRendererText();
+            _this.cr_autobranch = this;
+            this.el = new Gtk.CellRendererToggle();
 
             // my vars (dec)
 
             // set gobject values
+            this.el.mode = Gtk.CellRendererMode.ACTIVATABLE;
+
+            //listeners
+            this.el.toggled.connect( (self, path)  => {
+              
+               Gtk.TreeIter iter;
+               _this.reposStore.el.get_iter_from_string(out iter, path);
+               
+               GLib.Value val;
+               GLib.Value rval;
+               _this.reposStore.el.get_value(iter, 8, out val);
+               _this.reposStore.el.get_value(iter, 6, out rval);
+               
+               var repopath = (string)rval;
+               var bval = (bool)val;
+               _this.reposStore.el.set_value(iter, 8, !bval);
+               var repo = GitRepo.get_sync(repopath);
+               repo.set_auto_branch(!bval);
+               
+               
+               
+              
+            });
         }
 
         // user defined functions
     }
 
 
-    public class Xcls_TreeViewColumn18 : Object
+    public class Xcls_tv_repo : Object
     {
         public Gtk.TreeViewColumn el;
         private Clones  _this;
@@ -805,33 +755,32 @@ public class Clones : Object
             // my vars (def)
 
         // ctor
-        public Xcls_TreeViewColumn18(Clones _owner )
+        public Xcls_tv_repo(Clones _owner )
         {
             _this = _owner;
+            _this.tv_repo = this;
             this.el = new Gtk.TreeViewColumn();
 
             // my vars (dec)
 
             // set gobject values
-            this.el.title = "Current Branch";
-            this.el.min_width = 50;
-            var child_0 = new Xcls_CellRendererText19( _this );
+            this.el.sort_column_id = 0;
+            this.el.title = "Repo";
+            this.el.min_width = 200;
+            this.el.sort_order = Gtk.SortType.ASCENDING;
+            this.el.resizable = true;
+            var child_0 = new Xcls_cr_repo( _this );
             child_0.ref();
-            this.el.pack_start (  child_0.el  );
+            this.el.pack_start (  child_0.el , false );
 
             // init method
 
-            function() {
-                XObject.prototype.init.call(this);
-                this.el.add_attribute(this.items[0].el , 'markup', 1 );
-                 this.el.add_attribute(this.items[0].el , 'cell-background', 7 );
-            
-            }
+            this.el.add_attribute(_this.cr_repo.el , "markup", 0 );
         }
 
         // user defined functions
     }
-    public class Xcls_CellRendererText19 : Object
+    public class Xcls_cr_repo : Object
     {
         public Gtk.CellRendererText el;
         private Clones  _this;
@@ -840,9 +789,10 @@ public class Clones : Object
             // my vars (def)
 
         // ctor
-        public Xcls_CellRendererText19(Clones _owner )
+        public Xcls_cr_repo(Clones _owner )
         {
             _this = _owner;
+            _this.cr_repo = this;
             this.el = new Gtk.CellRendererText();
 
             // my vars (dec)
@@ -854,7 +804,7 @@ public class Clones : Object
     }
 
 
-    public class Xcls_TreeViewColumn20 : Object
+    public class Xcls_tv_active_ticket : Object
     {
         public Gtk.TreeViewColumn el;
         private Clones  _this;
@@ -863,32 +813,29 @@ public class Clones : Object
             // my vars (def)
 
         // ctor
-        public Xcls_TreeViewColumn20(Clones _owner )
+        public Xcls_tv_active_ticket(Clones _owner )
         {
             _this = _owner;
+            _this.tv_active_ticket = this;
             this.el = new Gtk.TreeViewColumn();
 
             // my vars (dec)
 
             // set gobject values
-            this.el.title = "Last updated";
+            this.el.title = "Active Ticket";
             this.el.min_width = 50;
-            var child_0 = new Xcls_CellRendererText21( _this );
+            var child_0 = new Xcls_cr_active_ticket( _this );
             child_0.ref();
-            this.el.pack_start (  child_0.el  );
+            this.el.pack_start (  child_0.el , false );
 
             // init method
 
-            function() {
-                XObject.prototype.init.call(this);
-                this.el.add_attribute(this.items[0].el , 'markup', 3 );
-            
-            }
+            this.el.add_attribute(_this.cr_active_ticket.el , "markup", 9 );
         }
 
         // user defined functions
     }
-    public class Xcls_CellRendererText21 : Object
+    public class Xcls_cr_active_ticket : Object
     {
         public Gtk.CellRendererText el;
         private Clones  _this;
@@ -897,9 +844,10 @@ public class Clones : Object
             // my vars (def)
 
         // ctor
-        public Xcls_CellRendererText21(Clones _owner )
+        public Xcls_cr_active_ticket(Clones _owner )
         {
             _this = _owner;
+            _this.cr_active_ticket = this;
             this.el = new Gtk.CellRendererText();
 
             // my vars (dec)
@@ -911,7 +859,7 @@ public class Clones : Object
     }
 
 
-    public class Xcls_TreeViewColumn22 : Object
+    public class Xcls_tv_current_branch : Object
     {
         public Gtk.TreeViewColumn el;
         private Clones  _this;
@@ -920,33 +868,30 @@ public class Clones : Object
             // my vars (def)
 
         // ctor
-        public Xcls_TreeViewColumn22(Clones _owner )
+        public Xcls_tv_current_branch(Clones _owner )
         {
             _this = _owner;
+            _this.tv_current_branch = this;
             this.el = new Gtk.TreeViewColumn();
 
             // my vars (dec)
 
             // set gobject values
-            this.el.title = "All Branches";
+            this.el.title = "Current Branch";
             this.el.min_width = 50;
-            this.el.resizable = false;
-            var child_0 = new Xcls_CellRendererText23( _this );
+            var child_0 = new Xcls_cr_current_branch( _this );
             child_0.ref();
-            this.el.pack_start (  child_0.el  );
+            this.el.pack_start (  child_0.el , false );
 
             // init method
 
-            function() {
-                XObject.prototype.init.call(this);
-                this.el.add_attribute(this.items[0].el , 'markup', 2 );
-            
-            }
+            this.el.add_attribute(_this.cr_current_branch.el , "markup", 1 );
+                 this.el.add_attribute(_this.cr_current_branch.el, "cell-background", 7 );
         }
 
         // user defined functions
     }
-    public class Xcls_CellRendererText23 : Object
+    public class Xcls_cr_current_branch : Object
     {
         public Gtk.CellRendererText el;
         private Clones  _this;
@@ -955,9 +900,10 @@ public class Clones : Object
             // my vars (def)
 
         // ctor
-        public Xcls_CellRendererText23(Clones _owner )
+        public Xcls_cr_current_branch(Clones _owner )
         {
             _this = _owner;
+            _this.cr_current_branch = this;
             this.el = new Gtk.CellRendererText();
 
             // my vars (dec)
@@ -969,43 +915,51 @@ public class Clones : Object
     }
 
 
-
-    public class Xcls_TreeView24 : Object
+    public class Xcls_tv_last_updated : Object
     {
-        public Gtk.TreeView el;
+        public Gtk.TreeViewColumn el;
         private Clones  _this;
 
 
             // my vars (def)
 
         // ctor
-        public Xcls_TreeView24(Clones _owner )
+        public Xcls_tv_last_updated(Clones _owner )
         {
             _this = _owner;
-            this.el = new Gtk.TreeView();
+            _this.tv_last_updated = this;
+            this.el = new Gtk.TreeViewColumn();
 
             // my vars (dec)
 
             // set gobject values
-            var child_0 = new Xcls_ListStore25( _this );
+            this.el.title = "Last updated";
+            this.el.min_width = 50;
+            var child_0 = new Xcls_cr_last_updated( _this );
             child_0.ref();
+            this.el.pack_start (  child_0.el , false );
+
+            // init method
+
+            this.el.add_attribute(_this.cr_last_updated.el , "markup", 3 );
         }
 
         // user defined functions
     }
-    public class Xcls_ListStore25 : Object
+    public class Xcls_cr_last_updated : Object
     {
-        public Gtk.ListStore el;
+        public Gtk.CellRendererText el;
         private Clones  _this;
 
 
             // my vars (def)
 
         // ctor
-        public Xcls_ListStore25(Clones _owner )
+        public Xcls_cr_last_updated(Clones _owner )
         {
             _this = _owner;
-            this.el = new Gtk.ListStore( 0, null );
+            _this.cr_last_updated = this;
+            this.el = new Gtk.CellRendererText();
 
             // my vars (dec)
 
@@ -1016,30 +970,63 @@ public class Clones : Object
     }
 
 
+    public class Xcls_tv_all_branches : Object
+    {
+        public Gtk.TreeViewColumn el;
+        private Clones  _this;
+
+
+            // my vars (def)
+
+        // ctor
+        public Xcls_tv_all_branches(Clones _owner )
+        {
+            _this = _owner;
+            _this.tv_all_branches = this;
+            this.el = new Gtk.TreeViewColumn();
 
+            // my vars (dec)
 
-    public class Xcls_ok_button : Object
+            // set gobject values
+            this.el.title = "All Branches";
+            this.el.min_width = 50;
+            this.el.resizable = false;
+            var child_0 = new Xcls_cr_all_branches( _this );
+            child_0.ref();
+            this.el.pack_start (  child_0.el , false );
+
+            // init method
+
+            this.el.add_attribute(_this.cr_all_branches.el , "markup", 2 );
+        }
+
+        // user defined functions
+    }
+    public class Xcls_cr_all_branches : Object
     {
-        public Gtk.Button el;
+        public Gtk.CellRendererText el;
         private Clones  _this;
 
 
             // my vars (def)
 
         // ctor
-        public Xcls_ok_button(Clones _owner )
+        public Xcls_cr_all_branches(Clones _owner )
         {
             _this = _owner;
-            _this.ok_button = this;
-            this.el = new Gtk.Button();
+            _this.cr_all_branches = this;
+            this.el = new Gtk.CellRendererText();
 
             // my vars (dec)
 
             // set gobject values
-            this.el.label = "Close";
         }
 
         // user defined functions
     }
 
+
+
+
+
 }