sync
[gitlive] / NewBranch.vala
index 836eee1..c55d3de 100644 (file)
@@ -19,6 +19,8 @@ public class NewBranch : Object
 
         // my vars (def)
     public GitRepo? repo;
+    public bool running;
+    public Gee.ArrayList<GitMonitorQueue> queue;
 
     // ctor
     public NewBranch()
@@ -28,6 +30,8 @@ public class NewBranch : Object
 
         // my vars (dec)
         this.repo = null;
+        this.running = false;
+        this.queue = null;
 
         // set gobject values
         this.el.title = "Create a working branch ";
@@ -55,9 +59,11 @@ public class NewBranch : Object
           
                GLib.debug("got %d", (int) response_id);
                if (response_id == 0) {
-                   _this.el.hide();     
+                   _this.el.hide();    
+                   this.running = false; 
                        return;
                }
+                
                // have they selected a ticket..
                // make that the current active ticket?
                // we really need to store locally what ticket is being worked on..
@@ -69,16 +75,21 @@ public class NewBranch : Object
                
             if (this.repo != null) {
                var bn = _this.name.el.get_text();
-               if (ticket_id != "" ) {
-                               this.repo.setActiveTicket( RooTicket.singleton().getById(ticket_id), bn);
-                       } else {
-                               this.repo.createBranchNamed(bn);
-                       }
+        
+                       var res = this.repo.setActiveTicket(                    
+                                RooTicket.singleton().getById(ticket_id != "" ? ticket_id : "-1"), bn
+                        );
+                        if (res) {
+                               // start the monitoring..
+                                GitMonitor.gitmonitor.start();
+                                
+                        }
             }
+            
         
-               
+            this.running = false; 
         
-                
+               this.el.hide();
                 
                 
         
@@ -92,22 +103,28 @@ public class NewBranch : Object
     }
 
     // user defined functions
-    public   void show ( GitRepo repo ) 
+    public   void show ( GitRepo repo, Gee.ArrayList<GitMonitorQueue> queue ) 
     {
          // this.el.set_gravity(Gdk.Gravity.NORTH);
-        
+        if (this.running) { // should not happen!!
+               GLib.error("new branch show called, when already being displayed?");
+       }
+       this.queue = queue;
+       
+       this.running  = true;
+       GitMonitor.gitmonitor.stop();
+       
         this.repo = repo;
         
        this.el.move((Gdk.Screen.width() / 2)- 250 ,0);
                GLib.debug("Loading tickets"); 
-       _this.dbmodel.loadTickets();
     
-        this.el.show_all();
     
+        this.el.show_all();
+            this.el.set_keep_above(true);
+       _this.dbmodel.loadTickets();
+       this.el.run();
     
-     
-        
-          
     }
     public class Xcls_VBox2 : Object
     {
@@ -200,6 +217,7 @@ public class NewBranch : Object
 
 
             // my vars (def)
+        public bool loading;
 
         // ctor
         public Xcls_ticketsel(NewBranch _owner )
@@ -209,6 +227,7 @@ public class NewBranch : Object
             this.el = new Gtk.ComboBox();
 
             // my vars (dec)
+            this.loading = false;
 
             // set gobject values
             var child_0 = new Xcls_dbcellrenderer( _this );
@@ -224,18 +243,21 @@ public class NewBranch : Object
 
             //listeners
             this.el.changed.connect( () => {
-            
+               if (this.loading) {
+                       return;
+               }
                var ticket_id = this.selectedTicketId();
                
                var name = RooTicket.singleton().usernameLocal();
                
-               if (ticket_id == "") {
+               if (ticket_id == "" || ticket_id == null) {
                
                        var dt = new  DateTime.now_local();
                        _this.name.el.set_text("wip_%s_%s".printf(name,dt.format("%Y_%b_%d")));
                        return;
                }
                
+               
                var ticket = RooTicket.singleton().getById(ticket_id);
                
                _this.name.el.set_text("wip_%s_T%s_%s".printf(name,ticket.id, ticket.summaryToBranchName()));
@@ -309,7 +331,7 @@ public class NewBranch : Object
         
             RooTicket.singleton().loadTickets();
             
-            
+            _this.ticketsel.loading = true;
         
             this.el.clear();                                    
             Gtk.TreeIter iter;
@@ -325,7 +347,6 @@ public class NewBranch : Object
             var tickets = RooTicket.singleton().tickets;
             foreach(var ticket in tickets) {
             
-        
                 el.append(out iter);
                 
                 el.set_value(iter, 0, ticket.id);
@@ -336,6 +357,8 @@ public class NewBranch : Object
                // }
                 
             }
+            
+            _this.ticketsel.loading = false;
              //this.el.set_sort_column_id(0, Gtk.SortType.ASCENDING);          
                                              
         }