changeset 94:26e4525b49cf

Fixes #334: Add credits to "About" page * Added Credits dialog to match Gnome/GTK style * Included WinForms testers in credits, as they tested the core API libraries
author IBBoard <dev@ibboard.co.uk>
date Fri, 31 Dec 2010 15:43:05 +0000
parents e40d892a2298
children ea4069bbe6e9
files FrmAbout.cs FrmAboutCredits.cs IBBoard.WarFoundry.GUI.GTK.csproj gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmAbout.cs gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmAboutCredits.cs gtk-gui/gui.stetic translations/en.translation
diffstat 7 files changed, 433 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/FrmAbout.cs	Fri Dec 31 13:53:18 2010 +0000
+++ b/FrmAbout.cs	Fri Dec 31 15:43:05 2010 +0000
@@ -31,7 +31,14 @@
 		protected virtual void CloseClicked(object sender, System.EventArgs e)
 		{
 			Respond(ResponseType.Close);
-		}		
+		}
+
+		protected virtual void BttnCreditsClicked(object sender, System.EventArgs e)
+		{
+			FrmAboutCredits credits = new FrmAboutCredits();
+			credits.Run();
+			credits.Hide();
+		}
 	}
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FrmAboutCredits.cs	Fri Dec 31 15:43:05 2010 +0000
@@ -0,0 +1,19 @@
+//  This file (FrmAboutCredits.cs) is a part of the IBBoard.WarFoundry.GUI.GTK project and is copyright 2010 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 IBBoard.GtkSharp.Translatable;
+
+namespace IBBoard.WarFoundry.GUI.GTK
+{
+	public partial class FrmAboutCredits : TranslatableDialog
+	{
+		public FrmAboutCredits()
+		{
+			this.Build();
+			Translate();
+		}
+	}
+}
+
--- a/IBBoard.WarFoundry.GUI.GTK.csproj	Fri Dec 31 13:53:18 2010 +0000
+++ b/IBBoard.WarFoundry.GUI.GTK.csproj	Fri Dec 31 15:43:05 2010 +0000
@@ -67,6 +67,8 @@
     <Compile Include="gtk-gui\IBBoard.WarFoundry.GUI.GTK.FrmNewArmy.cs" />
     <Compile Include="gtk-gui\IBBoard.WarFoundry.GUI.GTK.FrmNewUnit.cs" />
     <Compile Include="gtk-gui\IBBoard.WarFoundry.GUI.GTK.Widgets.UnitDisplayWidget.cs" />
+    <Compile Include="FrmAboutCredits.cs" />
+    <Compile Include="gtk-gui\IBBoard.WarFoundry.GUI.GTK.FrmAboutCredits.cs" />
   </ItemGroup>
   <ItemGroup>
     <Content Include="App.png" />
--- a/gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmAbout.cs	Fri Dec 31 13:53:18 2010 +0000
+++ b/gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmAbout.cs	Fri Dec 31 15:43:05 2010 +0000
@@ -9,6 +9,7 @@
 		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblWarFoundryDesc;
 		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblWarFoundryCopyright;
 		private global::Gtk.Label lblWarFoundryLink;
+		private global::IBBoard.GtkSharp.Translatable.TranslatableButton bttnCredits;
 		private global::IBBoard.GtkSharp.Translatable.TranslatableButton bttnClose;
 
 		protected virtual void Build()
@@ -17,10 +18,13 @@
 			// Widget IBBoard.WarFoundry.GUI.GTK.FrmAbout
 			this.Name = "IBBoard.WarFoundry.GUI.GTK.FrmAbout";
 			this.Title = global::Mono.Unix.Catalog.GetString("About WF");
+			this.Icon = global::Gdk.Pixbuf.LoadFromResource("App.ico");
 			this.TypeHint = ((global::Gdk.WindowTypeHint)(1));
 			this.WindowPosition = ((global::Gtk.WindowPosition)(4));
 			this.Resizable = false;
 			this.AllowGrow = false;
