NewBranch.bjs
[gitlive] / Clone.vala
index f13931e..afad682 100644 (file)
@@ -12,12 +12,11 @@ public class Clone : Object
         }
         return _Clone;
     }
-    public Xcls_projectsel projectsel;
+    public Xcls_reposel reposel;
     public Xcls_prcellrenderer prcellrenderer;
-    public Xcls_prmodel prmodel;
+    public Xcls_repomodel repomodel;
 
         // my vars (def)
-    public GitRepo repo;
 
     // ctor
     public Clone()
@@ -33,16 +32,16 @@ public class Clone : Object
         this.el.position = Gtk.PositionType.RIGHT;
         var child_0 = new Xcls_Box2( _this );
         child_0.ref();
-        this.el.pack_end (  child_0.el , false,false,0 );
+        this.el.add (  child_0.el  );
     }
 
     // user defined functions
-    public void show (Gtk.Widget btn, GitRepo repo) {
+    public void show (Gtk.Widget btn) {
      
                //console.log('show all');
        this.el.set_modal(true);
        this.el.set_relative_to(btn);
-      
+       this.repomodel.loadRepos();
        //this.el.set_position(Gtk.PositionType.RIGHT);
     
        // window + header?
@@ -69,9 +68,9 @@ public class Clone : Object
             // set gobject values
             this.el.expand = false;
             this.el.vexpand = false;
-            var child_0 = new Xcls_projectsel( _this );
+            var child_0 = new Xcls_reposel( _this );
             child_0.ref();
-            this.el.attach_defaults (  child_0.el , 0,1,1,2 );
+            this.el.add (  child_0.el  );
             var child_1 = new Xcls_Button6( _this );
             child_1.ref();
             this.el.add (  child_1.el  );
@@ -79,7 +78,7 @@ public class Clone : Object
 
         // user defined functions
     }
-    public class Xcls_projectsel : Object
+    public class Xcls_reposel : Object
     {
         public Gtk.ComboBox el;
         private Clone  _this;
@@ -89,10 +88,10 @@ public class Clone : Object
         public bool loading;
 
         // ctor
-        public Xcls_projectsel(Clone _owner )
+        public Xcls_reposel(Clone _owner )
         {
             _this = _owner;
-            _this.projectsel = this;
+            _this.reposel = this;
             this.el = new Gtk.ComboBox.with_entry();
 
             // my vars (dec)
@@ -103,7 +102,7 @@ public class Clone : Object
             var child_0 = new Xcls_prcellrenderer( _this );
             child_0.ref();
             this.el.pack_start (  child_0.el , true );
-            var child_1 = new Xcls_prmodel( _this );
+            var child_1 = new Xcls_repomodel( _this );
             child_1.ref();
             this.el.set_model (  child_1.el  );
 
@@ -119,7 +118,7 @@ public class Clone : Object
          
          
                this.el.get_active_iter (out iter);
-               _this.prmodel.el.get_value (iter, 0, out val1);
+               _this.repomodel.el.get_value (iter, 0, out val1);
          
         
                return  (string) val1;
@@ -152,7 +151,7 @@ public class Clone : Object
         // user defined functions
     }
 
-    public class Xcls_prmodel : Object
+    public class Xcls_repomodel : Object
     {
         public Gtk.ListStore el;
         private Clone  _this;
@@ -161,10 +160,10 @@ public class Clone : Object
             // my vars (def)
 
         // ctor
-        public Xcls_prmodel(Clone _owner )
+        public Xcls_repomodel(Clone _owner )
         {
             _this = _owner;
-            _this.prmodel = this;
+            _this.repomodel = this;
             this.el = new Gtk.ListStore( 2, typeof(string),typeof(string) );
 
             // my vars (dec)
@@ -173,12 +172,11 @@ public class Clone : Object
         }
 
         // user defined functions
-        public void loadProjects (string id) {
+        public void loadRepos () {
         
             var rt = RooTicket.singleton();
-            rt.loadProjects();
-            
-            _this.projectsel.loading = true;
+            var gr = GitRepo.singleton();
+            _this.reposel.loading = true;
         
             this.el.clear();                                    
             Gtk.TreeIter iter;
@@ -188,24 +186,30 @@ public class Clone : Object
         
             
             el.set_value(iter, 0, "");
-            el.set_value(iter, 1, "-- select a project --");
-            if (id == "") {
-                   _this.projectsel.el.set_active_iter(iter);
-            }
-            var projects = rt.projects;
-            foreach(var project in projects) {
+            el.set_value(iter, 1, "-- select a repo --");
+         
+               _this.reposel.el.set_active_iter(iter);
             
+            var projects = rt.projects;
+            foreach(var newrepo in rt.repos) {
+               var has_repo = false;
+               foreach(var repo in gr.cache.values) {
+                       if (newrepo.shortname == repo.name) {
+                               has_repo = true;
+                       }
+               }
+               if (has_repo) {
+                       continue;
+                       }
                 el.append(out iter);
                 
-                el.set_value(iter, 0, project.id);
-                el.set_value(iter, 1,  project.name );
-                if (id == project.id) {
-                          _this.projectsel.el.set_active_iter(iter);
-                   }   
+                el.set_value(iter, 0, newrepo.shortname);
+                el.set_value(iter, 1, newrepo.shortname); // "%s : %s".printf(newrepo.shortname, newrepo.description) );
+               
                 
             }
             
-            _this.projectsel.loading = false;
+            _this.reposel.loading = false;
              //this.el.set_sort_column_id(0, Gtk.SortType.ASCENDING);          
                                              
         }
@@ -233,7 +237,41 @@ public class Clone : Object
 
             //listeners
             this.el.button_press_event.connect( () => {
-                   _this.el.hide();
+                  _this.el.hide();
+                  Clones.singleton().el.hide();
+                 var repo = _this.reposel.selectedRepo();
+                    GitMonitor.gitmonitor.stop();
+                    
+                
+                    string[]  args = { "git" , "--no-pager" , "clone" };
+                
+                    args +=  ("http://git.roojs.com/" + repo );
+             
+                
+            
+                    string[]   env = {};
+                    string  home = "HOME=" + Environment.get_home_dir() ;
+                    env +=  home ;
+                               //v.push("GITPATH=" + this.repo );
+                    //}
+                      
+                    var cfg = new SpawnConfig(Environment.get_home_dir() + "/gitlive" , args , env);
+                    //cfg.debug = true;
+            
+                   // may throw error...
+                    var sp = new Spawn(cfg);
+                  
+                        GLib.debug("Spawn: %s", sp.output);
+               
+                    
+                    
+                    
+                    
+                    
+                    GitMonitor.gitmonitor.start();
+            
+                     GitRepo.updateAll("show_clones");
+                  
                     return false;
             });
         }