Clones.bjs
[gitlive] / Clones.js
index b2d5a94..3af05b8 100644 (file)
--- a/Clones.js
+++ b/Clones.js
@@ -13,8 +13,8 @@ Clones=new XObject({
     xtype: Gtk.Dialog,
     listeners : {
         destroy_event : function (self, event) {
-             this.el.hide();
-                        return false;
+              print("DESTROY?!");
+             return true;
         },
         response : function (self, id) {
           // hide
@@ -50,7 +50,7 @@ Clones=new XObject({
         });
        // shouild set path..
         */
-     
+        this.el.set_deletable(false);
         this.el.show_all();
         // load clones..
             this.get('/reposStore').load();
@@ -71,6 +71,7 @@ Clones=new XObject({
     items : [
         {
             xtype: Gtk.VBox,
+            id : "Clones",
             pack : function(p,e) {
                     p.el.get_content_area().pack_start(e.el,true,true,0)
                 },
@@ -83,39 +84,151 @@ Clones=new XObject({
                             xtype: Gtk.Button,
                             listeners : {
                                 clicked : function (self) {
-                                    
+                                
+                                    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");
+                                
+                                     
+                                    
+                                    
+                                    
+                                
                                        
                                     
                                     
                                 }
                             },
-                            label : "Add Clone",
+                            label : "Remotes / Clones",
                             pack : "add"
                         },
                         {
                             xtype: Gtk.Button,
                             listeners : {
                                 clicked : function (self) {
-                                    
+                                
+                                    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");
+                                
+                                     
+                                    
+                                    
+                                    
+                                
                                        
                                     
                                     
                                 }
                             },
-                            label : "Add Branch",
+                            label : "Branches",
                             pack : "add"
                         },
                         {
                             xtype: Gtk.Button,
                             listeners : {
                                 clicked : function (self) {
+                                
+                                    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;
-                                    Merger.repo = new Repo('/home/alan/gitlive/roojs1');
+                                    
+                                 
+                                    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");
+                                
+                                    
+                                    
+                                
+                                    
+                                
+                                    
+                                    
+                                    
+                                    
                                 
                                        
                                     
@@ -220,25 +333,39 @@ Clones=new XObject({
                                     xtype: Gtk.ListStore,
                                     id : "reposStore",
                                     pack : "set_model",
+                                    pathToRepo : function(path) {
+                                    
+                                        var tr= this.repos;
+                                    
+                                        
+                                        for(var i =0 ; i < tr.length; i++) {
+                                            if (tr[i].repopath == path) {
+                                                return tr;
+                                            }
+                                        } 
+                                        return false; 
+                                    },
                                     init : function() {
                                         XObject.prototype.init.call(this);
-                                        this.el.set_column_types ( 7, [
+                                        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_BOOLEAN // active
+                                               GObject.TYPE_STRING, // repopath
+                                               GObject.TYPE_STRING // color highighling 
                                       ] );
                                     },
                                     load : function()
                                     {
                                         //this.insert(citer,iter,0);
                                         print("getting list");
-                                        var tr = imports.Scm.Repo.Repo.list();
-                                        
+                                        this.repos = imports.Scm.Repo.Repo.list();
+                                        var tr= this.repos;
                                         this.el.clear();
+                                        
                                         for(var i =0 ; i < tr.length; i++) {
                                             var ret = {  };
                                            
@@ -246,37 +373,80 @@ Clones=new XObject({
                                             
                                             //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(ret.iter, 0, '' +  tr[i].repopath.split('/').pop() );
-                                            this.el.set_value(ret.iter, 1, '' + tr[i].currentBranch   );
+                                            this.el.set_value(ret.iter, 1, '' + tr[i].currentBranch.name   );
                                             this.el.set_value(ret.iter, 2, '' + tr[i].branches.map(
                                                             function(e) { return e.name; 
                                                         }).join(', ') 
                                              );
-                                            this.el.set_value(ret.iter, 3, '' + 'tbc' );        
+                                            this.el.set_value(ret.iter, 3, '' +  (!hi  ? '??' : hi[0].changed_raw));        
                                             this.el.set_value(ret.iter, 4, tr[i].autocommit() );                
                                             this.el.set_value(ret.iter, 5, tr[i].autopush() );                        
-                                            this.el.set_value(ret.iter, 6, true );      
+                                            this.el.set_value(ret.iter, 6,  tr[i].repopath );  
+                                            // highlight color.
+                                            var cb = tr[i].currentBranch;
+                                            //print(JSON.stringify(cb,null,4));
+                                            var col = '#ffffff';
+                                            if (cb.lastrev != cb.remoterev) {
+                                                col =  '#ff0000';
+                                            }
+                                            if (tr[i].hasLocalChanges) {
+                                                col =  '#0000ff';
+                                            }
+                                            if  ((cb.lastrev != cb.remoterev) && (tr[i].hasLocalChanges)) {
+                                                col =  '#ff00ff';
+                                            }
+                                            
+                                            this.el.set_value(ret.iter, 7, col  );      
                                             
                                         }     
                                     }
                                 },
                                 {
                                     xtype: Gtk.TreeViewColumn,
-                                    clickable : true,
                                     min_width : 50,
                                     pack : "append_column",
                                     title : "Auto Commit",
                                     init : function() {
                                         XObject.prototype.init.call(this);
                                         this.el.add_attribute(this.items[0].el , 'active', 4 );
-                                        this.el.add_attribute(this.items[0].el , 'activatable', 6 );
+                                        this.items[0].el.set_activatable(true);
                                     
                                     },
                                     items : [
                                         {
                                             xtype: Gtk.CellRendererToggle,
-                                            activatable : true,
+                                            listeners : {
+                                                toggled : 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();
+                                                     print("VAL: " + store.el.get_value(ret.iter, 6).value);     
+                                                     print("PATH: " + path);
+                                                     
+                                                     
+                                                     var repo = store.pathToRepo(path);
+                                                     repo.autocommit(!value);
+                                                     
+                                                    
+                                                    
+                                                }
+                                            },
                                             pack : "pack_start",
                                             mode : Gtk.CellRendererMode.ACTIVATABLE
                                         }
@@ -284,18 +454,33 @@ Clones=new XObject({
                                 },
                                 {
                                     xtype: Gtk.TreeViewColumn,
-                                    clickable : true,
                                     min_width : 50,
                                     pack : "append_column",
                                     title : "Auto Push",
                                     init : function() {
                                         XObject.prototype.init.call(this);
                                         this.el.add_attribute(this.items[0].el , 'active', 5 );
-                                        this.el.add_attribute(this.items[0].el , 'activatable', 6 );
+                                          this.items[0].el.set_activatable(true);
                                     },
                                     items : [
                                         {
                                             xtype: Gtk.CellRendererToggle,
+                                            listeners : {
+                                                toggled : 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 = store.pathToRepo(path);
+                                                     repo.autopush(!value);
+                                                     
+                                                }
+                                            },
                                             pack : "pack_start",
                                             mode : Gtk.CellRendererMode.ACTIVATABLE
                                         }
@@ -327,6 +512,7 @@ Clones=new XObject({
                                     init : 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 );
                                     
                                     },
                                     items : [
@@ -387,15 +573,10 @@ Clones=new XObject({
                 }
             ]
         },
-        {
-            xtype: Gtk.Button,
-            label : "Cancel",
-            pack : "add_action_widget,0"
-        },
         {
             xtype: Gtk.Button,
             id : "ok_button",
-            label : "OK",
+            label : "Close",
             pack : "add_action_widget,1"
         }
     ]