+			this.SkipPagerHint = true;
+			this.SkipTaskbarHint = true;
 			// Internal child IBBoard.WarFoundry.GUI.GTK.FrmAbout.VBox
 			global::Gtk.VBox w1 = this.VBox;
 			w1.Name = "dialog1_VBox";
@@ -81,6 +85,17 @@
 			w7.BorderWidth = ((uint)(5));
 			w7.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
 			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
+			this.bttnCredits = new global::IBBoard.GtkSharp.Translatable.TranslatableButton();
+			this.bttnCredits.CanFocus = true;
+			this.bttnCredits.Name = "bttnCredits";
+			this.bttnCredits.UseStock = true;
+			this.bttnCredits.UseUnderline = true;
+			this.bttnCredits.Label = "gtk-about";
+			w7.Add(this.bttnCredits);
+			global::Gtk.ButtonBox.ButtonBoxChild w8 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w7[this.bttnCredits]));
+			w8.Expand = false;
+			w8.Fill = false;
+			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
 			this.bttnClose = new global::IBBoard.GtkSharp.Translatable.TranslatableButton();
 			this.bttnClose.CanDefault = true;
 			this.bttnClose.CanFocus = true;
@@ -89,16 +104,19 @@
 			this.bttnClose.UseUnderline = true;
 			this.bttnClose.Label = "gtk-close";
 			this.AddActionWidget(this.bttnClose, -7);
-			global::Gtk.ButtonBox.ButtonBoxChild w8 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w7[this.bttnClose]));
-			w8.Expand = false;
-			w8.Fill = false;
+			global::Gtk.ButtonBox.ButtonBoxChild w9 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w7[this.bttnClose]));
+			w9.Position = 1;
+			w9.Expand = false;
+			w9.Fill = false;
 			if ((this.Child != null))
 			{
 				this.Child.ShowAll();
 			}
-			this.DefaultWidth = 305;
+			this.DefaultWidth = 330;
 			this.DefaultHeight = 300;
+			this.bttnClose.HasDefault = true;
 			this.Show();
