Mercurial > repos > IBBoard.WarFoundry.GUI.GTK
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