Mercurial > repos > IBDev-IBBoard.WarFoundry.GUI.GTK
diff Widgets/UnitDisplayWidget.cs @ 59:c3415c6df551
Re #60: Add UI to add/remove/edit weapons in GTK
* Handle updating of the equipment list on add/remove
* Move to a ListStore so that we don't get indentation
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Fri, 27 Aug 2010 10:55:58 +0000 |
parents | 7bba99c368c8 |
children | 04c0f6a7625c |
line wrap: on
line diff
--- a/Widgets/UnitDisplayWidget.cs Thu Aug 26 19:34:57 2010 +0000 +++ b/Widgets/UnitDisplayWidget.cs Fri Aug 27 10:55:58 2010 +0000 @@ -12,6 +12,7 @@ using IBBoard.WarFoundry.GUI.GTK.UIControl; using IBBoard.WarFoundry.API.Objects; using IBBoard.WarFoundry.API.Util; +using IBBoard.GtkSharp; namespace IBBoard.WarFoundry.GTK.Widgets { @@ -38,8 +39,9 @@ } unitSize.SetRange(unit.UnitType.MinSize, max); - unit.NameChanged+= new StringValChangedDelegate(UnitNameChanged); - unit.UnitSizeChanged+= new IntValChangedDelegate(UnitSizeChanged); + unit.NameChanged += new StringValChangedDelegate(UnitNameChanged); + unit.UnitSizeChanged += new IntValChangedDelegate(UnitSizeChanged); + unit.UnitEquipmentAmountChanged += HandleUnitUnitEquipmentAmountChanged; SetStats(); SetWeapons(); } @@ -91,8 +93,8 @@ CellRendererText renderer = new CellRendererText(); equipmentList.AppendColumn("", renderer, new TreeCellDataFunc(RenderEquipmentLine)); + ListStore model = new ListStore(typeof(UnitEquipmentItem)); - TreeStore model = new TreeStore(typeof(UnitEquipmentItem)); foreach (UnitEquipmentItem item in unit.GetEquipment()) { model.AppendValues(item); @@ -148,7 +150,6 @@ amountString = Translation.GetTranslation("equipmentChoiceAmountPercentage", "{0}% ({1})", amount, number); } } - else { amountString = Translation.GetTranslation("equipmentChoiceAmountNumber", "{0}", amount); @@ -172,6 +173,21 @@ unitSize.Value = newValue; } + private void HandleUnitUnitEquipmentAmountChanged(WarFoundryObject obj, double oldValue, double newValue) + { + if (oldValue == 0) + { + ((ListStore)equipmentList.Model).AppendValues(obj); + } + else if (newValue == 0) + { + TreeIter treeIter = TreeUtils.GetItemIter(equipmentList, obj); + ((ListStore)equipmentList.Model).Remove(ref treeIter); + } + + equipmentList.QueueDraw(); + } + protected virtual void OnUnitSizeFocusOut (object o, Gtk.FocusOutEventArgs args) { SetNewUnitSize();