+			this.bttnCredits.Clicked += new global::System.EventHandler(this.BttnCreditsClicked);
 		}
 	}
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gtk-gui/IBBoard.WarFoundry.GUI.GTK.FrmAboutCredits.cs	Fri Dec 31 15:43:05 2010 +0000
@@ -0,0 +1,152 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace IBBoard.WarFoundry.GUI.GTK
+{
+	public partial class FrmAboutCredits
+	{
+		private global::Gtk.Table table1;
+		private global::Gtk.Label label1;
+		private global::Gtk.Label label2;
+		private global::Gtk.Label label3;
+		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblDevelopers;
+		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblTestersCommon;
+		private global::IBBoard.GtkSharp.Translatable.TranslatableLabel lblTestersGtk;
+		private global::Gtk.Button bttnClose;
+
+		protected virtual void Build()
+		{
+			global::Stetic.Gui.Initialize(this);
+			// Widget IBBoard.WarFoundry.GUI.GTK.FrmAboutCredits
+			this.Name = "IBBoard.WarFoundry.GUI.GTK.FrmAboutCredits";
+			this.Icon = global::Gdk.Pixbuf.LoadFromResource("App.ico");
+			this.TypeHint = ((global::Gdk.WindowTypeHint)(1));
+			this.WindowPosition = ((global::Gtk.WindowPosition)(4));
+			this.SkipPagerHint = true;
+			this.SkipTaskbarHint = true;
+			// Internal child IBBoard.WarFoundry.GUI.GTK.FrmAboutCredits.VBox
+			global::Gtk.VBox w1 = this.VBox;
+			w1.Name = "dialog1_VBox";
+			w1.BorderWidth = ((uint)(2));
+			// Container child dialog1_VBox.Gtk.Box+BoxChild
+			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));
+			// Container child table1.Gtk.Table+TableChild
+			this.label1 = new global::Gtk.Label();
+			this.label1.Name = "label1";
+			this.label1.Xpad = 3;
+			this.label1.Ypad = 3;
+			this.label1.Xalign = 0F;
+			this.label1.Yalign = 0F;
+			this.label1.LabelProp = "IBBoard (Main developer and project lead)";
+			this.table1.Add(this.label1);
+			global::Gtk.Table.TableChild w2 = ((global::Gtk.Table.TableChild)(this.table1[this.label1]));
+			w2.LeftAttach = ((uint)(1));
+			w2.RightAttach = ((uint)(2));
+			w2.XOptions = ((global::Gtk.AttachOptions)(4));
+			w2.YOptions = ((global::Gtk.AttachOptions)(4));
+			// Container child table1.Gtk.Table+TableChild
+			this.label2 = new global::Gtk.Label();
+			this.label2.Name = "label2";
+			this.label2.Xpad = 3;
+			this.label2.Ypad = 3;
+			this.label2.Xalign = 0F;
+			this.label2.Yalign = 0F;
+			this.label2.LabelProp = global::Mono.Unix.Catalog.GetString("HeWhoWatches");
+			this.table1.Add(this.label2);
+			global::Gtk.Table.TableChild w3 = ((global::Gtk.Table.TableChild)(this.table1[this.label2]));
+			w3.TopAttach = ((uint)(1));
+			w3.BottomAttach = ((uint)(2));
+			w3.LeftAttach = ((uint)(1));
+			w3.RightAttach = ((uint)(2));
+			w3.YOptions = ((global::Gtk.AttachOptions)(4));
+			// Container child table1.Gtk.Table+TableChild
+			this.label3 = new global::Gtk.Label();
+			this.label3.Name = "label3";
+			this.label3.Xpad = 3;
+			this.label3.Ypad = 3;
+			this.label3.Xalign = 0F;
+			this.label3.Yalign = 0F;
+			this.label3.LabelProp = global::Mono.Unix.Catalog.GetString("Snowblizz,\r\nFrostlee,\r\nLord_Archaon,\r\nFurrie,\r\nclutch110,\r\nMollo,\r\nHeWhoWatches");
+			this.table1.Add(this.label3);
+			global::Gtk.Table.TableChild w4 = ((global::Gtk.Table.TableChild)(this.table1[this.label3]));
+			w4.TopAttach = ((uint)(2));
+			w4.BottomAttach = ((uint)(3));
+			w4.LeftAttach = ((uint)(1));
+			w4.RightAttach = ((uint)(2));
+			w4.XOptions = ((global::Gtk.AttachOptions)(4));
+			w4.YOptions = ((global::Gtk.AttachOptions)(4));
+			// Container child table1.Gtk.Table+TableChild
+			this.lblDevelopers = new global::IBBoard.GtkSharp.Translatable.TranslatableLabel();
+			this.lblDevelopers.Name = "lblDevelopers";
+			this.lblDevelopers.Xpad = 3;
+			this.lblDevelopers.Ypad = 3;
+			this.lblDevelopers.Xalign = 0F;
+			this.lblDevelopers.Yalign = 0F;
+			this.lblDevelopers.LabelProp = global::Mono.Unix.Catalog.GetString("developers:");
+			this.table1.Add(this.lblDevelopers);
+			global::Gtk.Table.TableChild w5 = ((global::Gtk.Table.TableChild)(this.table1[this.lblDevelopers]));
+			w5.XOptions = ((global::Gtk.AttachOptions)(4));
+			w5.YOptions = ((global::Gtk.AttachOptions)(4));
+			// Container child table1.Gtk.Table+TableChild
+			this.lblTestersCommon = new global::IBBoard.GtkSharp.Translatable.TranslatableLabel();
+			this.lblTestersCommon.Name = "lblTestersCommon";
+			this.lblTestersCommon.Xpad = 3;
+			this.lblTestersCommon.Ypad = 3;
+			this.lblTestersCommon.Xalign = 0F;
+			this.lblTestersCommon.Yalign = 0F;
+			this.lblTestersCommon.LabelProp = global::Mono.Unix.Catalog.GetString("testers (common):");
+			this.table1.Add(this.lblTestersCommon);
+			global::Gtk.Table.TableChild w6 = ((global::Gtk.Table.TableChild)(this.table1[this.lblTestersCommon]));
+			w6.TopAttach = ((uint)(2));
+			w6.BottomAttach = ((uint)(3));
+			w6.XOptions = ((global::Gtk.AttachOptions)(4));
+			w6.YOptions = ((global::Gtk.AttachOptions)(4));
+			// Container child table1.Gtk.Table+TableChild
+			this.lblTestersGtk = new global::IBBoard.GtkSharp.Translatable.TranslatableLabel();
+			this.lblTestersGtk.Name = "lblTestersGtk";
+			this.lblTestersGtk.Xpad = 3;
+			this.lblTestersGtk.Ypad = 3;
+			this.lblTestersGtk.Xalign = 0F;
+			this.lblTestersGtk.Yalign = 0F;
+			this.lblTestersGtk.LabelProp = global::Mono.Unix.Catalog.GetString("testers (GTK UI):");
+			this.table1.Add(this.lblTestersGtk);
+			global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.table1[this.lblTestersGtk]));
+			w7.TopAttach = ((uint)(1));
+			w7.BottomAttach = ((uint)(2));
+			w7.XOptions = ((global::Gtk.AttachOptions)(4));
+			w7.YOptions = ((global::Gtk.AttachOptions)(4));
+			w1.Add(this.table1);
+			global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(w1[this.table1]));
+			w8.Position = 0;
+			w8.Expand = false;
+			w8.Fill = false;
+			// Internal child IBBoard.WarFoundry.GUI.GTK.FrmAboutCredits.ActionArea
+			global::Gtk.HButtonBox w9 = this.ActionArea;
+			w9.Name = "dialog1_ActionArea";
+			w9.Spacing = 10;
+			w9.BorderWidth = ((uint)(5));
+			w9.LayoutStyle = ((global::Gtk.ButtonBoxStyle)(4));
+			// Container child dialog1_ActionArea.Gtk.ButtonBox+ButtonBoxChild
+			this.bttnClose = new global::Gtk.Button();
+			this.bttnClose.CanDefault = true;
+			this.bttnClose.CanFocus = true;
+			this.bttnClose.Name = "bttnClose";
+			this.bttnClose.UseStock = true;
+			this.bttnClose.UseUnderline = true;
+			this.bttnClose.Label = "gtk-close";
+			this.AddActionWidget(this.bttnClose, -7);
+			global::Gtk.ButtonBox.ButtonBoxChild w10 = ((global::Gtk.ButtonBox.ButtonBoxChild)(w9[this.bttnClose]));
+			w10.Expand = false;
+			w10.Fill = false;
+			if ((this.Child != null))
+			{
+				this.Child.ShowAll();
+			}
+			this.DefaultWidth = 376;
+			this.DefaultHeight = 250;
+			this.Show();
+		}
+	}
+}
--- a/gtk-gui/gui.stetic	Fri Dec 31 13:53:18 2010 +0000
+++ b/gtk-gui/gui.stetic	Fri Dec 31 15:43:05 2010 +0000
@@ -2010,14 +2010,17 @@
       </widget>
     </child>
   </widget>
