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 ();
 			}
 		}		
 	}