Mercurial > repos > IBDev-IBBoard.WarFoundry.GUI.GTK
annotate FrmNewArmy.cs @ 89:31d54f67d50d
Re #308: Make GTK# UI translatable
* Start to make use of TranslatableButtons now that we've finally got them working and usable
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Thu, 30 Dec 2010 21:00:00 +0000 |
parents | 9515b57ba752 |
children | b4416ca69153 |
rev | line source |
---|---|
19 | 1 // This file (FrmNewArmy.cs) is a part of the IBBoard.WarFoundry.GTK project and is copyright 2008, 2009 IBBoard. |
0 | 2 // |
19 | 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. |
0 | 4 |
5 using System; | |
6 using Gtk; | |
7 using IBBoard.Lang; | |
8 using IBBoard.WarFoundry.API; | |
9 using IBBoard.WarFoundry.API.Objects; | |
36
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
10 using IBBoard.GtkSharp; |
0 | 11 using log4net; |
52
4bad8cb3f889
Re #60: Add UI to add/remove/edit weapons in GTK
IBBoard <dev@ibboard.co.uk>
parents:
36
diff
changeset
|
12 using IBBoard.WarFoundry.GUI.GTK.Util; |
76
7055b24cfc79
Re #308: Make GTK# UI translatable
IBBoard <dev@ibboard.co.uk>
parents:
75
diff
changeset
|
13 using IBBoard.GtkSharp.Translatable; |
0 | 14 |
77
68804784bf6f
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
76
diff
changeset
|
15 namespace IBBoard.WarFoundry.GUI.GTK |
0 | 16 { |
76
7055b24cfc79
Re #308: Make GTK# UI translatable
IBBoard <dev@ibboard.co.uk>
parents:
75
diff
changeset
|
17 public partial class FrmNewArmy : TranslatableDialog, ITranslatable |
0 | 18 { |
19 private ILog logger = LogManager.GetLogger(typeof(FrmNewArmy)); | |
20 private Race race; | |
21 private string armyName; | |
22 private int pointsValue; | |
77
68804784bf6f
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
76
diff
changeset
|
23 |
0 | 24 public FrmNewArmy(GameSystem gameSystem) |
25 { | |
26 this.Build(); | |
27 | |
36
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
28 GameSystem[] gameSystems = WarFoundryLoader.GetDefault().GetGameSystems(); |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
29 ComboBoxUtils.FillCombo(systemCombo, gameSystems, delegate(GameSystem sys){return sys.Name;}); |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
30 |
75
2ceae5d685d8
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
52
diff
changeset
|
31 lstRaces.Selection.Changed += new EventHandler(OnSelectionChanged); |
2ceae5d685d8
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
52
diff
changeset
|
32 |
2ceae5d685d8
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
52
diff
changeset
|
33 TreeViewColumn raceColumn = new TreeViewColumn(); |
84
9db2112b31d7
Fixes #333: GTK interface doesn't auto-select race if only one exists
IBBoard <dev@ibboard.co.uk>
parents:
77
diff
changeset
|
34 raceColumn.Title = Translation.GetTranslation("frmNewArmyRaceColumn", "race"); |
75
2ceae5d685d8
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
52
diff
changeset
|
35 CellRendererText raceCell = new CellRendererText(); |
2ceae5d685d8
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
52
diff
changeset
|
36 raceColumn.PackStart(raceCell, true); |
2ceae5d685d8
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
52
diff
changeset
|
37 lstRaces.AppendColumn(raceColumn); |
2ceae5d685d8
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
52
diff
changeset
|
38 raceColumn.SetCellDataFunc(raceCell, GtkWarFoundryUtil.RenderWarFoundryObjectName); |
85
bfb29a60b802
Re #308: Make GTK# UI translatable
IBBoard <dev@ibboard.co.uk>
parents:
84
diff
changeset
|
39 Translate(); |
75
2ceae5d685d8
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
52
diff
changeset
|
40 |
36
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
41 if (gameSystem != null) |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
42 { |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
43 ComboBoxUtils.SelectItem(systemCombo, gameSystem); |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
44 } |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
45 else if (gameSystems.Length == 1) |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
46 { |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
47 ComboBoxUtils.SelectIndex(systemCombo, 0); |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
48 } |
75
2ceae5d685d8
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
52
diff
changeset
|
49 } |
77
68804784bf6f
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
76
diff
changeset
|
50 |
85
bfb29a60b802
Re #308: Make GTK# UI translatable
IBBoard <dev@ibboard.co.uk>
parents:
84
diff
changeset
|
51 protected override void Translate() |
bfb29a60b802
Re #308: Make GTK# UI translatable
IBBoard <dev@ibboard.co.uk>
parents:
84
diff
changeset
|
52 { |
bfb29a60b802
Re #308: Make GTK# UI translatable
IBBoard <dev@ibboard.co.uk>
parents:
84
diff
changeset
|
53 base.Translate(); |
86
9515b57ba752
Re #308: Make GTK# UI translatable
IBBoard <dev@ibboard.co.uk>
parents:
85
diff
changeset
|
54 ControlTranslator.TranslateButtons(bttnCreate, bttnCancel); |
85
bfb29a60b802
Re #308: Make GTK# UI translatable
IBBoard <dev@ibboard.co.uk>
parents:
84
diff
changeset
|
55 } |
bfb29a60b802
Re #308: Make GTK# UI translatable
IBBoard <dev@ibboard.co.uk>
parents:
84
diff
changeset
|
56 |
0 | 57 protected virtual void OnSelectionChanged(object o, EventArgs e) |
58 { | |
36
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
59 logger.Debug("Race selection changed"); |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
60 SetOkayButtonState(); |
0 | 61 } |
77
68804784bf6f
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
76
diff
changeset
|
62 |
36
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
63 private void SetOkayButtonState() |
0 | 64 { |
75
2ceae5d685d8
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
52
diff
changeset
|
65 bttnCreate.Sensitive = (lstRaces.Selection.CountSelectedRows() == 1 && txtArmyName.Text != "" && sbPointsValue.Value > 0); |
0 | 66 } |
67 | |
75
2ceae5d685d8
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
52
diff
changeset
|
68 protected virtual void OnCreateClicked(object sender, System.EventArgs e) |
0 | 69 { |
70 TreeModel model; | |
71 TreeIter iter; | |
75
2ceae5d685d8
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
52
diff
changeset
|
72 lstRaces.Selection.GetSelected(out model, out iter); |
2ceae5d685d8
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
52
diff
changeset
|
73 race = (Race)model.GetValue(iter, 0); |
0 | 74 armyName = txtArmyName.Text; |
75 pointsValue = (int)sbPointsValue.Value; | |
76 Respond(ResponseType.Ok); | |
77 } | |
78 | |
75
2ceae5d685d8
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
52
diff
changeset
|
79 protected virtual void OnCancelClicked(object sender, System.EventArgs e) |
0 | 80 { |
81 Respond(ResponseType.Cancel); | |
82 } | |
83 | |
75
2ceae5d685d8
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
52
diff
changeset
|
84 protected virtual void OnTextChanged(object sender, System.EventArgs e) |
0 | 85 { |
36
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
86 SetOkayButtonState(); |
0 | 87 } |
88 | |
75
2ceae5d685d8
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
52
diff
changeset
|
89 protected virtual void OnSpinChangeValue(object o, Gtk.ChangeValueArgs args) |
0 | 90 { |
36
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
91 SetOkayButtonState(); |
0 | 92 } |
93 | |
75
2ceae5d685d8
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
52
diff
changeset
|
94 protected virtual void OnSpinValueChanged(object sender, System.EventArgs e) |
0 | 95 { |
36
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
96 SetOkayButtonState(); |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
97 } |
77
68804784bf6f
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
76
diff
changeset
|
98 |
75
2ceae5d685d8
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
52
diff
changeset
|
99 protected virtual void OnSystemComboChanged(object sender, System.EventArgs e) |
36
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
100 { |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
101 GameSystem system = ComboBoxUtils.GetSelectedItem<GameSystem>(systemCombo); |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
102 SetRaces(system); |
84
9db2112b31d7
Fixes #333: GTK interface doesn't auto-select race if only one exists
IBBoard <dev@ibboard.co.uk>
parents:
77
diff
changeset
|
103 ListStore model = (ListStore)lstRaces.Model; |
9db2112b31d7
Fixes #333: GTK interface doesn't auto-select race if only one exists
IBBoard <dev@ibboard.co.uk>
parents:
77
diff
changeset
|
104 |
9db2112b31d7
Fixes #333: GTK interface doesn't auto-select race if only one exists
IBBoard <dev@ibboard.co.uk>
parents:
77
diff
changeset
|
105 if (model.IterNChildren() == 1) |
9db2112b31d7
Fixes #333: GTK interface doesn't auto-select race if only one exists
IBBoard <dev@ibboard.co.uk>
parents:
77
diff
changeset
|
106 { |
9db2112b31d7
Fixes #333: GTK interface doesn't auto-select race if only one exists
IBBoard <dev@ibboard.co.uk>
parents:
77
diff
changeset
|
107 TreeIter iter; |
9db2112b31d7
Fixes #333: GTK interface doesn't auto-select race if only one exists
IBBoard <dev@ibboard.co.uk>
parents:
77
diff
changeset
|
108 model.GetIterFirst(out iter); |
9db2112b31d7
Fixes #333: GTK interface doesn't auto-select race if only one exists
IBBoard <dev@ibboard.co.uk>
parents:
77
diff
changeset
|
109 lstRaces.Selection.SelectIter(iter); |
9db2112b31d7
Fixes #333: GTK interface doesn't auto-select race if only one exists
IBBoard <dev@ibboard.co.uk>
parents:
77
diff
changeset
|
110 } |
9db2112b31d7
Fixes #333: GTK interface doesn't auto-select race if only one exists
IBBoard <dev@ibboard.co.uk>
parents:
77
diff
changeset
|
111 |
36
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
112 logger.Debug("System selection changed: " + (system == null ? "null" : system.Name)); |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
113 SetOkayButtonState(); |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
114 } |
77
68804784bf6f
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
76
diff
changeset
|
115 |
36
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
116 private void SetRaces(GameSystem system) |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
117 { |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
118 ListStore store = new ListStore(typeof(Race)); |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
119 |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
120 if (system != null) |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
121 { |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
122 foreach (Race race in WarFoundryLoader.GetDefault().GetRaces(system)) |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
123 { |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
124 store.AppendValues(race); |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
125 } |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
126 } |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
127 |
d68992a831df
Fixes #182: Make GTK# more like WinForms UI
IBBoard <dev@ibboard.co.uk>
parents:
19
diff
changeset
|
128 lstRaces.Model = store; |
0 | 129 } |
77
68804784bf6f
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
76
diff
changeset
|
130 |
0 | 131 public Race SelectedRace |
132 { | |
133 get { return race; } | |
134 } | |
77
68804784bf6f
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
76
diff
changeset
|
135 |
0 | 136 public string ArmyName |
137 { | |
138 get { return armyName; } | |
139 } | |
77
68804784bf6f
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
76
diff
changeset
|
140 |
75
2ceae5d685d8
Re #86: Complete initial GTK# UI
IBBoard <dev@ibboard.co.uk>
parents:
52
diff
changeset
|
141 public int ArmySize |
0 | 142 { |
143 get { return pointsValue; } | |
144 } | |
145 } | |
146 } |