# HG changeset patch # User IBBoard # Date 1252095062 0 # Node ID 5fafbb1b4592a9b8e23a749aad9397f685f6436e # Parent 2e5448a662b62048d0b276367ac213527b2760e7 Re #145: Add UI to remove units from army * Add initial right-click "remove unit" for GTK app Existing problems: * Right-click occurs before selection changes, so it can be a click out of synch diff -r 2e5448a662b6 -r 5fafbb1b4592 FrmMainWindow.cs --- a/FrmMainWindow.cs Tue Sep 01 19:42:53 2009 +0000 +++ b/FrmMainWindow.cs Fri Sep 04 20:11:02 2009 +0000 @@ -923,10 +923,7 @@ protected virtual void ArmyRowActivated (object o, Gtk.RowActivatedArgs args) { - TreeModel model = treeUnits.Model; - TreeIter iter; - model.GetIter(out iter, args.Path); - object obj = model.GetValue(iter, 0); + object obj = TreeUtils.GetItemAtPath(treeUnits, args.Path); if (obj is IBBoard.WarFoundry.API.Objects.Unit) { @@ -987,5 +984,37 @@ WarFoundryHtmlExporter.GetDefault().ExportArmy(army, filePath); } } + + protected virtual void OnTreeUnitsPopupMenu (object o, Gtk.PopupMenuArgs args) + { + object selectedItem = TreeUtils.GetSelectedItem(treeUnits); + + if (selectedItem is IBBoard.WarFoundry.API.Objects.Unit) + { + Menu menu = new Menu(); + ImageMenuItem delete = new ImageMenuItem("Remove unit"); + delete.Image = new Gtk.Image(Stock.Delete, IconSize.Menu); + delete.Activated+= new EventHandler(OnUnitDelete); + delete.Data["unit"] = selectedItem; + menu.Append(delete); + menu.ShowAll(); + menu.Popup(); + } + } + + private void OnUnitDelete(object o, EventArgs args) + { + RemoveUnitCommand command = new RemoveUnitCommand((IBBoard.WarFoundry.API.Objects.Unit)((ImageMenuItem)o).Data["unit"]); + commandStack.Execute(command); + } + + [GLib.ConnectBefore] + protected virtual void UnitTreeButtonPressed (object o, Gtk.ButtonPressEventArgs args) + { + if (args.Event.Type == Gdk.EventType.ButtonPress && args.Event.Button == 3) + { + OnTreeUnitsPopupMenu(o, null); + } + } } } diff -r 2e5448a662b6 -r 5fafbb1b4592 gtk-gui/IBBoard.WarFoundry.GTK.FrmMainWindow.cs --- a/gtk-gui/IBBoard.WarFoundry.GTK.FrmMainWindow.cs Tue Sep 01 19:42:53 2009 +0000 +++ b/gtk-gui/IBBoard.WarFoundry.GTK.FrmMainWindow.cs Fri Sep 04 20:11:02 2009 +0000 @@ -240,6 +240,8 @@ this.redoActionButton.Activated += new System.EventHandler(this.redoTBButtonActivated); this.miExportAsBasicHtml.Activated += new System.EventHandler(this.OnMiExportAsBasicHtmlActivated); this.treeUnits.RowActivated += new Gtk.RowActivatedHandler(this.ArmyRowActivated); + this.treeUnits.PopupMenu += new Gtk.PopupMenuHandler(this.OnTreeUnitsPopupMenu); + this.treeUnits.ButtonPressEvent += new Gtk.ButtonPressEventHandler(this.UnitTreeButtonPressed); } } } diff -r 2e5448a662b6 -r 5fafbb1b4592 gtk-gui/gui.stetic --- a/gtk-gui/gui.stetic Tue Sep 01 19:42:53 2009 +0000 +++ b/gtk-gui/gui.stetic Fri Sep 04 20:11:02 2009 +0000 @@ -243,6 +243,8 @@ True + + False