X-Git-Url: http://git.roojs.org/?p=gitlive;a=blobdiff_plain;f=StatusIcon.vala;h=7a2500a2c8830de98d4612220916dd0fd4dfaf85;hp=64199105d1f39596354e6e65a5de5c91c5b25bb4;hb=c245640608475ef3270eb6a48c9af03b274d9996;hpb=5d674d9832f0fa809aa61d3efbd2f6d9966cd621 diff --git a/StatusIcon.vala b/StatusIcon.vala index 64199105..7a2500a2 100644 --- a/StatusIcon.vala +++ b/StatusIcon.vala @@ -53,11 +53,11 @@ public class StatusIconA : StatusIcon { this.set_name("gitlive"); this.set_visible(true); - var menu = new MenuA(); + var menu = new GitliveMenu(); menu.ref(); this.button_press_event.connect( ( ev ) =>{ print("button press event called\n"); - + menu.updateMerges(); menu.show_all(); if (this.paused) { @@ -86,6 +86,7 @@ public class StatusIconA : StatusIcon { //print(Array.prototype.slice.call(arguments).join(',')); print("menu activiate called\n"); + menu.updateMerges(); //var menu = this.get('menu'); menu.show_all(); @@ -157,31 +158,86 @@ public class StatusIconA : StatusIcon { } - class MenuA : Gtk.Menu + class GitliveMenu : Gtk.Menu { public ImageMenuItem pause; public ImageMenuItem resume; + public Gtk.MenuItem before_seperator; + public Gtk.MenuItem after_seperator; + - public MenuA() + public GitliveMenu() { - this.pause = new ImageMenuItemA(); + this.pause = new MenuItemPause(); this.append(this.pause); - this.resume = new ImageMenuItemB(); + this.resume = new MenuItemStartCommits(); this.append(this.resume); - this.append(new ImageMenuItemC()); - this.append(new ImageMenuItemD()); - this.append(new ImageMenuItemE()); - this.append(new ImageMenuItemF()); - this.append(new ImageMenuItemG()); - - - + this.append(new MenuItemPullAll()); + this.before_seperator = new Gtk.SeparatorMenuItem(); + this.append(this.before_seperator); + + this.after_seperator = new Gtk.SeparatorMenuItem(); + this.append(this.after_seperator); + //this.append(new MenuItemUpdateTimesheet()); + this.append(new MenuItemManageClones()); + this.append(new MenuItemNewTicket()); + this.append(new MenuItemAbout()); + this.append(new MenuItemQuit()); + this.merge_items = new Gee.ArrayList(); } + public Gee.ArrayList merge_items; - class ImageMenuItemA : ImageMenuItem { + public void updateMerges() + { + // show a list of possible merges on the menu. + foreach (var m in this.merge_items) { + this.remove(m); + } + foreach(var r in GitRepo.singleton().cache.values ) { + GLib.debug("checking %s for branch = %s", r.name, r.getCurrentBranch().name); + if (r.is_master_branch()) { + continue; + } + GLib.debug("checking for activeTicket"); + var t = r.activeTicket; + if (t == null) { + continue; + } + var mi = new MergeMenuItem(r,t); + this.insert (mi,4); //backwards. + this.merge_items.add(mi); + + } + + } + + + class MergeMenuItem : Gtk.MenuItem { + + GitRepo repo; + RooTicket ticket; + + public MergeMenuItem(GitRepo r, RooTicket t) + { + this.repo = r; + this.ticket = t; + + this.label = ("Merge [%s] #%s %s".printf(r.name, t.id , t.summary)); + + this.activate.connect(() => { + MergeBranch.singleton().show(this.ticket, null); + // show merge dialog.. + }); + + } + + } + + + class MenuItemPause : ImageMenuItem { - public ImageMenuItemA() + public MenuItemPause() { //this.set_from_stock( Gtk.Stock.MEDIA_PAUSE ); @@ -207,9 +263,9 @@ public class StatusIconA : StatusIcon { } - class ImageMenuItemB : ImageMenuItem { + class MenuItemStartCommits : ImageMenuItem { - public ImageMenuItemB() + public MenuItemStartCommits() { var image = new Gtk.Image(); @@ -235,13 +291,13 @@ public class StatusIconA : StatusIcon { } - class ImageMenuItemC : ImageMenuItem { + class MenuItemPullAll : ImageMenuItem { - public ImageMenuItemC() + public MenuItemPullAll() { var image = new Gtk.Image(); - image.set_from_stock(Gtk.Stock.FULLSCREEN,Gtk.IconSize.MENU ); + image.set_from_stock(Gtk.Stock.GOTO_BOTTOM,Gtk.IconSize.MENU ); this.set_image (image); this.label= "Pull (Refresh) All"; this.always_show_image = true; @@ -250,47 +306,7 @@ public class StatusIconA : StatusIcon { 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 ); - - 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(); - // do not care if it's already in sycn.. - if (Regex.match_simple ("Already up-to-date", str) ) { - continue; - } - var notification = new Notify.Notification( - "Updated " + repo.name, - str, - "dialog-information" - - ); - - notification.set_timeout(20); - notification.show(); - - } catch(Error e) { - print("notification or push errror- probably to many in queue.."); - statusicon.set_from_stock( Gtk.Stock.MEDIA_RECORD ); - print(e.message); - - } - - } - */ + }); @@ -357,7 +373,7 @@ public class StatusIconA : StatusIcon { GitMonitor.gitmonitor.pauseError(this.pull_all_error_message); return; } - + statusicon.set_tooltip_text("Gitlive"); GitMonitor.gitmonitor.start(); @@ -371,14 +387,14 @@ public class StatusIconA : StatusIcon { } - class ImageMenuItemD : ImageMenuItem { + class MenuItemUpdateTimesheet : ImageMenuItem { - public ImageMenuItemD() + public MenuItemUpdateTimesheet() { var image = new Gtk.Image(); image.set_from_stock(Gtk.Stock.SAVE,Gtk.IconSize.MENU ); - this.set_image (image); + this.set_image (image); this.label= "Update Timesheet"; this.always_show_image = true; this.accel_group = null; @@ -391,29 +407,56 @@ public class StatusIconA : StatusIcon { } - class ImageMenuItemE : ImageMenuItem { + class MenuItemManageClones : ImageMenuItem { - public ImageMenuItemE() + public MenuItemManageClones() { var image = new Gtk.Image(); - image.set_from_stock(Gtk.Stock.FULLSCREEN,Gtk.IconSize.MENU ); + image.set_from_stock(Gtk.Stock.JUSTIFY_FILL,Gtk.IconSize.MENU ); this.set_image (image); this.label= "Manage Clones"; this.always_show_image = true; this.accel_group = null; this.activate.connect( () => { - Clones.singleton().show(); + //GitRepo.updateAll("show_clones"); + Clones.singleton().loadAndShow(); + + // Clones.singleton().show(); }); } } - class ImageMenuItemF : ImageMenuItem { + class MenuItemNewTicket : ImageMenuItem { + + public MenuItemNewTicket() + { + + var image = new Gtk.Image(); + image.set_from_stock(Gtk.Stock.NEW,Gtk.IconSize.MENU ); + this.set_image (image); + this.label= "New Ticket"; + this.always_show_image = true; + this.accel_group = null; + + this.activate.connect( () => { + Ticket.singleton().show(null); + + + // Clones.singleton().show(); + }); + } + + + } + + + class MenuItemAbout : ImageMenuItem { - public ImageMenuItemF() + public MenuItemAbout() { var image = new Gtk.Image(); @@ -441,9 +484,9 @@ public class StatusIconA : StatusIcon { } - class ImageMenuItemG : ImageMenuItem { + class MenuItemQuit : ImageMenuItem { - public ImageMenuItemG() + public MenuItemQuit() { var image = new Gtk.Image();