-  <widget class="Gtk.Dialog" id="IBBoard.WarFoundry.GUI.GTK.FrmAbout" design-size="305 300">
+  <widget class="Gtk.Dialog" id="IBBoard.WarFoundry.GUI.GTK.FrmAbout" design-size="330 300">
     <property name="MemberName" />
     <property name="Title" translatable="yes">About WF</property>
+    <property name="Icon">resource:App.ico</property>
     <property name="TypeHint">Dialog</property>
     <property name="WindowPosition">CenterOnParent</property>
     <property name="Resizable">False</property>
     <property name="AllowGrow">False</property>
-    <property name="Buttons">1</property>
+    <property name="SkipPagerHint">True</property>
+    <property name="SkipTaskbarHint">True</property>
+    <property name="Buttons">2</property>
     <property name="HelpButton">False</property>
     <child internal-child="VBox">
       <widget class="Gtk.VBox" id="dialog1_VBox">
@@ -2094,10 +2097,229 @@
         <property name="MemberName" />
         <property name="Spacing">10</property>
         <property name="BorderWidth">5</property>
+        <property name="Size">2</property>
+        <property name="LayoutStyle">End</property>
+        <child>
+          <widget class="IBBoard.GtkSharp.Translatable.TranslatableButton" id="bttnCredits">
+            <property name="MemberName" />
+            <property name="CanFocus">True</property>
+            <property name="UseStock">True</property>
+            <property name="Type">StockItem</property>
+            <property name="StockId">gtk-about</property>
+            <property name="ResponseId">-1</property>
+            <signal name="Clicked" handler="BttnCreditsClicked" />
+            <property name="label">gtk-about</property>
+          </widget>
+          <packing>
+            <property name="Expand">False</property>
+            <property name="Fill">False</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="IBBoard.GtkSharp.Translatable.TranslatableButton" id="bttnClose">
+            <property name="MemberName" />
+            <property name="CanDefault">True</property>
+            <property name="HasDefault">True</property>
+            <property name="CanFocus">True</property>
+            <property name="UseStock">True</property>
+            <property name="Type">StockItem</property>
+            <property name="StockId">gtk-close</property>
+            <property name="ResponseId">-7</property>
+            <property name="label">gtk-close</property>
+          </widget>
+          <packing>
+            <property name="Position">1</property>
+            <property name="Expand">False</property>
+            <property name="Fill">False</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+  <widget class="Gtk.Dialog" id="IBBoard.WarFoundry.GUI.GTK.FrmAboutCredits" design-size="376 250">
+    <property name="MemberName" />
+    <property name="Icon">resource:App.ico</property>
+    <property name="TypeHint">Dialog</property>
+    <property name="WindowPosition">CenterOnParent</property>
+    <property name="SkipPagerHint">True</property>
+    <property name="SkipTaskbarHint">True</property>
+    <property name="Buttons">1</property>
+    <property name="HelpButton">False</property>
+    <child internal-child="VBox">
+      <widget class="Gtk.VBox" id="dialog1_VBox">
+        <property name="MemberName" />
+        <property name="BorderWidth">2</property>
+        <child>
+          <widget class="Gtk.Table" id="table1">
+            <property name="MemberName" />
+            <property name="NRows">3</property>
+            <property name="NColumns">2</property>
+            <property name="RowSpacing">6</property>
+            <property name="ColumnSpacing">6</property>
+            <child>
+              <widget class="Gtk.Label" id="label1">
+                <property name="MemberName" />
+                <property name="Xpad">3</property>
+                <property name="Ypad">3</property>
+                <property name="Xalign">0</property>
+                <property name="Yalign">0</property>
+                <property name="LabelProp">IBBoard (Main developer and project lead)</property>
+              </widget>
+              <packing>
+                <property name="LeftAttach">1</property>
+                <property name="RightAttach">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="label2">
+                <property name="MemberName" />
+                <property name="Xpad">3</property>
+                <property name="Ypad">3</property>
+                <property name="Xalign">0</property>
+                <property name="Yalign">0</property>
+                <property name="LabelProp" translatable="yes">HeWhoWatches</property>
+              </widget>
+              <packing>
+                <property name="TopAttach">1</property>
+                <property name="BottomAttach">2</property>
+                <property name="LeftAttach">1</property>
+                <property name="RightAttach">2</property>
+                <property name="AutoSize">False</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.Label" id="label3">
+                <property name="MemberName" />
+                <property name="Xpad">3</property>
+                <property name="Ypad">3</property>
+                <property name="Xalign">0</property>
+                <property name="Yalign">0</property>
+                <property name="LabelProp" translatable="yes">Snowblizz,
+Frostlee,
+Lord_Archaon,
+Furrie,
+clutch110,
+Mollo,
+HeWhoWatches</property>
+              </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="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="IBBoard.GtkSharp.Translatable.TranslatableLabel" id="lblDevelopers">
+                <property name="MemberName" />
+                <property name="Xpad">3</property>
+                <property name="Ypad">3</property>
+                <property name="Xalign">0</property>
+                <property name="Yalign">0</property>
+                <property name="LabelProp" translatable="yes">developers:</property>
+              </widget>
+              <packing>
+                <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="IBBoard.GtkSharp.Translatable.TranslatableLabel" id="lblTestersCommon">
+                <property name="MemberName" />
+                <property name="Xpad">3</property>
+                <property name="Ypad">3</property>
+                <property name="Xalign">0</property>
+                <property name="Yalign">0</property>
+                <property name="LabelProp" translatable="yes">testers (common):</property>
+              </widget>
+              <packing>
+                <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>
+                <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="IBBoard.GtkSharp.Translatable.TranslatableLabel" id="lblTestersGtk">
+                <property name="MemberName" />
+                <property name="Xpad">3</property>
+                <property name="Ypad">3</property>
+                <property name="Xalign">0</property>
+                <property name="Yalign">0</property>
+                <property name="LabelProp" translatable="yes">testers (GTK UI):</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>
+          </widget>
+          <packing>
+            <property name="Position">0</property>
+            <property name="AutoSize">True</property>
+            <property name="Expand">False</property>
+            <property name="Fill">False</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+    <child internal-child="ActionArea">
+      <widget class="Gtk.HButtonBox" id="dialog1_ActionArea">
+        <property name="MemberName" />
+        <property name="Spacing">10</property>
+        <property name="BorderWidth">5</property>
         <property name="Size">1</property>
         <property name="LayoutStyle">End</property>
         <child>
