X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=StatusIcon.vala;h=64199105d1f39596354e6e65a5de5c91c5b25bb4;hb=aa918439d9cb7113787b05154fa6d00154cbb8a8;hp=c8fc00746c6987e9589b6eda648776f68b6f29cf;hpb=1de86136118a4e36ca84f009476c9b1680020e17;p=gitlive diff --git a/StatusIcon.vala b/StatusIcon.vala index c8fc0074..64199105 100644 --- a/StatusIcon.vala +++ b/StatusIcon.vala @@ -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'); @@ -247,13 +248,14 @@ public class StatusIconA : StatusIcon { this.accel_group = null; this.activate.connect( () => { + + this.pullAll(); + /* GitMonitor.gitmonitor.stop(); var tr = GitRepo.list(); - - for (var i= 0; i< tr.length;i++) { statusicon.set_from_stock( i%2 == 0 ? Gtk.Stock.FULLSCREEN : Gtk.Stock.LEAVE_FULLSCREEN ); @@ -288,6 +290,7 @@ public class StatusIconA : StatusIcon { } } + */ }); @@ -299,60 +302,69 @@ public class StatusIconA : StatusIcon { GitMonitor.gitmonitor.stop(); - var total = tr.length; - + 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 ); var repo = tr.index(i); - //if (!repo.autocommit()) { - //??? should we ignore ones not on autocommit.. - // continue; - //} - //try { - statusicon.set_tooltip_text("pull: " + repo.name); - var str = ""; - repo.pull_async((string res) => { - - total--;` - if (!Regex.match_simple ("Already up-to-date", res) ) { - - - str += str.length > 0 ? "\n" : ""; - str += "Updated: " +repo.name + "\n" + res +"\n"; - } - if (total < 1) { - var notification = new Notify.Notification( - "Pull completed ", - str, - "dialog-information" - ); - notification.set_timeout(20); - notification.show(); - statusicon.set_tooltip_text("Gitlive"); - - - GitMonitor.gitmonitor.start(); - } - }); - // do not care if it's already in sycn.. - + //repo.ref(); + //this.ref(); - - - //} catch(Error e) { - // print("notification or push errror- probably to many in queue.."); - // statusicon.set_from_stock( Gtk.Stock.MEDIA_RECORD ); - // print(e.message); + statusicon.set_tooltip_text("pull: " + repo.name); + + repo.pull_async(this.pullAllCallback); + // do not care if it's already in sycn.. - // } + } + } + uint total = 0; + uint has_error = 0; + string pull_all_error_message = ""; + + 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) ) { + var notification = new Notify.Notification( + "Pull completed ", + "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(); + } + } @@ -392,7 +404,7 @@ public class StatusIconA : StatusIcon { this.accel_group = null; this.activate.connect( () => { - //var ret = imports.Clones.Clones.show(); + Clones.singleton().show(); }); }