GitMonitor.vala
[gitlive] / StatusIcon.vala
index a4f5cfd..6419910 100644 (file)
@@ -39,7 +39,8 @@ public class StatusIconA : StatusIcon {
 
     public bool paused = false;
     public static StatusIconA statusicon;
-     
+    
     public StatusIconA() {
         
         statusicon = this;
@@ -56,7 +57,7 @@ public class StatusIconA : StatusIcon {
         menu.ref();       
                this.button_press_event.connect( ( ev ) =>{
              print("button press event called\n");
-             
             menu.show_all();
             
             if (this.paused) {
@@ -82,7 +83,7 @@ public class StatusIconA : StatusIcon {
            });
        this.popup_menu.connect( (  button,   time) =>{
        //this.button_press_event.connect( (  ) =>{
-               
             //print(Array.prototype.slice.call(arguments).join(','));
             print("menu activiate called\n");
             //var menu = this.get('menu');
@@ -302,7 +303,8 @@ public class StatusIconA : StatusIcon {
                     
                 
                this.total = tr.length;
-                
+                this.has_error = 0;
+                this.pull_all_error_message = "";
                 for (var i= 0; i< tr.length;i++) {
                     statusicon.set_from_stock( 
                                i%2 == 0 ?  Gtk.Stock.FULLSCREEN : Gtk.Stock.LEAVE_FULLSCREEN );
@@ -312,7 +314,7 @@ public class StatusIconA : StatusIcon {
                     //this.ref();
                     
                     statusicon.set_tooltip_text("pull: " + repo.name);
+                                       
                     repo.pull_async(this.pullAllCallback); 
                                 // do not care if it's already in sycn..
                         
@@ -325,28 +327,39 @@ public class StatusIconA : StatusIcon {
         
                }
                uint total = 0; 
+                       uint has_error = 0;
+                       string pull_all_error_message = "";
                
-               void pullAllCallback(GitRepo repo, string res)
+               void pullAllCallback(GitRepo repo, int err, string res)
                {
                        this.total--;
+                       
+                       if (err > 0) {
+                               this.has_error = 1;
+                               this.pull_all_error_message += this.pull_all_error_message.length > 0 ? "\n" : "";
+                               this.pull_all_error_message += "Error Pulling " + repo.name +"\n" + res;
+                       }
+                       
                        if (!Regex.match_simple ("Already up-to-date", res) ) {
-                     
-                       
-                       ret_str += ret_str.length > 0 ? "\n" : "";
-                       ret_str += "Updated: " +repo.name + "\n" + res +"\n";
-                       }
-                       if (this.total < 1) {
-                               var notification = new Notify.Notification( 
+                       var notification = new Notify.Notification( 
                          "Pull completed ",
-                         ret_str,
+                          "Updated: " +repo.name + "\n" + res +"\n",
                             "dialog-information"
                     );
                     notification.set_timeout(20);
                                notification.show();
+                       
+                       }
+                       if (this.total < 1) {
+                               if (this.has_error > 0) {
+                                       GitMonitor.gitmonitor.pauseError(this.pull_all_error_message);
+                                       return;
+                               }
+                       
                                statusicon.set_tooltip_text("Gitlive");
-                 
-                
+                  
                                GitMonitor.gitmonitor.start();
                                //this.unref();
                                //repo.unref();
@@ -391,7 +404,7 @@ public class StatusIconA : StatusIcon {
                 this.accel_group = null;
                 
                 this.activate.connect( () => {
-                 //var ret = imports.Clones.Clones.show();
+                      Clones.singleton().show();
                 });
             }