Mercurial > repos > IBDev-IBBoard.WarFoundry.GUI.GTK
diff UIControl/AddEquipmentUIControl.cs @ 61:e7ad676a7344
Re #60: Add UI to add/remove/edit weapons in GTK
* Add events to track equipment amount and amount changing
* Select most appropriate equipment type by default
* Add methods an implementation for enabling/disabling Okay button
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sun, 29 Aug 2010 15:09:34 +0000 |
parents | 293d204e40db |
children | f733073967a2 |
line wrap: on
line diff
--- a/UIControl/AddEquipmentUIControl.cs Fri Aug 27 14:44:48 2010 +0000 +++ b/UIControl/AddEquipmentUIControl.cs Sun Aug 29 15:09:34 2010 +0000 @@ -28,7 +28,15 @@ ui.SetUnitEquipmentLimitsEnabled(false); UnitEquipmentItem[] items = Arrays.Subtract(UnitEquipmentUtil.GetAllowedEquipmentItems(unit), unit.GetEquipment()); ui.SetUnitEquipmentItems(items); + ui.SetOkayEnabledState(false); ui.UnitEquipmentItemChoiceChanged += HandleUiUnitEquipmentItemChoiceChanged; + ui.UnitEquipmentAmountChanged += HandleUnitEquipmentAmountChanged; + ui.UnitEquipmentAmountTypeChanged += HandleUnitEquipmentAmountChanged; + } + + private void HandleUnitEquipmentAmountChanged () + { + ui.SetOkayEnabledState(ui.SelectedUnitEquipmentItem != null && HasNonZeroEquipmentAmount()); } //TODO Make abstract @@ -53,14 +61,33 @@ ui.SetUnitEquipmentLimits(equipIsRatioLimit, minPercent, maxPercent, minNumber, maxNumber); ui.SetUnitEquipmentLimitsEnabled(true); + ui.SetOkayEnabledState(HasNonZeroEquipmentAmount()); } else { ui.SetUnitEquipmentLimits(true, 0, 0, 0, 0); ui.SetUnitEquipmentLimitsEnabled(false); + ui.SetOkayEnabledState(false); } } + private bool HasNonZeroEquipmentAmount() + { + bool nonZero; + + if (ui.IsRatioEquipmentAmount) + { + nonZero = (ui.EquipmentPercentageAmount > 0); + } + + else + { + nonZero = (ui.EquipmentNumericAmount > 0); + } + + return nonZero; + } + private double RoundPercentage(double percent) { return Math.Round(percent, 1);