Mercurial > repos > IBDev-IBBoard.WarFoundry.GUI.GTK
diff FrmAddEquipment.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/FrmAddEquipment.cs Fri Aug 27 14:44:48 2010 +0000 +++ b/FrmAddEquipment.cs Sun Aug 29 15:09:34 2010 +0000 @@ -16,6 +16,8 @@ private static ILog log = LogManager.GetLogger(typeof(FrmAddEquipment)); public event SingleArgMethodInvoker<UnitEquipmentItem> UnitEquipmentItemChoiceChanged; + public event MethodInvoker UnitEquipmentAmountTypeChanged; + public event MethodInvoker UnitEquipmentAmountChanged; private bool limitsEnabled = false; private bool ratioLimited = false; @@ -29,10 +31,26 @@ CellRendererText equipCell = new CellRendererText(); equipColumn.PackStart(equipCell, true); equipColumn.SetCellDataFunc(equipCell, GtkWarFoundryUtil.RenderWarFoundryObjectName); - lstEquipment.AppendColumn(equipColumn); + lstEquipment.AppendColumn(equipColumn); } - protected virtual void OnSelectionChanged(object o, EventArgs e) + private void OnUnitEquipmentAmountChanged() + { + if (UnitEquipmentAmountChanged != null) + { + UnitEquipmentAmountChanged(); + } + } + + private void OnUnitEquipmentAmountTypeChanged() + { + if (UnitEquipmentAmountChanged != null) + { + UnitEquipmentAmountTypeChanged(); + } + } + + protected void OnSelectionChanged(object o, EventArgs e) { if (UnitEquipmentItemChoiceChanged!=null) { @@ -56,9 +74,26 @@ { log.DebugFormat("IsRatio? {0}. Limits: {1}->{2}, {3}%->{4}%", isRatioLimit, minNumber, maxNumber, minPercent, maxPercent); ratioLimited = isRatioLimit; - SetEnabledState(); numericAmount.SetRange(minNumber, maxNumber); percentageAmount.SetRange(minPercent, maxPercent); + + if (isRatioLimit) + { + if (minPercent == 100) + { + rbEquipAll.Active = true; + } + else + { + rbEquipPercent.Active = true; + } + } + else + { + rbEquipNumeric.Active = true; + } + + SetEnabledState(); } public void SetUnitEquipmentLimitsEnabled(bool isEnabled) @@ -75,8 +110,8 @@ rbEquipPercent.Sensitive = limitsEnabled && minPercentage != 100; percentageAmount.Sensitive = limitsEnabled && minPercentage != 100; double maxPercentage = GetMaxPercentage(); - rbEquipAll.Sensitive = limitsEnabled && maxPercentage == 100; - lblEquipAll.Sensitive = limitsEnabled && maxPercentage == 100; + rbEquipAll.Sensitive = limitsEnabled && ratioLimited && maxPercentage == 100; + lblEquipAll.Sensitive = limitsEnabled && ratioLimited && maxPercentage == 100; } private double GetMaxPercentage() @@ -113,6 +148,22 @@ Respond(ResponseType.Ok); } + public void SetOkayEnabledState (bool enabled) + { + buttonOk.Sensitive = enabled; + } + + protected virtual void SpinButtonValueChanged (object sender, System.EventArgs e) + { + OnUnitEquipmentAmountChanged(); + } + + protected virtual void RadioButtonClicked(object sender, System.EventArgs e) + { + OnUnitEquipmentAmountTypeChanged(); + } + + public UnitEquipmentItem SelectedUnitEquipmentItem { get