Mercurial > repos > IBBoard.WarFoundry.GUI.WinForms
annotate FrmEditUnitEquipment.cs @ 113:c1a3993297b1
Re #115: Typing number for equipment amount doesn't update Okay button
* Switch to using ControlTranslator for the EquipmentAmountControl to resolve issues with the VisualStudio form designer erroring out because the translations aren't initialised (they still won't be, but it seems to be happy now)
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Thu, 24 Dec 2009 10:52:03 +0000 |
parents | 3e78af88ceb3 |
children | d3f498514122 |
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 { |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
154 MessageBox.Show(this, "This item is required and cannot be removed. It must have a quantity of at least one or be replaced by an alternative.", "Required item", MessageBoxButtons.OK, MessageBoxIcon.Warning); |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
155 setValue = false; |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
156 } |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
157 else |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
158 { |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
159 DialogResult dr = MessageBox.Show(this, "This will remove the item from the unit. Continue?", "Confirm remove", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); |
36 | 160 |
43
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
161 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
|
162 { |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
163 setValue = false; |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
164 } |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
165 } |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
166 } |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
167 |
101
3e78af88ceb3
Re #179: Make sure that translations are used throughout UI
IBBoard <dev@ibboard.co.uk>
parents:
98
diff
changeset
|
168 double oldAmount = UnitEquipmentUtil.GetEquipmentAmount(unit, equipItem); |
36 | 169 |
43
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
170 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
|
171 { |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
172 if (equipmentAmount.IsRatioEquipmentAmount) |
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 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
|
175 } |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
176 else |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
177 { |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
178 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
|
179 } |
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
180 } |
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 return setValue; |
36 | 183 } |
184 | |
185 private void bttnCancel_Click(object sender, System.EventArgs e) | |
186 { | |
187 this.Close(); | |
188 } | |
189 | |
98
c7afc7824f50
Fixes #218: "Amount too high" warning can result in negative items
IBBoard <dev@ibboard.co.uk>
parents:
85
diff
changeset
|
190 private void SetOkayButton() |
36 | 191 { |
43
7ace7d2249ac
Fixes #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
42
diff
changeset
|
192 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
|
193 bttnOkay.Enabled = equipAmount > 0 || !equipItem.IsRequired; |
36 | 194 } |
195 | |
42
d06c2e390a14
Re #117: Add percentage and number boxes to equipment item dialogs
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
196 private void equipmentAmount_ValueChanged(object sender, EventArgs e) |
36 | 197 { |
98
c7afc7824f50
Fixes #218: "Amount too high" warning can result in negative items
IBBoard <dev@ibboard.co.uk>
parents:
85
diff
changeset
|
198 SetOkayButton(); |
36 | 199 } |
200 } | |
201 } |