NewBranch.bjs
[gitlive] / Clone.vala
index 25ed29c..afad682 100644 (file)
@@ -12,13 +12,11 @@ public class Clone : Object
         }
         return _Clone;
     }
-    public Xcls_label_status label_status;
-    public Xcls_label_diff label_diff;
-    public Xcls_status_view status_view;
-    public Xcls_diff_view diff_view;
+    public Xcls_reposel reposel;
+    public Xcls_prcellrenderer prcellrenderer;
+    public Xcls_repomodel repomodel;
 
         // my vars (def)
-    public GitRepo repo;
 
     // ctor
     public Clone()
@@ -38,34 +36,18 @@ public class Clone : Object
     }
 
     // user defined functions
-    public void show (Gtk.Widget btn, Gdk.Rectangle rect, GitRepo repo) {
-        _this.repo = repo;
-        // get the active project.
-         var lm = Gtk.SourceLanguageManager.get_default();
-                    
-    //    ((Gtk.SourceBuffer)(_this.view.el.get_buffer())) .set_language(
-      //      lm.get_language("html")
-     //   );
-      
-        //print (project.fn);
-        //project.runhtml = project.runhtml || '';
-        _this.diff_view.el.get_buffer().set_text(repo.git_diff);
-        _this.status_view.el.get_buffer().set_text(repo.git_status);
-           
+    public void show (Gtk.Widget btn) {
+     
                //console.log('show all');
        this.el.set_modal(true);
        this.el.set_relative_to(btn);
-        this.el.set_pointing_to(rect);
-      
+       this.repomodel.loadRepos();
        //this.el.set_position(Gtk.PositionType.RIGHT);
     
        // window + header?
         GLib.debug("SHOWALL - POPIP\n");
        this.el.show_all();
-       //this.el.set_size_request(800,500);
-    // this.diff_view.el.grab_focus();
-       
-        //this.el.show_all();
+    ;
     }
     public class Xcls_Box2 : Object
     {
@@ -79,404 +61,162 @@ public class Clone : Object
         public Xcls_Box2(Clone _owner )
         {
             _this = _owner;
-            this.el = new Gtk.Box( Gtk.Orientation.VERTICAL, 0 );
+            this.el = new Gtk.Box( Gtk.Orientation.HORIZONTAL, 0 );
 
             // my vars (dec)
 
             // set gobject values
-            this.el.homogeneous = false;
-            this.el.border_width = 5;
-            var child_0 = new Xcls_Notebook3( _this );
+            this.el.expand = false;
+            this.el.vexpand = false;
+            var child_0 = new Xcls_reposel( _this );
             child_0.ref();
-            this.el.pack_start (  child_0.el , true,true,0 );
-            var child_1 = new Xcls_Box12( _this );
+            this.el.add (  child_0.el  );
+            var child_1 = new Xcls_Button6( _this );
             child_1.ref();
-            this.el.pack_end (  child_1.el , false,false,0 );
+            this.el.add (  child_1.el  );
         }
 
         // user defined functions
     }
-    public class Xcls_Notebook3 : Object
+    public class Xcls_reposel : Object
     {
-        public Gtk.Notebook el;
+        public Gtk.ComboBox el;
         private Clone  _this;
 
 
             // my vars (def)
+        public bool loading;
 
         // ctor
-        public Xcls_Notebook3(Clone _owner )
+        public Xcls_reposel(Clone _owner )
         {
             _this = _owner;
-            this.el = new Gtk.Notebook();
+            _this.reposel = this;
+            this.el = new Gtk.ComboBox.with_entry();
 
             // my vars (dec)
+            this.loading = false;
 
             // set gobject values
-            var child_0 = new Xcls_label_status( _this );
+            this.el.hexpand = true;
+            var child_0 = new Xcls_prcellrenderer( _this );
             child_0.ref();
-            var child_1 = new Xcls_label_diff( _this );
+            this.el.pack_start (  child_0.el , true );
+            var child_1 = new Xcls_repomodel( _this );
             child_1.ref();
-            var child_2 = new Xcls_Box6( _this );
-            child_2.ref();
-            this.el.append_page (  child_2.el , _this.label_status.el );
-            var child_3 = new Xcls_Box9( _this );
-            child_3.ref();
-            this.el.append_page (  child_3.el , _this.label_diff.el );
-        }
-
-        // user defined functions
-    }
-    public class Xcls_label_status : Object
-    {
-        public Gtk.Label el;
-        private Clone  _this;
-
-
-            // my vars (def)
-
-        // ctor
-        public Xcls_label_status(Clone _owner )
-        {
-            _this = _owner;
-            _this.label_status = this;
-            this.el = new Gtk.Label( "Status" );
-
-            // my vars (dec)
-
-            // set gobject values
-        }
-
-        // user defined functions
-    }
-
-    public class Xcls_label_diff : Object
-    {
-        public Gtk.Label el;
-        private Clone  _this;
-
-
-            // my vars (def)
-
-        // ctor
-        public Xcls_label_diff(Clone _owner )
-        {
-            _this = _owner;
-            _this.label_diff = this;
-            this.el = new Gtk.Label( "Diff" );
-
-            // my vars (dec)
-
-            // set gobject values
-        }
-
-        // user defined functions
-    }
-
-    public class Xcls_Box6 : Object
-    {
-        public Gtk.Box el;
-        private Clone  _this;
-
-
-            // my vars (def)
-
-        // ctor
-        public Xcls_Box6(Clone _owner )
-        {
-            _this = _owner;
-            this.el = new Gtk.Box( Gtk.Orientation.VERTICAL, 0 );
-
-            // my vars (dec)
-
-            // set gobject values
-            this.el.homogeneous = false;
-            var child_0 = new Xcls_ScrolledWindow7( _this );
-            child_0.ref();
-            this.el.pack_start (  child_0.el , true,true,0 );
-        }
-
-        // user defined functions
-    }
-    public class Xcls_ScrolledWindow7 : Object
-    {
-        public Gtk.ScrolledWindow el;
-        private Clone  _this;
-
-
-            // my vars (def)
-
-        // ctor
-        public Xcls_ScrolledWindow7(Clone _owner )
-        {
-            _this = _owner;
-            this.el = new Gtk.ScrolledWindow( null, null );
-
-            // my vars (dec)
-
-            // set gobject values
-            var child_0 = new Xcls_status_view( _this );
-            child_0.ref();
-            this.el.add (  child_0.el  );
-        }
-
-        // user defined functions
-    }
-    public class Xcls_status_view : Object
-    {
-        public Gtk.SourceView el;
-        private Clone  _this;
-
-
-            // my vars (def)
-
-        // ctor
-        public Xcls_status_view(Clone _owner )
-        {
-            _this = _owner;
-            _this.status_view = this;
-            this.el = new Gtk.SourceView();
-
-            // my vars (dec)
+            this.el.set_model (  child_1.el  );
 
             // init method
 
-            var description =   Pango.FontDescription.from_string("monospace");
-                description.set_size(9000);
-                this.el.override_font(description);
+            this.el.set_entry_text_column(1);
         }
 
         // user defined functions
-    }
-
-
-
-    public class Xcls_Box9 : Object
-    {
-        public Gtk.Box el;
-        private Clone  _this;
-
-
-            // my vars (def)
-
-        // ctor
-        public Xcls_Box9(Clone _owner )
-        {
-            _this = _owner;
-            this.el = new Gtk.Box( Gtk.Orientation.VERTICAL, 0 );
-
-            // my vars (dec)
-
-            // set gobject values
-            this.el.homogeneous = false;
-            var child_0 = new Xcls_ScrolledWindow10( _this );
-            child_0.ref();
-            this.el.pack_start (  child_0.el , true,true,0 );
+        public string selectedRepo () {
+               Gtk.TreeIter iter;
+               Value val1;
+         
+         
+               this.el.get_active_iter (out iter);
+               _this.repomodel.el.get_value (iter, 0, out val1);
+         
+        
+               return  (string) val1;
+               
+               
+               
+               
         }
-
-        // user defined functions
     }
-    public class Xcls_ScrolledWindow10 : Object
+    public class Xcls_prcellrenderer : Object
     {
-        public Gtk.ScrolledWindow el;
+        public Gtk.CellRendererText el;
         private Clone  _this;
 
 
             // my vars (def)
 
         // ctor
-        public Xcls_ScrolledWindow10(Clone _owner )
+        public Xcls_prcellrenderer(Clone _owner )
         {
             _this = _owner;
-            this.el = new Gtk.ScrolledWindow( null, null );
+            _this.prcellrenderer = this;
+            this.el = new Gtk.CellRendererText();
 
             // my vars (dec)
 
             // set gobject values
-            this.el.height_request = 400;
-            var child_0 = new Xcls_diff_view( _this );
-            child_0.ref();
-            this.el.add (  child_0.el  );
         }
 
         // user defined functions
     }
-    public class Xcls_diff_view : Object
-    {
-        public Gtk.SourceView el;
-        private Clone  _this;
-
-
-            // my vars (def)
-
-        // ctor
-        public Xcls_diff_view(Clone _owner )
-        {
-            _this = _owner;
-            _this.diff_view = this;
-            this.el = new Gtk.SourceView();
-
-            // my vars (dec)
-
-            // init method
-
-            var description =   Pango.FontDescription.from_string("monospace");
-                description.set_size(9000);
-                this.el.override_font(description);
-        }
-
-        // user defined functions
-    }
-
-
 
-
-    public class Xcls_Box12 : Object
+    public class Xcls_repomodel : Object
     {
-        public Gtk.Box el;
+        public Gtk.ListStore el;
         private Clone  _this;
 
 
             // my vars (def)
 
         // ctor
-        public Xcls_Box12(Clone _owner )
+        public Xcls_repomodel(Clone _owner )
         {
             _this = _owner;
-            this.el = new Gtk.Box( Gtk.Orientation.HORIZONTAL, 0 );
+            _this.repomodel = this;
+            this.el = new Gtk.ListStore( 2, typeof(string),typeof(string) );
 
             // my vars (dec)
 
             // set gobject values
-            this.el.homogeneous = true;
-            this.el.expand = false;
-            this.el.vexpand = false;
-            var child_0 = new Xcls_Button13( _this );
-            child_0.ref();
-            this.el.add (  child_0.el  );
-            var child_1 = new Xcls_Button14( _this );
-            child_1.ref();
-            this.el.add (  child_1.el  );
-            var child_2 = new Xcls_Button15( _this );
-            child_2.ref();
-            this.el.add (  child_2.el  );
-            var child_3 = new Xcls_Button16( _this );
-            child_3.ref();
-            this.el.add (  child_3.el  );
         }
 
         // user defined functions
-    }
-    public class Xcls_Button13 : Object
-    {
-        public Gtk.Button el;
-        private Clone  _this;
-
-
-            // my vars (def)
-
-        // ctor
-        public Xcls_Button13(Clone _owner )
-        {
-            _this = _owner;
-            this.el = new Gtk.Button();
-
-            // my vars (dec)
-
-            // set gobject values
-            this.el.label = "Stash Changes";
-
-            //listeners
-            this.el.button_press_event.connect( () => {
-              
-               
-               GitMonitor.gitmonitor.stop();
-               _this.repo.git({ "stash" , "--all" });
-               _this.repo.loadStatus();
-               GitMonitor.gitmonitor.start();
-                _this.diff_view.el.get_buffer().set_text(_this.repo.git_diff);
-                _this.status_view.el.get_buffer().set_text(_this.repo.git_status);
-                Clones.singleton().reposStore.load();
-              
-               _this.el.hide();
-                return false;
-            });
-        }
-
-        // user defined functions
-    }
-
-    public class Xcls_Button14 : Object
-    {
-        public Gtk.Button el;
-        private Clone  _this;
-
-
-            // my vars (def)
-
-        // ctor
-        public Xcls_Button14(Clone _owner )
-        {
-            _this = _owner;
-            this.el = new Gtk.Button();
-
-            // my vars (dec)
-
-            // set gobject values
-            this.el.label = "Commit Changes";
-
-            //listeners
-            this.el.button_press_event.connect( () => {
-               _this.repo.git({ "commit" , "-a" ,"-m", "Uncommited changes synced" });
-               _this.repo.push();
-               _this.repo.loadStatus();
-               
-                _this.diff_view.el.get_buffer().set_text(_this.repo.git_diff);
-                _this.status_view.el.get_buffer().set_text(_this.repo.git_status);
+        public void loadRepos () {
+        
+            var rt = RooTicket.singleton();
+            var gr = GitRepo.singleton();
+            _this.reposel.loading = true;
+        
+            this.el.clear();                                    
+            Gtk.TreeIter iter;
+            var el = this.el;
+            
+            el.append(out iter);
+        
+            
+            el.set_value(iter, 0, "");
+            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);
                 
-               _this.el.hide();
-               Clones.singleton().reposStore.load();
+                el.set_value(iter, 0, newrepo.shortname);
+                el.set_value(iter, 1, newrepo.shortname); // "%s : %s".printf(newrepo.shortname, newrepo.description) );
                
-                return false;
-            });
-        }
-
-        // user defined functions
-    }
-
-    public class Xcls_Button15 : Object
-    {
-        public Gtk.Button el;
-        private Clone  _this;
-
-
-            // my vars (def)
-
-        // ctor
-        public Xcls_Button15(Clone _owner )
-        {
-            _this = _owner;
-            this.el = new Gtk.Button();
-
-            // my vars (dec)
-
-            // set gobject values
-            this.el.label = "Create Branch";
-
-            //listeners
-            this.el.button_press_event.connect( () => {
-               var oldq = new Gee.ArrayList<GitMonitorQueue>();  
-                
-               NewBranch.singleton().show(_this.repo, oldq);
+                
+            }
             
-                return false;
-            });
+            _this.reposel.loading = false;
+             //this.el.set_sort_column_id(0, Gtk.SortType.ASCENDING);          
+                                             
         }
-
-        // user defined functions
     }
 
-    public class Xcls_Button16 : Object
+
+    public class Xcls_Button6 : Object
     {
         public Gtk.Button el;
         private Clone  _this;
@@ -485,7 +225,7 @@ public class Clone : Object
             // my vars (def)
 
         // ctor
-        public Xcls_Button16(Clone _owner )
+        public Xcls_Button6(Clone _owner )
         {
             _this = _owner;
             this.el = new Gtk.Button();
@@ -493,11 +233,45 @@ public class Clone : Object
             // my vars (dec)
 
             // set gobject values
-            this.el.label = "Ignore for now";
+            this.el.label = "Checkout";
 
             //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;
             });
         }
@@ -506,5 +280,4 @@ public class Clone : Object
     }
 
 
-
 }