Mercurial > repos > IBDev-IBBoard.WarFoundry.GUI.GTK
annotate FrmNewUnit.cs @ 114:8b99d6aa623f WarFoundry_v0.1
* Create short-lived branch for final v0.1 release
no-open-ticket
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 30 Apr 2011 14:06:05 +0000 |
parents | 4a33b3012100 |
children |
rev | line source |
---|---|
19
a191d0655f55
Re #121: Migrate to AGPL license
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
1 // This file (FrmNewUnit.cs) is a part of the IBBoard.WarFoundry.GTK project and is copyright 2008, 2009 IBBoard. |
0 | 2 // |
19
a191d0655f55
Re #121: Migrate to AGPL license
IBBoard <dev@ibboard.co.uk>
parents:
13
diff
changeset
|
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 System.Collections.Generic; | |
113 | 7 using Gtk; |
8 using IBBoard.GtkSharp.Translatable; | |
0 | 9 using IBBoard.WarFoundry.API.Objects; |
10 using IBBoard.WarFoundry.API.Requirements; | |
11 using log4net; | |
113 | 12 using IBBoard.Lang; |
0 | 13 |
113 | 14 namespace IBBoard.WarFoundry.GUI.GTK |
0 | 15 { |
113 | 16 public partial class FrmNewUnit : TranslatableDialog |
13 | 17 { |
0 | 18 private ILog logger = LogManager.GetLogger(typeof(FrmNewUnit)); |
19 private UnitType unitType; | |
20 private Army unitArmy; | |
113 | 21 private Category cat; |
22 | |
23 public FrmNewUnit(Race race, Category category, Army army) | |
0 | 24 { |
25 this.Build(); | |
26 unitArmy = army; | |
113 | 27 cat = category; |
0 | 28 |
113 | 29 TreeViewColumn unitTypeColumn = new TreeViewColumn(); |
30 CellRendererText unitTypeCell = new CellRendererText(); | |
0 | 31 unitTypeColumn.PackStart(unitTypeCell, true); |
32 lstUnitTypes.AppendColumn(unitTypeColumn); | |
113 | 33 unitTypeColumn.SetCellDataFunc(unitTypeCell, new TreeCellDataFunc(RenderUnitTypeName)); |
0 | 34 ListStore store = new ListStore(typeof(UnitType)); |
35 UnitType[] types = race.GetUnitTypes(cat); | |
36 logger.DebugFormat("Listing {0} unit types in {1}", types.Length, cat.Name); | |
37 | |
38 foreach (UnitType type in types) | |
39 { | |
40 logger.DebugFormat("Adding unit type {0}", type.Name); | |
41 store.AppendValues(type); | |
42 } | |
43 | |
44 lstUnitTypes.Model = store; | |
113 | 45 lstUnitTypes.Selection.Changed += new EventHandler(OnSelectionChanged); |
46 | |
47 Translation.TranslationChanged += Retranslate; | |
48 Translate(); | |
49 } | |
50 | |
51 private void Retranslate() | |
52 { | |
53 Translate(); | |
0 | 54 } |
113 | 55 |
56 public override void Dispose() | |
57 { | |
58 Translation.TranslationChanged -= Retranslate; | |
59 base.Dispose(); | |
60 } | |
61 | |
62 protected override void Translate() | |
63 { | |
64 base.Translate(); | |
65 lstUnitTypes.Columns[0].Title = Translation.GetTranslation("frmNewUnitNewUnitColumn", "unit type"); | |
66 Title = Translation.GetTranslation(Name, "Create new unit", cat.Name); | |
67 } | |
68 | |
0 | 69 private void RenderUnitTypeName(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter) |
70 { | |
71 UnitType type = (UnitType)model.GetValue(iter, 0); | |
72 (cell as CellRendererText).Text = type.Name; | |
73 } | |
113 | 74 |
0 | 75 protected virtual void OnSelectionChanged(object o, EventArgs e) |
76 { | |
77 SetSelectUnitEnabledVal(); | |
78 } | |
113 | 79 |
13 | 80 public UnitType SelectedUnit |
0 | 81 { |
82 get { return unitType; } | |
83 } | |
113 | 84 |
0 | 85 private UnitType GetSelectedUnitType() |
86 { | |
87 TreeModel model; | |
88 TreeIter iter; | |
113 | 89 lstUnitTypes.Selection.GetSelected(out model, out iter); |
0 | 90 UnitType toReturn = null; |
91 | |
113 | 92 if (model != null) |
0 | 93 { |
113 | 94 toReturn = (UnitType)model.GetValue(iter, 0); |
0 | 95 } |
96 | |
97 return toReturn; | |
98 } | |
113 | 99 |
13 | 100 private void SetSelectUnitEnabledVal() |
0 | 101 { |
102 UnitType type = GetSelectedUnitType(); | |
13 | 103 |
113 | 104 if (type != null) |
13 | 105 { |
113 | 106 bttnCreate.Sensitive = true; |
13 | 107 List<FailedUnitRequirement> fails = unitArmy.CanAddUnitType(type); |
108 lblNewUnitWarning.Visible = (fails != null); | |
109 | |
110 if (fails.Count > 0) | |
0 | 111 { |
13 | 112 //FIXME: currently only show the first error |
113 lblNewUnitWarning.Text = fails[0].Description; | |
114 } | |
115 } | |
116 else | |
117 { | |
113 | 118 bttnCreate.Sensitive = false; |
13 | 119 lblNewUnitWarning.Visible = false; |
120 } | |
0 | 121 } |
122 | |
113 | 123 protected virtual void OnButtonCancelActivated(object sender, System.EventArgs e) |
0 | 124 { |
125 Respond(ResponseType.Cancel); | |
126 } | |
127 | |
113 | 128 protected virtual void OnRowActivated(object o, Gtk.RowActivatedArgs args) |
0 | 129 { |
130 unitType = GetSelectedUnitType(); | |
131 Respond(ResponseType.Ok); | |
132 } | |
133 | |
113 | 134 protected virtual void OnButtonOkClicked(object sender, System.EventArgs e) |
0 | 135 { |
136 unitType = GetSelectedUnitType(); | |
137 Respond(ResponseType.Ok); | |
138 } | |
139 } | |
140 } |