Mercurial > repos > IBBoard.WarFoundry.GUI.GTK
diff FrmNewArmy.cs @ 36:d68992a831df
Fixes #182: Make GTK# more like WinForms UI
* Remove "Change Game System" option
* Delete "Change Game System" dialogs
* Add game system selection to army creation
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 16 Jan 2010 16:36:12 +0000 |
parents | a191d0655f55 |
children | 4bad8cb3f889 4a33b3012100 |
line wrap: on
line diff
--- a/FrmNewArmy.cs Sat Jan 16 11:07:15 2010 +0000 +++ b/FrmNewArmy.cs Sat Jan 16 16:36:12 2010 +0000 @@ -7,6 +7,7 @@ using IBBoard.Lang; using IBBoard.WarFoundry.API; using IBBoard.WarFoundry.API.Objects; +using IBBoard.GtkSharp; using log4net; namespace IBBoard.WarFoundry.GTK @@ -14,7 +15,6 @@ public partial class FrmNewArmy : Dialog, ITranslatable { private ILog logger = LogManager.GetLogger(typeof(FrmNewArmy)); - private GameSystem system; private Race race; private string armyName; private int pointsValue; @@ -23,22 +23,32 @@ { this.Build(); - system = gameSystem; + GameSystem[] gameSystems = WarFoundryLoader.GetDefault().GetGameSystems(); + ComboBoxUtils.FillCombo(systemCombo, gameSystems, delegate(GameSystem sys){return sys.Name;}); + + if (gameSystem != null) + { + ComboBoxUtils.SelectItem(systemCombo, gameSystem); + } + else if (gameSystems.Length == 1) + { + ComboBoxUtils.SelectIndex(systemCombo, 0); + } + lstRaces.Selection.Changed+= new EventHandler(OnSelectionChanged); + TreeViewColumn raceColumn = new TreeViewColumn (); raceColumn.Title = "Race"; CellRendererText raceCell = new CellRendererText (); raceColumn.PackStart (raceCell, true); lstRaces.AppendColumn(raceColumn); raceColumn.SetCellDataFunc(raceCell, new TreeCellDataFunc(RenderRaceName)); - ListStore store = new ListStore(typeof(Race)); + - foreach (Race r in WarFoundryLoader.GetDefault().GetRaces(system)) + if (gameSystem!=null) { - store.AppendValues(r); + SetRaces(gameSystem); } - - lstRaces.Model = store; } public string Text @@ -55,13 +65,13 @@ protected virtual void OnSelectionChanged(object o, EventArgs e) { - logger.Debug("Selection changed"); - setOkayButtonState(); + logger.Debug("Race selection changed"); + SetOkayButtonState(); } - private void setOkayButtonState() + private void SetOkayButtonState() { - bttnCreate.Sensitive = (lstRaces.Selection.CountSelectedRows() > 0 && txtArmyName.Text!="" && sbPointsValue.Value > 0); + bttnCreate.Sensitive = (lstRaces.Selection.CountSelectedRows() == 1 && txtArmyName.Text!="" && sbPointsValue.Value > 0); } protected virtual void OnCreateClicked (object sender, System.EventArgs e) @@ -82,17 +92,40 @@ protected virtual void OnTextChanged (object sender, System.EventArgs e) { - setOkayButtonState(); + SetOkayButtonState(); } protected virtual void OnSpinChangeValue (object o, Gtk.ChangeValueArgs args) { - setOkayButtonState(); + SetOkayButtonState(); } protected virtual void OnSpinValueChanged (object sender, System.EventArgs e) { - setOkayButtonState(); + SetOkayButtonState(); + } + + protected virtual void OnSystemComboChanged (object sender, System.EventArgs e) + { + GameSystem system = ComboBoxUtils.GetSelectedItem<GameSystem>(systemCombo); + SetRaces(system); + logger.Debug("System selection changed: " + (system == null ? "null" : system.Name)); + SetOkayButtonState(); + } + + private void SetRaces(GameSystem system) + { + ListStore store = new ListStore(typeof(Race)); + + if (system != null) + { + foreach (Race race in WarFoundryLoader.GetDefault().GetRaces(system)) + { + store.AppendValues(race); + } + } + + lstRaces.Model = store; } public Race SelectedRace