Mercurial > repos > IBBoard.WarFoundry.GUI.WinForms
annotate FrmEditUnitEquipment.cs @ 237:ea5cb50ebe5e
Fixes #384: Validation warnings don't get cleared when creating new armies
* Check whether army is valid when it changes (also means we validate on load as well as clearing on close)
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 21 Jan 2012 16:51:07 +0000 |
parents | d3f498514122 |
children |
rev | line source |
---|---|
36 | 1 // This file (FrmEditUnitEquipment.cs) is a part of the IBBoard.WarFoundry.GUI.WinForms project and is copyright 2009 IBBoard. |
2 // | |
3 // The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license. | |
4 | |
5 using System; | |
6 using System.Drawing; | |
7 using System.ComponentModel; | |
8 using System.Windows.Forms; | |
9 using IBBoard.Commands; | |
85
0bb9f40d44eb
Re #88: Complete initial WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
80
diff
changeset
|
10 using IBBoard.Lang; |
80
c243b043aa62
Re #179: Make sure that translations are used throughout UI
IBBoard <dev@ibboard.co.uk>
parents:
77
diff
changeset
|
11 using IBBoard.Windows.Forms; |
c243b043aa62
Re #179: Make sure that translations are used throughout UI
IBBoard <dev@ibboard.co.uk>
parents:
77
diff
changeset
|
12 using IBBoard.Windows.Forms.I18N; |
36 | 13 using IBBoard.WarFoundry.API; |
14 using IBBoard.WarFoundry.API.Commands; | |
15 using IBBoard.WarFoundry.API.Objects; | |
101
3e78af88ceb3
Re #179: Make sure that translations are used throughout UI
IBBoard <dev@ibboard.co.uk>
parents:
98
diff
changeset
|
16 using IBBoard.WarFoundry.API.Util; |
36 | 17 |
42
d06c2e390a14
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
18 namespace IBBoard.WarFoundry.GUI.WinForms |
36 | 19 { |
20 /// <summary> | |
21 /// Summary description for FrmEditUnitEquipment. | |
22 /// </summary> | |
85
0bb9f40d44eb
Re #88: Complete initial WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
80
diff
changeset
|
23 public class FrmEditUnitEquipment : IBBForm |
36 | 24 { |
25 private Unit unit; | |
26 private UnitEquipmentItem equipItem; | |
27 private CommandStack commandStack; | |
80
c243b043aa62
Re #179: Make sure that translations are used throughout UI
IBBoard <dev@ibboard.co.uk>
parents:
77
diff
changeset
|
28 private IBBLabel lblAmount; |
c243b043aa62
Re #179: Make sure that translations are used throughout UI
IBBoard <dev@ibboard.co.uk>
parents:
77
diff
changeset
|
29 private IBBButton bttnCancel; |
c243b043aa62
Re #179: Make sure that translations are used throughout UI
IBBoard <dev@ibboard.co.uk>
parents:
77
diff
changeset
|
30 private IBBButton bttnOkay; |
42
d06c2e390a14
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
31 private IBBoard.WarFoundry.GUI.WinForms.UI.EquipmentAmountControl equipmentAmount; |
36 | 32 /// <summary> |
33 /// Required designer variable. | |
34 /// </summary> | |
35 private System.ComponentModel.Container components = null; | |
36 | |
37 public FrmEditUnitEquipment(Unit unit, UnitEquipmentItem equipItem, CommandStack stack) | |
38 { | |
39 commandStack = stack; | |
40 this.unit = unit; | |
41 this.equipItem = equipItem; | |
42 InitializeComponent(); | |
85
0bb9f40d44eb
Re #88: Complete initial WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
80
diff
changeset
|
43 ControlTranslator.TranslateControl(this); |
0bb9f40d44eb
Re #88: Complete initial WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
80
diff
changeset
|
44 this.Text = Translation.GetTranslation("FrmEditUnitEquipment", "edit {0} for {1}", equipItem.Name, unit.Name); |
42
d06c2e390a14
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
45 equipmentAmount.SetUnit(unit); |
d06c2e390a14
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
46 equipmentAmount.SetUnitEquipmentItem(equipItem); |
36 | 47 } |
48 | |
49 /// <summary> | |
50 /// Clean up any resources being used. | |
51 /// </summary> | |
52 protected override void Dispose( bool disposing ) | |
53 { | |
54 if( disposing ) | |
55 { | |
56 if(components != null) | |
34
3ceb0efd261f
Re #118: Allow equipment amounts of "ratio" equipment to be define as absolute or ratio amounts
IBBoard <dev@ibboard.co.uk>
parents:
24
diff
changeset
|
57 { |
36 | 58 components.Dispose(); |
59 } | |
60 } | |
61 base.Dispose( disposing ); | |
62 } | |
63 | |
64 #region Windows Form Designer generated code | |
65 /// <summary> | |
66 /// Required method for Designer support - do not modify | |
67 /// the contents of this method with the code editor. | |
68 /// </summary> | |
69 private void InitializeComponent() | |
70 { | |
85
0bb9f40d44eb
Re #88: Complete initial WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
80
diff
changeset
|
71 this.lblAmount = new IBBoard.Windows.Forms.IBBLabel(); |
0bb9f40d44eb
Re #88: Complete initial WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
80
diff
changeset
|
72 this.bttnCancel = new IBBoard.Windows.Forms.IBBButton(); |
0bb9f40d44eb
Re #88: Complete initial WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
80
diff
changeset
|
73 this.bttnOkay = new IBBoard.Windows.Forms.IBBButton(); |
42
d06c2e390a14
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
74 this.equipmentAmount = new IBBoard.WarFoundry.GUI.WinForms.UI.EquipmentAmountControl(); |
36 | 75 this.SuspendLayout(); |
76 // | |
77 // lblAmount | |
78 // | |
85
0bb9f40d44eb
Re #88: Complete initial WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
80
diff
changeset
|
79 this.lblAmount.Location = new System.Drawing.Point(12, 8); |
36 | 80 this.lblAmount.Name = "lblAmount"; |
85
0bb9f40d44eb
Re #88: Complete initial WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
80
diff
changeset
|
81 this.lblAmount.Size = new System.Drawing.Size(68, 74); |
36 | 82 this.lblAmount.TabIndex = 2; |
83 this.lblAmount.Text = "amount"; | |
84 this.lblAmount.TextAlign = System.Drawing.ContentAlignment.TopRight; | |
85 // | |
86 // bttnCancel | |
87 // | |
88 this.bttnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; | |
89 this.bttnCancel.FlatStyle = System.Windows.Forms.FlatStyle.System; | |
42
d06c2e390a14
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
90 this.bttnCancel.Location = new System.Drawing.Point(153, 95); |
36 | 91 this.bttnCancel.Name = "bttnCancel"; |
42
d06c2e390a14
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
92 this.bttnCancel.Size = new System.Drawing.Size(75, 23); |
36 | 93 this.bttnCancel.TabIndex = 3; |
94 this.bttnCancel.Text = "cancel"; | |
95 this.bttnCancel.Click += new System.EventHandler(this.bttnCancel_Click); | |
96 // | |
97 // bttnOkay | |
98 // | |
99 this.bttnOkay.Enabled = false; | |
100 this.bttnOkay.FlatStyle = System.Windows.Forms.FlatStyle.System; | |
42
d06c2e390a14
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
101 this.bttnOkay.Location = new System.Drawing.Point(12, 95); |
36 | 102 this.bttnOkay.Name = "bttnOkay"; |
42
d06c2e390a14
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
103 this.bttnOkay.Size = new System.Drawing.Size(75, 23); |
36 | 104 this.bttnOkay.TabIndex = 4; |
105 this.bttnOkay.Text = "okay"; | |
106 this.bttnOkay.Click += new System.EventHandler(this.bttnOkay_Click); | |
107 // | |
42
d06c2e390a14
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
108 // equipmentAmount |
36 | 109 // |
42
d06c2e390a14
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
110 this.equipmentAmount.Location = new System.Drawing.Point(88, 5); |
d06c2e390a14
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
111 this.equipmentAmount.Name = "equipmentAmount"; |
d06c2e390a14
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
112 this.equipmentAmount.Size = new System.Drawing.Size(155, 77); |
d06c2e390a14
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
113 this.equipmentAmount.TabIndex = 5; |
d06c2e390a14
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
114 this.equipmentAmount.ValueChanged += new System.EventHandler(this.equipmentAmount_ValueChanged); |
36 | 115 // |
116 // FrmEditUnitEquipment | |
117 // | |
118 this.AcceptButton = this.bttnOkay; | |
119 this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); | |
120 this.CancelButton = this.bttnCancel; | |
42
d06c2e390a14
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
121 this.ClientSize = new System.Drawing.Size(240, 130); |
36 | 122 this.ControlBox = false; |
42
d06c2e390a14
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
123 this.Controls.Add(this.equipmentAmount); |
36 | 124 this.Controls.Add(this.bttnOkay); |
125 this.Controls.Add(this.bttnCancel); | |
126 this.Controls.Add(this.lblAmount); | |
127 this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; | |
128 this.Name = "FrmEditUnitEquipment"; | |
129 this.ShowInTaskbar = false; | |
130 this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; | |
131 this.Text = "FrmEditUnitEquipment"; | |
132 this.ResumeLayout(false); | |
133 | |
134 } | |
135 #endregion | |
136 | |
137 private void bttnOkay_Click(object sender, System.EventArgs e) | |
138 { | |
43
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
139 if (SetValue()) |
36 | 140 { |
141 this.Close(); | |
142 } | |
143 } | |
144 | |
43
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
145 private bool SetValue() |
36 | 146 { |
43
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
147 bool setValue = true; |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
148 double amount = equipmentAmount.EquipmentAmount; |
36 | 149 |
43
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
150 if (amount == 0) |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
151 { |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
152 if (equipItem.IsRequired) |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
153 { |
156
d3f498514122
Fixes #283: "Confirm Remove" for equipment dialog isn't translatable
IBBoard <dev@ibboard.co.uk>
parents:
101
diff
changeset
|
154 string requiredText = "this item is required and cannot be removed - it must exist or be replaced"; |
d3f498514122
Fixes #283: "Confirm Remove" for equipment dialog isn't translatable
IBBoard <dev@ibboard.co.uk>
parents:
101
diff
changeset
|
155 string requiredTitle = "required item"; |
d3f498514122
Fixes #283: "Confirm Remove" for equipment dialog isn't translatable
IBBoard <dev@ibboard.co.uk>
parents:
101
diff
changeset
|
156 requiredText = Translation.GetTranslation("removeRequiredEquipmentText", requiredText); |
d3f498514122
Fixes #283: "Confirm Remove" for equipment dialog isn't translatable
IBBoard <dev@ibboard.co.uk>
parents:
101
diff
changeset
|
157 requiredTitle = Translation.GetTranslation("removeRequiredEquipmentTitle", requiredTitle); |
d3f498514122
Fixes #283: "Confirm Remove" for equipment dialog isn't translatable
IBBoard <dev@ibboard.co.uk>
parents:
101
diff
changeset
|
158 MessageBox.Show(this, requiredText, requiredTitle, MessageBoxButtons.OK, MessageBoxIcon.Warning); |
43
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
159 setValue = false; |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
160 } |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
161 else |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
162 { |
156
d3f498514122
Fixes #283: "Confirm Remove" for equipment dialog isn't translatable
IBBoard <dev@ibboard.co.uk>
parents:
101
diff
changeset
|
163 string removeEquipText = "remove equipment item from unit?"; |
d3f498514122
Fixes #283: "Confirm Remove" for equipment dialog isn't translatable
IBBoard <dev@ibboard.co.uk>
parents:
101
diff
changeset
|
164 string removeEquipTitle = "confirm removing equipment"; |
d3f498514122
Fixes #283: "Confirm Remove" for equipment dialog isn't translatable
IBBoard <dev@ibboard.co.uk>
parents:
101
diff
changeset
|
165 removeEquipText = Translation.GetTranslation("removeEquipmentText", removeEquipText); |
d3f498514122
Fixes #283: "Confirm Remove" for equipment dialog isn't translatable
IBBoard <dev@ibboard.co.uk>
parents:
101
diff
changeset
|
166 removeEquipTitle = Translation.GetTranslation("removeEquipmentTitle", removeEquipTitle); |
d3f498514122
Fixes #283: "Confirm Remove" for equipment dialog isn't translatable
IBBoard <dev@ibboard.co.uk>
parents:
101
diff
changeset
|
167 DialogResult dr = MessageBox.Show(this, removeEquipText, removeEquipTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); |
36 | 168 |
43
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
169 if (dr != DialogResult.Yes) |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
170 { |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
171 setValue = false; |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
172 } |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
173 } |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
174 } |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
175 |
101
3e78af88ceb3
Re #179: Make sure that translations are used throughout UI
IBBoard <dev@ibboard.co.uk>
parents:
98
diff
changeset
|
176 double oldAmount = UnitEquipmentUtil.GetEquipmentAmount(unit, equipItem); |
36 | 177 |
43
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
178 if (setValue && oldAmount != amount) |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
179 { |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
180 if (equipmentAmount.IsRatioEquipmentAmount) |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
181 { |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
182 commandStack.Execute(new SetUnitEquipmentRatioAmountCommand(unit, equipItem, amount)); |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
183 } |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
184 else |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
185 { |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
186 commandStack.Execute(new SetUnitEquipmentNumericAmountCommand(unit, equipItem, (int)amount)); |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
187 } |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
188 } |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
189 |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
190 return setValue; |
36 | 191 } |
192 | |
193 private void bttnCancel_Click(object sender, System.EventArgs e) | |
194 { | |
195 this.Close(); | |
196 } | |
197 | |
98
c7afc7824f50
Fixes #218: "Amount too high" warning can result in negative items
IBBoard <dev@ibboard.co.uk>
parents:
85
diff
changeset
|
198 private void SetOkayButton() |
36 | 199 { |
43
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
200 double equipAmount = equipmentAmount.EquipmentAmount; |
98
c7afc7824f50
Fixes #218: "Amount too high" warning can result in negative items
IBBoard <dev@ibboard.co.uk>
parents:
85
diff
changeset
|
201 bttnOkay.Enabled = equipAmount > 0 || !equipItem.IsRequired; |
36 | 202 } |
203 | |
42
d06c2e390a14
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
204 private void equipmentAmount_ValueChanged(object sender, EventArgs e) |
36 | 205 { |
98
c7afc7824f50
Fixes #218: "Amount too high" warning can result in negative items
IBBoard <dev@ibboard.co.uk>
parents:
85
diff
changeset
|
206 SetOkayButton(); |
36 | 207 } |
208 } | |
209 } |