-          <widget class="IBBoard.GtkSharp.Translatable.TranslatableButton" id="bttnClose">
+          <widget class="Gtk.Button" id="bttnClose">
             <property name="MemberName" />
             <property name="CanDefault">True</property>
             <property name="CanFocus">True</property>
--- a/translations/en.translation	Fri Dec 31 13:53:18 2010 +0000
+++ b/translations/en.translation	Fri Dec 31 15:43:05 2010 +0000
@@ -58,10 +58,15 @@
 <translation id="frmEditEquipmentColumnTitle">Equipment</translation>
 <translation id="IBBoard.WarFoundry.GUI.GTK.FrmAbout">About WarFoundry</translation>
 <translation id="bttnClose">Close</translation>
+<translation id="bttnCredits">Credits</translation>
 <translation id="lblWarFoundryCopyright">© 2007-2010, IBBoard and others</translation>
 <translation id="lblWarFoundryDesc">WarFoundry is an open-source army creation tool that lets you create rosters for multiple game systems.</translation>
 <translation id="exportBasicHtmlDialogTitle">Export army</translation>
 <translation id="exportBasicHtmlCancel">Cancel</translation>
 <translation id="exportBasicHtmlExport">Export</translation>
 <translation id="exportBasicHtmlHtmlFilter">HTML pages (*.html)</translation>
+<translation id="IBBoard.WarFoundry.GUI.GTK.FrmAboutCredits">Credits</translation>
+<translation id="lblDevelopers">Developers:</translation>	
+<translation id="lblTestersCommon">Testers (General WarFoundry):</translation>
+<translation id="lblTestersGtk">Testers (GTK UI):</translation>
 </translations>
\ No newline at end of file