Changed MergeBranch.bjsMergeBranch.vala
[gitlive] / Clones.vala
index d5e2918..8b0da79 100644 (file)
@@ -30,7 +30,6 @@ public class Clones : Object
     public Xcls_cr_last_updated cr_last_updated;
     public Xcls_tv_all_branches tv_all_branches;
     public Xcls_cr_all_branches cr_all_branches;
-    public Xcls_ok_button ok_button;
 
         // my vars (def)
 
@@ -46,15 +45,12 @@ public class Clones : Object
         this.el.title = "Manage Clones";
         this.el.border_width = 3;
         this.el.default_height = 500;
-        this.el.default_width = 800;
+        this.el.default_width = 1024;
         this.el.deletable = true;
         this.el.modal = true;
         var child_0 = new Xcls_Box2( _this );
         child_0.ref();
         this.el.get_content_area().add (  child_0.el  );
-        var child_1 = new Xcls_ok_button( _this );
-        child_1.ref();
-        this.el.add_action_widget (  child_1.el , 1  );
 
         //listeners
         this.el.delete_event.connect( (self, event) => {
@@ -73,11 +69,19 @@ public class Clones : Object
     public void show ()    {
     
         
-        this.el.set_deletable(false);
+        this.el.set_deletable(true);
         this.el.set_gravity(Gdk.Gravity.NORTH);
         this.el.move((Gdk.Screen.width() / 2 ) -400 ,0);
+        
+        this.el.set_default_size(
+                       int.min(1024,Gdk.Screen.width()),
+                       int.max(500,Gdk.Screen.height() - 300)
+       );
+         
         this.el.show_all();
         _this.reposStore.load();
+        this.el.set_keep_above(true);
+        this.el.run();
         // load clones..
     //     this.get('/reposStore').load();
         
@@ -114,7 +118,7 @@ public class Clones : Object
             var child_0 = new Xcls_Box3( _this );
             child_0.ref();
             this.el.pack_start (  child_0.el , false,false,0 );
-            var child_1 = new Xcls_ScrolledWindow9( _this );
+            var child_1 = new Xcls_ScrolledWindow5( _this );
             child_1.ref();
             this.el.pack_end (  child_1.el , true,true,0 );
         }
@@ -138,21 +142,10 @@ public class Clones : Object
             // my vars (dec)
 
             // set gobject values
+            this.el.homogeneous = true;
             var child_0 = new Xcls_Button4( _this );
             child_0.ref();
             this.el.add (  child_0.el  );
-            var child_1 = new Xcls_Button5( _this );
-            child_1.ref();
-            this.el.add (  child_1.el  );
-            var child_2 = new Xcls_Button6( _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  );
         }
 
         // user defined functions
@@ -174,259 +167,19 @@ public class Clones : Object
             // 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 Gtk.Button el;
-        private Clones  _this;
-
-
-            // my vars (def)
-
-        // ctor
-        public Xcls_Button5(Clones _owner )
-        {
-            _this = _owner;
-            this.el = new Gtk.Button();
-
-            // my vars (dec)
-
-            // set gobject values
-            this.el.label = "Branches";
-
-            //listeners
-            this.el.clicked.connect( () => {
-            // 
-            
-               //NewBranch.singleton().show();
-            
-            /*
-                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");
-            
-                 
-                
-                
-                
-            
-                   
-             */   
-                
-            });
-        }
-
-        // user defined functions
-    }
-
-    public class Xcls_Button6 : Object
-    {
-        public Gtk.Button el;
-        private Clones  _this;
-
-
-            // my vars (def)
-
-        // ctor
-        public Xcls_Button6(Clones _owner )
-        {
-            _this = _owner;
-            this.el = new Gtk.Button();
-
-            // my vars (dec)
-
-            // set gobject values
-            this.el.label = "Merge";
+            this.el.label = "Add Repository";
 
-            //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");
-            
-                
-                
-            
-                 
-                
-            
-             */      
-                
-                
-            });
-        }
-
-        // user defined functions
-    }
-
-    public class Xcls_Button7 : Object
-    {
-        public Gtk.Button el;
-        private Clones  _this;
-
-
-            // my vars (def)
-
-        // ctor
-        public Xcls_Button7(Clones _owner )
-        {
-            _this = _owner;
-            this.el = new Gtk.Button();
-
-            // my vars (dec)
-
-            // set gobject values
-            this.el.label = "Switch Branch";
-
-            //listeners
-            this.el.clicked.connect( () => {
-                
-                
-             
-                   
-                
-                
-            });
-        }
-
-        // user defined functions
-    }
-
-    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);
                 
                 
-             
-                   
-                
                 
             });
         }
@@ -435,7 +188,7 @@ public class Clones : Object
     }
 
 
-    public class Xcls_ScrolledWindow9 : Object
+    public class Xcls_ScrolledWindow5 : Object
     {
         public Gtk.ScrolledWindow el;
         private Clones  _this;
@@ -444,7 +197,7 @@ public class Clones : Object
             // my vars (def)
 
         // ctor
-        public Xcls_ScrolledWindow9(Clones _owner )
+        public Xcls_ScrolledWindow5(Clones _owner )
         {
             _this = _owner;
             this.el = new Gtk.ScrolledWindow( null, null );
@@ -487,6 +240,9 @@ 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  );
@@ -529,6 +285,29 @@ public class Clones : Object
             }
 
             //listeners
+            this.el.row_activated.connect( (path, col)  =>  {
+            
+               if (col.title != "Current 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(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
               /*
@@ -605,12 +384,13 @@ public class Clones : Object
             
             for(var i =0 ; i < tr.length; i++) {
                    var repo = tr.index(i);
-                   repo.loadBranches();
+                   // 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();
@@ -636,17 +416,25 @@ public class Clones : Object
                 var cb = repo.currentBranch;
                 //print(JSON.stringify(cb,null,4));
                 var col = "#ffffff";
-                /*
+                
                 if (cb.lastrev != cb.remoterev) {
-                    col =  '#ff0000';
+                    col =  "#f2dede";
+                    this.el.set_value( iter, 1, repo.currentBranch.name +"\n" +
+                       (repo.ahead_or_behind == "B" ? "Local is BEHIND remote" : "Local is AHEAD of remote")
+                    
+                       );
                 }
-                if (tr[i].hasLocalChanges) {
-                    col =  '#0000ff';
+                if (repo.has_local_changes) {
+                    col =  "#d9edf7";
+                    this.el.set_value( iter, 1, repo.currentBranch.name +"\nHas uncommitted changes"   );
                 }
-                if  ((cb.lastrev != cb.remoterev) && (tr[i].hasLocalChanges)) {
-                    col =  '#ff00ff';
+                if  ((cb.lastrev != cb.remoterev) && (repo.has_local_changes)) {
+                    col =  "#fcf8e3";
+                    this.el.set_value( iter, 1, repo.currentBranch.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;
                 
@@ -1181,29 +969,4 @@ public class Clones : Object
 
 
 
-    public class Xcls_ok_button : Object
-    {
-        public Gtk.Button el;
-        private Clones  _this;
-
-
-            // my vars (def)
-
-        // ctor
-        public Xcls_ok_button(Clones _owner )
-        {
-            _this = _owner;
-            _this.ok_button = this;
-            this.el = new Gtk.Button();
-
-            // my vars (dec)
-
-            // set gobject values
-            this.el.expand = false;
-            this.el.label = "Close";
-        }
-
-        // user defined functions
-    }
-
 }