changeset 144:4023a9bdcb8b

Re #265: Add language preference UI * Fix army tree translating * Make translations change on list change, not just on "okay"
author IBBoard <dev@ibboard.co.uk>
date Sun, 18 Apr 2010 14:12:09 +0000
parents 28105d9c2b25
children 51463bc1fb21
files FrmArmyTree.cs FrmMain.cs FrmPreferences.cs
diffstat 3 files changed, 21 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/FrmArmyTree.cs	Wed Apr 14 19:59:35 2010 +0000
+++ b/FrmArmyTree.cs	Sun Apr 18 14:12:09 2010 +0000
@@ -56,10 +56,7 @@
 
 		private void TranslateForm()
 		{
-			foreach (Control ctrl in Controls)
-			{
-				ControlTranslator.TranslateControl(ctrl);
-			}
+			ControlTranslator.TranslateControl(this);
 
 			foreach (Component comp in components.Components)
 			{
--- a/FrmMain.cs	Wed Apr 14 19:59:35 2010 +0000
+++ b/FrmMain.cs	Sun Apr 18 14:12:09 2010 +0000
@@ -153,11 +153,10 @@
 			armyTree.MdiParent = this;
 			armyTree.StartPosition = FormStartPosition.Manual;
 			armyTree.Location = new Point(this.DisplayRectangle.Width - armyTree.Width - 10, 10);
-            ControlTranslator.TranslateControl(armyTree);
 
-            // hack to load default files
-            WarFoundryLoader.GetDefault().AddLoadDirectory(new DirectoryInfo(Constants.ExecutablePath + Constants.DirectoryString + DefaultDataDir));
-            WarFoundryLoader.GetDefault().RegisterFactory(WarFoundryXmlFactory.GetFactory());
+			// hack to load default files
+			WarFoundryLoader.GetDefault().AddLoadDirectory(new DirectoryInfo(Constants.ExecutablePath + Constants.DirectoryString + DefaultDataDir));
+			WarFoundryLoader.GetDefault().RegisterFactory(WarFoundryXmlFactory.GetFactory());
 			WarFoundryLoader.GetDefault().FileLoadingFinished += FileLoadingFinished;
 			WarFoundrySaver.SetFileSaver(new WarFoundryXmlSaver());
 		}
--- a/FrmPreferences.cs	Wed Apr 14 19:59:35 2010 +0000
+++ b/FrmPreferences.cs	Sun Apr 18 14:12:09 2010 +0000
@@ -15,49 +15,59 @@
 	public partial class FrmPreferences : IBBForm
 	{
 		private Preferences prefs;
+		private string initialLang;
 
 		public FrmPreferences(Preferences preferences)
 		{
 			prefs = preferences;
 			InitializeComponent();
+			preferenceSections.Nodes.Add("language");
 			TranslateForm();
+			initialLang = Translation.GetTranslationLanguage();
 			SetValues();
+			Translation.TranslationChanged += new MethodInvoker(TranslateForm); 
 		}
 
 		private void TranslateForm()
 		{
 			ControlTranslator.TranslateComponent(this);
 			languagesGroup.Text = Translation.GetTranslation("languagesGroup", "language");
+			//HACK: This will break as soon as we get multiple sections!
+			preferenceSections.Nodes[0].Text = Translation.GetTranslation("languagePrefSection", "language");
 		}
 
 		private void SetValues()
 		{
-			preferenceSections.Nodes.Add(Translation.GetTranslation("languagePrefSection", "language"));
 			ICollection<TranslationLanguage> langs = Translation.GetLanguages();
 			List<TranslationLanguage> sortedLangs = new List<TranslationLanguage>(langs);
 			sortedLangs.Sort(CompareLanguages);
 			languageList.DataSource = sortedLangs;
 			languageList.DisplayMember = "Name";
-			languageList.SelectedItem = Translation.GetTranslationSet(Translation.GetTranslationLanguage()).Language;
+			languageList.SelectedItem = Translation.GetTranslationSet(initialLang).Language;
 			languageList.SelectedIndexChanged += new EventHandler(languageList_SelectedIndexChanged);
 		}
 
 		private void languageList_SelectedIndexChanged(object sender, EventArgs e)
 		{
-			bttnOkay.Enabled = !(languageList.SelectedItem.Equals(Translation.GetTranslationLanguage()));
+			TranslationLanguage lang = GetSelectedLanguage();
+			bttnOkay.Enabled = !(lang.Equals(Translation.GetTranslationLanguage()));
+			Translation.LoadTranslation(lang.Code);
+		}
+
+		private TranslationLanguage GetSelectedLanguage()
+		{
+			return (TranslationLanguage)languageList.SelectedItem;
 		}
 
 		private void bttnCancel_Click(object sender, EventArgs e)
 		{
+			Translation.LoadTranslation(initialLang);
 			Close();
 		}
 
 		private void bttnOkay_Click(object sender, EventArgs e)
 		{
-			TranslationLanguage lang = (TranslationLanguage)languageList.SelectedItem;
-			string langCode = lang.Code;
-			Translation.LoadTranslation(langCode);
-			prefs["language"] = langCode;
+			prefs["language"] = Translation.GetTranslationLanguage();
 			prefs.Save();
 			Close();
 		}