public bool paused = false;
public static StatusIconA statusicon;
-
+
+
public StatusIconA() {
statusicon = this;
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) {
});
this.popup_menu.connect( ( button, time) =>{
//this.button_press_event.connect( ( ) =>{
-
+
//print(Array.prototype.slice.call(arguments).join(','));
print("menu activiate called\n");
+ menu.updateMerges();
//var menu = this.get('menu');
menu.show_all();
}
- 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<Gtk.MenuItem>();
+ }
+ public Gee.ArrayList<Gtk.MenuItem> merge_items;
+
+
+ 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.currentBranch.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 ImageMenuItemA : ImageMenuItem {
+ class MenuItemPause : ImageMenuItem {
- public ImageMenuItemA()
+ public MenuItemPause()
{
//this.set_from_stock( Gtk.Stock.MEDIA_PAUSE );
}
- class ImageMenuItemB : ImageMenuItem {
+ class MenuItemStartCommits : ImageMenuItem {
- public ImageMenuItemB()
+ public MenuItemStartCommits()
{
var image = new Gtk.Image();
}
- 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;
}
if (this.total < 1) {
- if (this.has_error) {
- GitMonitor.gitmonitor.pauseError(
-
+ if (this.has_error > 0) {
+ GitMonitor.gitmonitor.pauseError(this.pull_all_error_message);
+ return;
+ }
+
statusicon.set_tooltip_text("Gitlive");
GitMonitor.gitmonitor.start();
}
- 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;
}
- 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( () => {
- //var ret = imports.Clones.Clones.show();
+ //GitRepo.updateAll("show_clones");
+ Clones.singleton().loadAndShow();
+
+ // Clones.singleton().show();
+ });
+ }
+
+
+ }
+
+ 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 ImageMenuItemF : ImageMenuItem {
+
+ class MenuItemAbout : ImageMenuItem {
- public ImageMenuItemF()
+ public MenuItemAbout()
{
var image = new Gtk.Image();
}
- class ImageMenuItemG : ImageMenuItem {
+ class MenuItemQuit : ImageMenuItem {
- public ImageMenuItemG()
+ public MenuItemQuit()
{
var image = new Gtk.Image();