Mercurial > repos > IBBoard.WarFoundry.GUI.GTK
diff Widgets/UnitDisplayWidget.cs @ 77:68804784bf6f
Re #86: Complete initial GTK# UI
* Add About dialog
* Make sure app builds as "WarFoundry-GTK.exe"
* Move all UI components to IBBoard.WarFoundry.GUI.GTK namespace
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 18 Dec 2010 16:42:51 +0000 |
parents | 19e7123aafd5 |
children | 986fc923c0fa |
line wrap: on
line diff
--- a/Widgets/UnitDisplayWidget.cs Tue Nov 23 21:03:46 2010 +0000 +++ b/Widgets/UnitDisplayWidget.cs Sat Dec 18 16:42:51 2010 +0000 @@ -1,7 +1,6 @@ // This file (UnitDisplayWidget.cs) is a part of the IBBoard.WarFoundry.GTK project and is copyright 2008, 2009 IBBoard. // // 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. - using System; using Gtk; using IBBoard.Commands; @@ -16,166 +15,156 @@ using WFObjects = IBBoard.WarFoundry.API.Objects; using System.Collections.Generic; -namespace IBBoard.WarFoundry.GTK.Widgets +namespace IBBoard.WarFoundry.GUI.GTK.Widgets { [System.ComponentModel.Category("WarFoundry GTK# GUI")] [System.ComponentModel.ToolboxItem(true)] public partial class UnitDisplayWidget : Gtk.Bin { - private static ILog log = LogManager.GetLogger(typeof(UnitDisplayWidget)); + private static ILog log = LogManager.GetLogger (typeof (UnitDisplayWidget)); private WFObjects.Unit unit; private CommandStack stack; - private Dictionary<string, NodeView> statsViews = new Dictionary<string, NodeView>(); - - public UnitDisplayWidget(WFObjects.Unit sourceUnit, CommandStack commandStack) + private Dictionary<string, NodeView> statsViews = new Dictionary<string, NodeView> (); + + public UnitDisplayWidget (WFObjects.Unit sourceUnit, CommandStack commandStack) { - this.Build(); + this.Build (); stack = commandStack; unit = sourceUnit; unitName.Text = unit.Name; unitSize.Value = unit.Size; int maxSize = (unit.UnitType.MaxSize == WarFoundryCore.INFINITY ? int.MaxValue : unit.UnitType.MaxSize); int minSize = unit.UnitType.MinSize; - unitSize.SetRange(minSize, maxSize); + unitSize.SetRange (minSize, maxSize); unitSize.Sensitive = (maxSize != minSize); notesView.Buffer.Text = unit.UnitType.Notes; unit.NameChanged += UnitNameChanged; unit.UnitSizeChanged += UnitSizeChanged; unit.UnitEquipmentAmountChanged += HandleUnitUnitEquipmentAmountChanged; equipmentList.Selection.Changed += HandleEquipmentListSelectionChanged; - SetAbilities(); - SetStats(); - SetWeapons(); + SetAbilities (); + SetStats (); + SetWeapons (); } - private void HandleEquipmentListSelectionChanged(object sender, EventArgs e) + private void HandleEquipmentListSelectionChanged (object sender, EventArgs e) { - SetButtonsEnabledState(); + SetButtonsEnabledState (); } - private void SetButtonsEnabledState() + private void SetButtonsEnabledState () { - UnitEquipmentItem equipItem = GetSelectedEquipmentItem(); - bttnReplaceEquipment.Sensitive = (equipItem != null && equipItem.HasAlternatives()); - bttnEditEquipment.Sensitive = (UnitEquipmentUtil.CanEditEquipmentAmount(unit, equipItem)); + UnitEquipmentItem equipItem = GetSelectedEquipmentItem (); + bttnReplaceEquipment.Sensitive = (equipItem != null && equipItem.HasAlternatives ()); + bttnEditEquipment.Sensitive = (UnitEquipmentUtil.CanEditEquipmentAmount (unit, equipItem)); bttnRemoveEquipment.Sensitive = (equipItem != null && !equipItem.IsRequired); } - private UnitEquipmentItem GetSelectedEquipmentItem() + private UnitEquipmentItem GetSelectedEquipmentItem () { - return (UnitEquipmentItem)TreeUtils.GetSelectedItem(equipmentList); + return (UnitEquipmentItem)TreeUtils.GetSelectedItem (equipmentList); } - - private void SetAbilities() + + private void SetAbilities () { - CellRendererText renderer = new CellRendererText(); - abilitiesList.AppendColumn("", renderer, new TreeCellDataFunc(RenderAbility)); + CellRendererText renderer = new CellRendererText (); + abilitiesList.AppendColumn ("", renderer, new TreeCellDataFunc (RenderAbility)); - ListStore model = new ListStore(typeof(Ability)); + ListStore model = new ListStore (typeof (Ability)); - foreach (Ability ability in unit.UnitType.GetRequiredAbilities()) - { - model.AppendValues(ability); + foreach (Ability ability in unit.UnitType.GetRequiredAbilities ()) { + model.AppendValues (ability); } abilitiesList.Model = model; } - - public void RenderAbility(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter) + + public void RenderAbility (TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter) { - object o = model.GetValue(iter, 0); + object o = model.GetValue (iter, 0); - if (o is Ability) - { + if (o is Ability) { Ability ability = (Ability)o; (cell as CellRendererText).Text = ability.Name; } } - private void SetStats() + private void SetStats () { Stat[][] stats = unit.UnitStatsArraysWithName; string[] statsIDs = unit.UnitStatsArrayIDs; int statsCount = stats.Length; - log.DebugFormat("Unit {0} has {1} stats arrays", unit.UnitType.Name, statsCount); + log.DebugFormat ("Unit {0} has {1} stats arrays", unit.UnitType.Name, statsCount); - for (int i = 0; i < statsCount; i++) - { - NodeView statsGrid = GetStatsView(statsIDs[i]); + for (int i = 0; i < statsCount; i++) { + NodeView statsGrid = GetStatsView (statsIDs [i]); TreeStore model = (TreeStore)statsGrid.Model; - log.DebugFormat("Adding row to data table for {0}", statsIDs[i]); - log.DebugFormat("TreeStore supports {0} columns", model.NColumns); - model.AppendValues((object)stats[i]); + log.DebugFormat ("Adding row to data table for {0}", statsIDs [i]); + log.DebugFormat ("TreeStore supports {0} columns", model.NColumns); + model.AppendValues ((object)stats [i]); } } - - private NodeView GetStatsView(string statsID) + + private NodeView GetStatsView (string statsID) { NodeView statsView; - if (statsViews.ContainsKey(statsID)) - { - statsView = DictionaryUtils.GetValue(statsViews, statsID); - } - else - { - statsView = CreateStatsView(statsID); - statsViews[statsID] = statsView; + if (statsViews.ContainsKey (statsID)) { + statsView = DictionaryUtils.GetValue (statsViews, statsID); + } else { + statsView = CreateStatsView (statsID); + statsViews [statsID] = statsView; } return statsView; } - - private NodeView CreateStatsView(string statsID) + + private NodeView CreateStatsView (string statsID) { - log.DebugFormat("Create NodeView for stats ID {0}", statsID); - SystemStats sysStats = unit.Race.GameSystem.GetSystemStatsForID(statsID); + log.DebugFormat ("Create NodeView for stats ID {0}", statsID); + SystemStats sysStats = unit.Race.GameSystem.GetSystemStatsForID (statsID); StatSlot[] sysStatSlots = sysStats.StatSlots; int statsCount = sysStatSlots.Length; - NodeView statsGrid = CreateNodeView(); - CellRendererText renderer = new CellRendererText(); - statsGrid.AppendColumn(Translation.GetTranslation("UnitNameColumn", "Unit Type", null), renderer, RenderUnitStat); + NodeView statsGrid = CreateNodeView (); + CellRendererText renderer = new CellRendererText (); + statsGrid.AppendColumn (Translation.GetTranslation ("UnitNameColumn", "Unit Type", null), renderer, RenderUnitStat); - for (int i = 0; i < statsCount; i++) - { - StatSlot stat = sysStatSlots[i]; + for (int i = 0; i < statsCount; i++) { + StatSlot stat = sysStatSlots [i]; string slotName = stat.Name; - statsGrid.AppendColumn(slotName, renderer, RenderUnitStat); + statsGrid.AppendColumn (slotName, renderer, RenderUnitStat); } - statsGrid.Model = new TreeStore(typeof(Stat[])); + statsGrid.Model = new TreeStore (typeof (Stat[])); return statsGrid; } - - private NodeView CreateNodeView() + + private NodeView CreateNodeView () { - NodeView nodeView = new NodeView(); - statsRepeatBox.Add(nodeView); + NodeView nodeView = new NodeView (); + statsRepeatBox.Add (nodeView); return nodeView; } - - private void RenderUnitStat(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter) + + private void RenderUnitStat (TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter) { - object o = model.GetValue(iter, 0); + object o = model.GetValue (iter, 0); - if (o is Stat[]) - { + if (o is Stat[]) { Stat[] stats = (Stat[])o; - (cell as CellRendererText).Text = stats[GetStatColumnIndex(column)].SlotValueString; + (cell as CellRendererText).Text = stats [GetStatColumnIndex (column)].SlotValueString; } } - - private int GetStatColumnIndex(TreeViewColumn column) + + private int GetStatColumnIndex (TreeViewColumn column) { int idx = -1; TreeViewColumn[] cols = ((TreeView)column.TreeView).Columns; int colCount = cols.Length; - for (int i = 0; i < colCount; i++) - { - if (cols[i] == column) - { + for (int i = 0; i < colCount; i++) { + if (cols [i] == column) { idx = i; break; } @@ -184,200 +173,177 @@ return idx; } - private void SetWeapons() + private void SetWeapons () { - CellRendererText renderer = new CellRendererText(); - equipmentList.AppendColumn("", renderer, new TreeCellDataFunc(RenderEquipmentLine)); + CellRendererText renderer = new CellRendererText (); + equipmentList.AppendColumn ("", renderer, new TreeCellDataFunc (RenderEquipmentLine)); - ListStore model = new ListStore(typeof(UnitEquipmentItem)); + ListStore model = new ListStore (typeof (UnitEquipmentItem)); - foreach (UnitEquipmentItem item in unit.GetEquipment()) - { - model.AppendValues(item); + foreach (UnitEquipmentItem item in unit.GetEquipment ()) { + model.AppendValues (item); } equipmentList.Model = model; } - - public void RenderEquipmentLine(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter) + + public void RenderEquipmentLine (TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter) { - object o = model.GetValue(iter, 0); + object o = model.GetValue (iter, 0); - if (o is UnitEquipmentItem) - { + if (o is UnitEquipmentItem) { UnitEquipmentItem item = (UnitEquipmentItem)o; - (cell as CellRendererText).Text = GetUnitEquipmentText(item); + (cell as CellRendererText).Text = GetUnitEquipmentText (item); } } - - private string GetUnitEquipmentText(UnitEquipmentItem item) + + private string GetUnitEquipmentText (UnitEquipmentItem item) { string translation = ""; - if (item.Cost == 0) - { - translation = Translation.GetTranslation("equipmentAmountWithZeroCost", "{0} ({1} - free)", item.Name, GetAmountString(item)); - } - else - { - translation = Translation.GetTranslation("equipmentAmountWithCost", "{0} ({1} at {2}pts each)", item.Name, GetAmountString(item), item.Cost); + if (item.Cost == 0) { + translation = Translation.GetTranslation ("equipmentAmountWithZeroCost", "{0} ({1} - free)", item.Name, GetAmountString (item)); + } else { + translation = Translation.GetTranslation ("equipmentAmountWithCost", "{0} ({1} at {2}pts each)", item.Name, GetAmountString (item), item.Cost); } return translation; } - private string GetAmountString(UnitEquipmentItem item) + private string GetAmountString (UnitEquipmentItem item) { - double amount = UnitEquipmentUtil.GetEquipmentAmount(unit, item); + double amount = UnitEquipmentUtil.GetEquipmentAmount (unit, item); string amountString = ""; - if (UnitEquipmentUtil.GetEquipmentAmountIsRatio(unit, item)) - { - int number = UnitEquipmentUtil.GetEquipmentAmountTaken(unit, item); + if (UnitEquipmentUtil.GetEquipmentAmountIsRatio (unit, item)) { + int number = UnitEquipmentUtil.GetEquipmentAmountTaken (unit, item); - if (amount == 100) - { - amountString = Translation.GetTranslation("equipmentChoiceAmountAll", "all ({1})", amount, number); + if (amount == 100) { + amountString = Translation.GetTranslation ("equipmentChoiceAmountAll", "all ({1})", amount, number); + } else { + amountString = Translation.GetTranslation ("equipmentChoiceAmountPercentage", "{0}% ({1})", amount, number); } - else - { - amountString = Translation.GetTranslation("equipmentChoiceAmountPercentage", "{0}% ({1})", amount, number); - } - } - else - { - amountString = Translation.GetTranslation("equipmentChoiceAmountNumber", "{0}", amount); + } else { + amountString = Translation.GetTranslation ("equipmentChoiceAmountNumber", "{0}", amount); } return amountString; } - public WFObjects.Unit Unit - { + public WFObjects.Unit Unit { get { return unit; } } - - private void UnitNameChanged(WarFoundryObject obj, string oldValue, string newValue) + + private void UnitNameChanged (WarFoundryObject obj, string oldValue, string newValue) { unitName.Text = newValue; } - - private void UnitSizeChanged(WarFoundryObject obj, int oldValue, int newValue) + + private void UnitSizeChanged (WarFoundryObject obj, int oldValue, int newValue) { unitSize.Value = newValue; } - private void HandleUnitUnitEquipmentAmountChanged(WarFoundryObject obj, double oldValue, double newValue) + private void HandleUnitUnitEquipmentAmountChanged (WarFoundryObject obj, double oldValue, double newValue) { - if (oldValue == 0) - { - ((ListStore)equipmentList.Model).AppendValues(obj); - } - else - { - if (newValue == 0) - { - TreeIter treeIter = TreeUtils.GetItemIter(equipmentList, obj); - ((ListStore)equipmentList.Model).Remove(ref treeIter); + if (oldValue == 0) { + ((ListStore)equipmentList.Model).AppendValues (obj); + } else { + if (newValue == 0) { + TreeIter treeIter = TreeUtils.GetItemIter (equipmentList, obj); + ((ListStore)equipmentList.Model).Remove (ref treeIter); } } - equipmentList.QueueDraw(); + equipmentList.QueueDraw (); } - protected virtual void OnUnitSizeFocusOut(object o, Gtk.FocusOutEventArgs args) + protected virtual void OnUnitSizeFocusOut (object o, Gtk.FocusOutEventArgs args) { - SetNewUnitSize(); + SetNewUnitSize (); } [GLib.ConnectBefore ()] - protected virtual void OnUnitSizeKeyPress(object o, Gtk.KeyPressEventArgs args) + protected virtual void OnUnitSizeKeyPress (object o, Gtk.KeyPressEventArgs args) { - if (args.Event.Key == Gdk.Key.Return || args.Event.Key == Gdk.Key.KP_Enter) - { - SetNewUnitSize(); - } - } - - private void SetNewUnitSize() - { - if (unitSize.Value != unit.Size) - { - SetUnitSizeCommand cmd = new SetUnitSizeCommand(unit, (int)Math.Round(unitSize.Value)); - stack.Execute(cmd); + if (args.Event.Key == Gdk.Key.Return || args.Event.Key == Gdk.Key.KP_Enter) { + SetNewUnitSize (); } } - protected virtual void OnUnitNameFocusOut(object o, Gtk.FocusOutEventArgs args) + private void SetNewUnitSize () { - SetNewUnitName(); + if (unitSize.Value != unit.Size) { + SetUnitSizeCommand cmd = new SetUnitSizeCommand (unit, (int)Math.Round (unitSize.Value)); + stack.Execute (cmd); + } + } + + protected virtual void OnUnitNameFocusOut (object o, Gtk.FocusOutEventArgs args) + { + SetNewUnitName (); } [GLib.ConnectBefore ()] - protected virtual void OnUnitNameKeyPress(object o, Gtk.KeyPressEventArgs args) + protected virtual void OnUnitNameKeyPress (object o, Gtk.KeyPressEventArgs args) { - if (args.Event.Key == Gdk.Key.Return || args.Event.Key == Gdk.Key.KP_Enter) - { - SetNewUnitName(); + if (args.Event.Key == Gdk.Key.Return || args.Event.Key == Gdk.Key.KP_Enter) { + SetNewUnitName (); } } - - private void SetNewUnitName() + + private void SetNewUnitName () { - if (unitName.Text != unit.Name) - { - SetNameCommand cmd = new SetNameCommand(unit, unitName.Text); - stack.Execute(cmd); + if (unitName.Text != unit.Name) { + SetNameCommand cmd = new SetNameCommand (unit, unitName.Text); + stack.Execute (cmd); } } - - private void OnBttnAddEquipmentClicked(object sender, System.EventArgs e) + + private void OnBttnAddEquipmentClicked (object sender, System.EventArgs e) { - AddEquipment(); - } - - private void AddEquipment() - { - AddEquipmentUIControl addEquipment = new AddEquipmentUIControl(unit, stack); - addEquipment.Show(); + AddEquipment (); } - - protected virtual void HandleRemoveButtonActivated(object sender, System.EventArgs e) + + private void AddEquipment () { - UnitEquipmentItem item = GetSelectedEquipmentItem(); - log.Debug("Remove " + item); + AddEquipmentUIControl addEquipment = new AddEquipmentUIControl (unit, stack); + addEquipment.Show (); + } + + protected virtual void HandleRemoveButtonActivated (object sender, System.EventArgs e) + { + UnitEquipmentItem item = GetSelectedEquipmentItem (); + log.Debug ("Remove " + item); - if (item != null) - { - SetUnitEquipmentNumericAmountCommand cmd = new SetUnitEquipmentNumericAmountCommand(unit, item, 0); - stack.Execute(cmd); + if (item != null) { + SetUnitEquipmentNumericAmountCommand cmd = new SetUnitEquipmentNumericAmountCommand (unit, item, 0); + stack.Execute (cmd); } } - - protected virtual void HandleEditButtonClicked(object sender, System.EventArgs e) + + protected virtual void HandleEditButtonClicked (object sender, System.EventArgs e) { - UnitEquipmentItem item = GetSelectedEquipmentItem(); - log.Debug("Edit " + item); + UnitEquipmentItem item = GetSelectedEquipmentItem (); + log.Debug ("Edit " + item); - if (item != null) - { - EditEquipmentUIControl editEquipment = new EditEquipmentUIControl(unit, item, stack); - editEquipment.Show(); + if (item != null) { + EditEquipmentUIControl editEquipment = new EditEquipmentUIControl (unit, item, stack); + editEquipment.Show (); } } - - protected virtual void HandleReplaceButtonClicked(object sender, System.EventArgs e) + + protected virtual void HandleReplaceButtonClicked (object sender, System.EventArgs e) { - UnitEquipmentItem item = GetSelectedEquipmentItem(); - log.Debug("Replace " + item); + UnitEquipmentItem item = GetSelectedEquipmentItem (); + log.Debug ("Replace " + item); - if (item != null) - { - ReplaceEquipmentUIControl addEquipment = new ReplaceEquipmentUIControl(unit, item, stack); - addEquipment.Show(); + if (item != null) { + ReplaceEquipmentUIControl addEquipment = new ReplaceEquipmentUIControl (unit, item, stack); + addEquipment.Show (); } } }