changeset 71:91354245218a

Fixes #305: Add abilities to GTK# UI * Add Abilities section to UnitDisplayWidget that shows list of required abilities
author IBBoard <dev@ibboard.co.uk>
date Sat, 06 Nov 2010 20:22:19 +0000
parents 4b82515586ac
children f0cc295e883c
files Widgets/UnitDisplayWidget.cs gtk-gui/IBBoard.WarFoundry.GTK.Widgets.UnitDisplayWidget.cs gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmAddEquipment.cs gtk-gui/gui.stetic
diffstat 4 files changed, 147 insertions(+), 41 deletions(-) [+]
line wrap: on
line diff
--- a/Widgets/UnitDisplayWidget.cs	Sat Nov 06 17:03:13 2010 +0000
+++ b/Widgets/UnitDisplayWidget.cs	Sat Nov 06 20:22:19 2010 +0000
@@ -5,15 +5,15 @@
 using System;
 using Gtk;
 using IBBoard.Commands;
+using IBBoard.GtkSharp;
 using IBBoard.Lang;
 using IBBoard.WarFoundry.API;
-using WFObjects = IBBoard.WarFoundry.API.Objects;
 using IBBoard.WarFoundry.API.Commands;
-using IBBoard.WarFoundry.GUI.GTK.UIControl;
 using IBBoard.WarFoundry.API.Objects;
 using IBBoard.WarFoundry.API.Util;
-using IBBoard.GtkSharp;
+using IBBoard.WarFoundry.GUI.GTK.UIControl;
 using log4net;
+using WFObjects = IBBoard.WarFoundry.API.Objects;
 
 namespace IBBoard.WarFoundry.GTK.Widgets
 {
@@ -41,6 +41,7 @@
 			unit.UnitSizeChanged += UnitSizeChanged;
 			unit.UnitEquipmentAmountChanged += HandleUnitUnitEquipmentAmountChanged;
 			equipmentList.Selection.Changed += HandleEquipmentListSelectionChanged;
+			SetAbilities();
 			SetStats();
 			SetWeapons();
 		}
@@ -62,6 +63,33 @@
 		{
 			return (UnitEquipmentItem)TreeUtils.GetSelectedItem(equipmentList);
 		}
