Mercurial > repos > IBDev-IBBoard.WarFoundry.GUI.GTK
comparison UIControl/AbstractBaseEquipmentUIControl.cs @ 70:4b82515586ac
Re #60: Add UI to add/remove/edit weapons in GTK
* Fix widget enabling/disabling (sometimes enabling ratio input for numeric limit)
* Correct behaviour of Edit dialog (setting wrong value on edit)
* Add setting of limits based on specific equipment item to base dialog controller
* Make sure that we catch all radio button click events from Edit dialog
* Add ability to ignore and listen to widgets to make sure that changes don't cascade
TODO: See if code can be tidied up and common classes created
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 06 Nov 2010 17:03:13 +0000 |
parents | 3b4a646b4054 |
children | fac0636ae13b |
comparison
equal
deleted
inserted
replaced
69:3b4a646b4054 | 70:4b82515586ac |
---|---|
31 private void SetupUI() | 31 private void SetupUI() |
32 { | 32 { |
33 ui = CreateEquipmentUI(); | 33 ui = CreateEquipmentUI(); |
34 ui.SetUnitEquipmentLimitsEnabled(false); | 34 ui.SetUnitEquipmentLimitsEnabled(false); |
35 ui.SetOkayEnabledState(false); | 35 ui.SetOkayEnabledState(false); |
36 ui.UnitEquipmentAmountChanged += SetUnitEquipmentValues; | |
37 ui.UnitEquipmentAmountTypeChanged += SetUnitEquipmentValues; | |
38 CompleteUISetup(); | 36 CompleteUISetup(); |
37 ui.UnitEquipmentAmountChanged += HandleUnitEquipmentAmountChanged; | |
38 ui.UnitEquipmentAmountTypeChanged += HandleUnitEquipmentAmountChanged; | |
39 ui.ListenToWidgets(); | |
39 } | 40 } |
40 | 41 |
41 /// <summary> | 42 /// <summary> |
42 /// Creates the UI component that will be displayed to the user and returns it | 43 /// Creates the UI component that will be displayed to the user and returns it |
43 /// </summary> | 44 /// </summary> |
56 //Do nothing | 57 //Do nothing |
57 } | 58 } |
58 | 59 |
59 protected void HandleUnitEquipmentAmountChanged() | 60 protected void HandleUnitEquipmentAmountChanged() |
60 { | 61 { |
62 SetUnitEquipmentValuesFromUI(); | |
63 } | |
64 | |
65 protected void SetUnitEquipmentLimits(UnitEquipmentItem equip) | |
66 { | |
67 ui.IgnoreWidgets(); | |
68 | |
69 if (equip != null) | |
70 { | |
71 bool equipIsRatioLimit = UnitEquipmentUtil.IsEquipmentRatioLimited(unit, equip); | |
72 maxPercentage = GetMaxPercentageLimit(equip); | |
73 minPercentage = GetMinPercentageLimit(equip); | |
74 maxNumber = GetMaxNumericLimit(equip); | |
75 minNumber = GetMinNumericLimit(equip); | |
76 | |
77 ui.SetUnitEquipmentLimits(equipIsRatioLimit, minPercentage, maxPercentage, minNumber, maxNumber); | |
78 ui.SetUnitEquipmentLimitsEnabled(true); | |
79 ui.SetOkayEnabledState(HasNonZeroEquipmentAmount()); | |
80 SetEquipmentAmountControlEnabledStates(); | |
81 } | |
82 else | |
83 { | |
84 maxPercentage = minPercentage = 0; | |
85 maxNumber = minNumber = 0; | |
86 ui.SetUnitEquipmentLimits(false, minPercentage, maxPercentage, minNumber, maxNumber); | |
87 ui.SetUnitEquipmentLimitsEnabled(false); | |
88 ui.SetOkayEnabledState(false); | |
89 } | |
90 | |
91 ui.ListenToWidgets(); | |
92 } | |
93 | |
94 protected void SetUnitEquipmentValuesFromEquipment(UnitEquipmentItem equip) | |
95 { | |
96 isRatioAmount = UnitEquipmentUtil.GetEquipmentAmountIsRatio(unit, equip); | |
97 equipmentAmount = UnitEquipmentUtil.GetEquipmentAmount(unit, equip); | |
61 SetUnitEquipmentValues(); | 98 SetUnitEquipmentValues(); |
62 } | 99 SetEquipmentAmountControlEnabledStates(); |
63 | 100 } |
101 | |
64 /// <summary> | 102 /// <summary> |
65 /// Sets the unit equipment values on the UI | 103 /// Sets the unit equipment values on the UI |
66 /// </summary> | 104 /// </summary> |
67 | 105 |
68 protected void SetUnitEquipmentValues() | 106 protected void SetUnitEquipmentValuesFromUI() |
69 { | 107 { |
70 ui.SetOkayEnabledState(HasNonZeroEquipmentAmount()); | |
71 isRatioAmount = ui.IsRatioEquipmentAmount; | 108 isRatioAmount = ui.IsRatioEquipmentAmount; |
72 | 109 |
73 if (isRatioAmount) | 110 if (isRatioAmount) |
74 { | 111 { |
75 equipmentAmount = ui.EquipmentPercentageAmount; | 112 equipmentAmount = ui.EquipmentPercentageAmount; |
76 SetEquipmentAmountsFromPercentage(equipmentAmount); | |
77 } | 113 } |
78 else | 114 else |
79 { | 115 { |
80 int equipmentIntAmount = ui.EquipmentNumericAmount; | 116 int equipmentIntAmount = ui.EquipmentNumericAmount; |
81 equipmentAmount = equipmentIntAmount; | 117 equipmentAmount = equipmentIntAmount; |
118 } | |
119 | |
120 SetUnitEquipmentValues(); | |
121 } | |
122 | |
123 private void SetUnitEquipmentValues() | |
124 { | |
125 ui.IgnoreWidgets(); | |
126 | |
127 if (isRatioAmount) | |
128 { | |
129 SetEquipmentAmountsFromPercentage(equipmentAmount); | |
130 } | |
131 else | |
132 { | |
133 int equipmentIntAmount = (int)equipmentAmount; | |
82 SetEquipmentAmountsFromNumber(equipmentIntAmount); | 134 SetEquipmentAmountsFromNumber(equipmentIntAmount); |
83 } | 135 } |
136 | |
137 ui.SetOkayEnabledState(equipmentAmount != 0); | |
138 ui.ListenToWidgets(); | |
84 } | 139 } |
85 | 140 |
86 private void SetEquipmentAmountsFromPercentage(double equipAmount) | 141 private void SetEquipmentAmountsFromPercentage(double equipAmount) |
87 { | 142 { |
88 if (equipAmount > maxPercentage) | 143 if (equipAmount > maxPercentage) |