+		
+		private void SetAbilities()
+		{
+			CellRendererText renderer = new CellRendererText();
+			abilitiesList.AppendColumn("", renderer, new TreeCellDataFunc(RenderAbility));
+			
+			ListStore model = new ListStore(typeof(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)
+		{
+			object o = model.GetValue(iter, 0);
+			
+			if (o is Ability)
+			{
+				Ability ability = (Ability)o;
+				(cell as CellRendererText).Text = ability.Name;
+			}			
+						
+		}
 
 		private void SetStats()
 		{
--- a/gtk-gui/IBBoard.WarFoundry.GTK.Widgets.UnitDisplayWidget.cs	Sat Nov 06 17:03:13 2010 +0000
+++ b/gtk-gui/IBBoard.WarFoundry.GTK.Widgets.UnitDisplayWidget.cs	Sat Nov 06 20:22:19 2010 +0000
@@ -18,6 +18,9 @@
 				private global::Gtk.NodeView equipmentList;
 				private global::Gtk.ScrolledWindow GtkScrolledWindow3;
 				private global::Gtk.TextView notesView;
+				private global::Gtk.ScrolledWindow GtkScrolledWindow4;
+				private global::Gtk.NodeView abilitiesList;
+				private global::Gtk.Label lblAbilities;
 				private global::Gtk.Label lblNotes;
 				private global::Gtk.VBox vbox3;
 				private global::Gtk.Button bttnAddEquipment;
@@ -91,7 +94,7 @@
 			this.hbox2.Name = "hbox2";
 			this.hbox2.Spacing = 6;
 			// Container child hbox2.Gtk.Box+BoxChild
-			this.table1 = new global::Gtk.Table(((uint)(2)), ((uint)(2)), false);
+			this.table1 = new global::Gtk.Table(((uint)(3)), ((uint)(2)), false);
 			this.table1.Name = "table1";
 			this.table1.RowSpacing = ((uint)(6));
 			this.table1.ColumnSpacing = ((uint)(6));
@@ -130,24 +133,51 @@
 			this.GtkScrolledWindow3.Add(this.notesView);
 			this.table1.Add(this.GtkScrolledWindow3);
 			global::Gtk.Table.TableChild w11 = ((global::Gtk.Table.TableChild)(this.table1[this.GtkScrolledWindow3]));
-			w11.TopAttach = ((uint)(1));
-			w11.BottomAttach = ((uint)(2));
+			w11.TopAttach = ((uint)(2));
+			w11.BottomAttach = ((uint)(3));
 			w11.LeftAttach = ((uint)(1));
 			w11.RightAttach = ((uint)(2));
 			w11.YOptions = ((global::Gtk.AttachOptions)(4));
 			// Container child table1.Gtk.Table+TableChild
+			this.GtkScrolledWindow4 = new global::Gtk.ScrolledWindow();
+			this.GtkScrolledWindow4.Name = "GtkScrolledWindow4";
+			this.GtkScrolledWindow4.ShadowType = ((global::Gtk.ShadowType)(1));
+			// Container child GtkScrolledWindow4.Gtk.Container+ContainerChild
+			this.abilitiesList = new global::Gtk.NodeView();
+			this.abilitiesList.CanFocus = true;
+			this.abilitiesList.Name = "abilitiesList";
+			this.abilitiesList.HeadersVisible = false;
+			this.GtkScrolledWindow4.Add(this.abilitiesList);
+			this.table1.Add(this.GtkScrolledWindow4);
+			global::Gtk.Table.TableChild w13 = ((global::Gtk.Table.TableChild)(this.table1[this.GtkScrolledWindow4]));
+			w13.TopAttach = ((uint)(1));
+			w13.BottomAttach = ((uint)(2));
+			w13.LeftAttach = ((uint)(1));
+			w13.RightAttach = ((uint)(2));
+			w13.YOptions = ((global::Gtk.AttachOptions)(4));
+			// Container child table1.Gtk.Table+TableChild
+			this.lblAbilities = new global::Gtk.Label();
+			this.lblAbilities.Name = "lblAbilities";
+			this.lblAbilities.LabelProp = global::Mono.Unix.Catalog.GetString("abilities:");
+			this.table1.Add(this.lblAbilities);
+			global::Gtk.Table.TableChild w14 = ((global::Gtk.Table.TableChild)(this.table1[this.lblAbilities]));
+			w14.TopAttach = ((uint)(1));
+			w14.BottomAttach = ((uint)(2));
+			w14.XOptions = ((global::Gtk.AttachOptions)(4));
+			w14.YOptions = ((global::Gtk.AttachOptions)(4));
+			// Container child table1.Gtk.Table+TableChild
 			this.lblNotes = new global::Gtk.Label();
 			this.lblNotes.Name = "lblNotes";
 			this.lblNotes.LabelProp = global::Mono.Unix.Catalog.GetString("notes:");
 			this.table1.Add(this.lblNotes);
-			global::Gtk.Table.TableChild w12 = ((global::Gtk.Table.TableChild)(this.table1[this.lblNotes]));
-			w12.TopAttach = ((uint)(1));
-			w12.BottomAttach = ((uint)(2));
-			w12.XOptions = ((global::Gtk.AttachOptions)(4));
-			w12.YOptions = ((global::Gtk.AttachOptions)(4));
+			global::Gtk.Table.TableChild w15 = ((global::Gtk.Table.TableChild)(this.table1[this.lblNotes]));
+			w15.TopAttach = ((uint)(2));
+			w15.BottomAttach = ((uint)(3));
+			w15.XOptions = ((global::Gtk.AttachOptions)(4));
+			w15.YOptions = ((global::Gtk.AttachOptions)(4));
 			this.hbox2.Add(this.table1);
-			global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.table1]));
-			w13.Position = 0;
+			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.table1]));
+			w16.Position = 0;
 			// Container child hbox2.Gtk.Box+BoxChild
 			this.vbox3 = new global::Gtk.VBox();
 			this.vbox3.Name = "vbox3";
@@ -159,10 +189,10 @@
 			this.bttnAddEquipment.UseUnderline = true;
 			this.bttnAddEquipment.Label = global::Mono.Unix.Catalog.GetString("Add");
 			this.vbox3.Add(this.bttnAddEquipment);
-			global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.bttnAddEquipment]));
-			w14.Position = 0;
-			w14.Expand = false;
-			w14.Fill = false;
+			global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.bttnAddEquipment]));
+			w17.Position = 0;
+			w17.Expand = false;
+			w17.Fill = false;
 			// Container child vbox3.Gtk.Box+BoxChild
 			this.bttnEditEquipment = new global::Gtk.Button();
 			this.bttnEditEquipment.Sensitive = false;
@@ -171,10 +201,10 @@
 			this.bttnEditEquipment.UseUnderline = true;
 			this.bttnEditEquipment.Label = global::Mono.Unix.Catalog.GetString("Edit");
 			this.vbox3.Add(this.bttnEditEquipment);
-			global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.bttnEditEquipment]));
-			w15.Position = 1;
-			w15.Expand = false;
-			w15.Fill = false;
+			global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.bttnEditEquipment]));
+			w18.Position = 1;
+			w18.Expand = false;
+			w18.Fill = false;
 			// Container child vbox3.Gtk.Box+BoxChild
 			this.bttnReplaceEquipment = new global::Gtk.Button();
 			this.bttnReplaceEquipment.Sensitive = false;
@@ -183,10 +213,10 @@
 			this.bttnReplaceEquipment.UseUnderline = true;
 			this.bttnReplaceEquipment.Label = global::Mono.Unix.Catalog.GetString("Replace");
 			this.vbox3.Add(this.bttnReplaceEquipment);
-			global::Gtk.Box.BoxChild w16 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.bttnReplaceEquipment]));
-			w16.Position = 2;
-			w16.Expand = false;
-			w16.Fill = false;
+			global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.bttnReplaceEquipment]));
+			w19.Position = 2;
+			w19.Expand = false;
+			w19.Fill = false;
 			// Container child vbox3.Gtk.Box+BoxChild
 			this.bttnRemoveEquipment = new global::Gtk.Button();
 			this.bttnRemoveEquipment.Sensitive = false;
@@ -195,20 +225,20 @@
 			this.bttnRemoveEquipment.UseUnderline = true;
 			this.bttnRemoveEquipment.Label = global::Mono.Unix.Catalog.GetString("Remove");
 			this.vbox3.Add(this.bttnRemoveEquipment);
-			global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.bttnRemoveEquipment]));
-			w17.Position = 3;
-			w17.Expand = false;
-			w17.Fill = false;
+			global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.vbox3[this.bttnRemoveEquipment]));
+			w20.Position = 3;
+			w20.Expand = false;
+			w20.Fill = false;
 			this.hbox2.Add(this.vbox3);
-			global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.vbox3]));
-			w18.Position = 1;
-			w18.Expand = false;
-			w18.Fill = false;
+			global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.vbox3]));
+			w21.Position = 1;
+			w21.Expand = false;
+			w21.Fill = false;
 			this.vbox1.Add(this.hbox2);
-			global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.hbox2]));
-			w19.Position = 3;
-			w19.Expand = false;
-			w19.Fill = false;
+			global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.hbox2]));
+			w22.Position = 3;
+			w22.Expand = false;
+			w22.Fill = false;
 			this.Add(this.vbox1);
 			if ((this.Child != null))
 			{
--- a/gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmAddEquipment.cs	Sat Nov 06 17:03:13 2010 +0000
+++ b/gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmAddEquipment.cs	Sat Nov 06 20:22:19 2010 +0000
@@ -120,6 +120,7 @@
 			this.rbEquipAll = new global::Gtk.RadioButton("");
 			this.rbEquipAll.CanFocus = true;
 			this.rbEquipAll.Name = "rbEquipAll";
+			this.rbEquipAll.Active = true;
 			this.rbEquipAll.DrawIndicator = true;
 			this.rbEquipAll.UseUnderline = true;
 			this.rbEquipAll.Group = new global::GLib.SList(global::System.IntPtr.Zero);
--- a/gtk-gui/gui.stetic	Sat Nov 06 17:03:13 2010 +0000
+++ b/gtk-gui/gui.stetic	Sat Nov 06 20:22:19 2010 +0000
@@ -770,7 +770,7 @@
             <child>
               <widget class="Gtk.Table" id="table1">
                 <property name="MemberName" />
-                <property name="NRows">2</property>
+                <property name="NRows">3</property>
                 <property name="NColumns">2</property>
                 <property name="RowSpacing">6</property>
                 <property name="ColumnSpacing">6</property>
@@ -832,6 +832,34 @@
                     </child>
                   </widget>
                   <packing>
+                    <property name="TopAttach">2</property>
+                    <property name="BottomAttach">3</property>
+                    <property name="LeftAttach">1</property>
+                    <property name="RightAttach">2</property>
+                    <property name="AutoSize">True</property>
+                    <property name="YOptions">Fill</property>
+                    <property name="XExpand">True</property>
+                    <property name="XFill">True</property>
+                    <property name="XShrink">False</property>
+                    <property name="YExpand">False</property>
+                    <property name="YFill">True</property>
+                    <property name="YShrink">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="Gtk.ScrolledWindow" id="GtkScrolledWindow4">
+                    <property name="MemberName" />
+                    <property name="ShadowType">In</property>
+                    <child>
+                      <widget class="Gtk.NodeView" id="abilitiesList">
+                        <property name="MemberName" />
+                        <property name="CanFocus">True</property>
+                        <property name="ShowScrollbars">True</property>
+                        <property name="HeadersVisible">False</property>
+                      </widget>
+                    </child>
+                  </widget>
+                  <packing>
                     <property name="TopAttach">1</property>
                     <property name="BottomAttach">2</property>
                     <property name="LeftAttach">1</property>
@@ -847,13 +875,32 @@
                   </packing>
                 </child>
                 <child>
+                  <widget class="Gtk.Label" id="lblAbilities">
+                    <property name="MemberName" />
+                    <property name="LabelProp" translatable="yes">abilities:</property>
+                  </widget>
+                  <packing>
+                    <property name="TopAttach">1</property>
+                    <property name="BottomAttach">2</property>
+                    <property name="AutoSize">True</property>
+                    <property name="XOptions">Fill</property>
+                    <property name="YOptions">Fill</property>
+                    <property name="XExpand">False</property>
+                    <property name="XFill">True</property>
+                    <property name="XShrink">False</property>
+                    <property name="YExpand">False</property>
+                    <property name="YFill">True</property>
+                    <property name="YShrink">False</property>
+                  </packing>
+                </child>
+                <child>
                   <widget class="Gtk.Label" id="lblNotes">
                     <property name="MemberName" />
                     <property name="LabelProp" translatable="yes">notes:</property>
                   </widget>
                   <packing>
-                    <property name="TopAttach">1</property>
-                    <property name="BottomAttach">2</property>
+                    <property name="TopAttach">2</property>
+                    <property name="BottomAttach">3</property>
                     <property name="AutoSize">True</property>
                     <property name="XOptions">Fill</property>
                     <property name="YOptions">Fill</property>
@@ -1129,6 +1176,7 @@
                         <property name="MemberName" />
                         <property name="CanFocus">True</property>
                         <property name="Label" translatable="yes" />
+                        <property name="Active">True</property>
                         <property name="DrawIndicator">True</property>
                         <property name="HasLabel">True</property>
                         <property name="UseUnderline">True</property>
@@ -1448,7 +1496,6 @@
                         <property name="MemberName" />
                         <property name="CanFocus">True</property>
                         <property name="Label" translatable="yes" />
-                        <property name="Active">True</property>
                         <property name="DrawIndicator">True</property>
                         <property name="HasLabel">True</property>
                         <property name="UseUnderline">True</property>