Mercurial > repos > IBBoard.WarFoundry.GUI.WinForms
annotate FrmPreferences.cs @ 249:a11faa64c333
Re #354: Single-button Add Unit
* Add right-click menu (doesn't work yet because of position maths)
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 20 Aug 2011 17:05:45 +0100 |
parents | 4023a9bdcb8b |
children |
rev | line source |
---|---|
140
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
1 using System; |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
2 using System.Collections.Generic; |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
3 using System.ComponentModel; |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
4 using System.Data; |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
5 using System.Drawing; |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
6 using System.Globalization; |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
7 using System.Text; |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
8 using System.Windows.Forms; |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
9 using IBBoard.Lang; |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
10 using IBBoard.Windows.Forms; |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
11 using IBBoard.Windows.Forms.I18N; |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
12 |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
13 namespace IBBoard.WarFoundry.GUI.WinForms |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
14 { |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
15 public partial class FrmPreferences : IBBForm |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
16 { |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
17 private Preferences prefs; |
144
4023a9bdcb8b
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
140
diff
changeset
|
18 private string initialLang; |
140
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
19 |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
20 public FrmPreferences(Preferences preferences) |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
21 { |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
22 prefs = preferences; |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
23 InitializeComponent(); |
144
4023a9bdcb8b
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
140
diff
changeset
|
24 preferenceSections.Nodes.Add("language"); |
140
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
25 TranslateForm(); |
144
4023a9bdcb8b
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
140
diff
changeset
|
26 initialLang = Translation.GetTranslationLanguage(); |
140
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
27 SetValues(); |
144
4023a9bdcb8b
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
140
diff
changeset
|
28 Translation.TranslationChanged += new MethodInvoker(TranslateForm); |
140
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
29 } |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
30 |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
31 private void TranslateForm() |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
32 { |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
33 ControlTranslator.TranslateComponent(this); |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
34 languagesGroup.Text = Translation.GetTranslation("languagesGroup", "language"); |
144
4023a9bdcb8b
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
140
diff
changeset
|
35 //HACK: This will break as soon as we get multiple sections! |
4023a9bdcb8b
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
140
diff
changeset
|
36 preferenceSections.Nodes[0].Text = Translation.GetTranslation("languagePrefSection", "language"); |
140
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
37 } |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
38 |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
39 private void SetValues() |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
40 { |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
41 ICollection<TranslationLanguage> langs = Translation.GetLanguages(); |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
42 List<TranslationLanguage> sortedLangs = new List<TranslationLanguage>(langs); |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
43 sortedLangs.Sort(CompareLanguages); |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
44 languageList.DataSource = sortedLangs; |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
45 languageList.DisplayMember = "Name"; |
144
4023a9bdcb8b
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
140
diff
changeset
|
46 languageList.SelectedItem = Translation.GetTranslationSet(initialLang).Language; |
140
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
47 languageList.SelectedIndexChanged += new EventHandler(languageList_SelectedIndexChanged); |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
48 } |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
49 |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
50 private void languageList_SelectedIndexChanged(object sender, EventArgs e) |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
51 { |
144
4023a9bdcb8b
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
140
diff
changeset
|
52 TranslationLanguage lang = GetSelectedLanguage(); |
4023a9bdcb8b
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
140
diff
changeset
|
53 bttnOkay.Enabled = !(lang.Equals(Translation.GetTranslationLanguage())); |
4023a9bdcb8b
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
140
diff
changeset
|
54 Translation.LoadTranslation(lang.Code); |
4023a9bdcb8b
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
140
diff
changeset
|
55 } |
4023a9bdcb8b
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
140
diff
changeset
|
56 |
4023a9bdcb8b
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
140
diff
changeset
|
57 private TranslationLanguage GetSelectedLanguage() |
4023a9bdcb8b
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
140
diff
changeset
|
58 { |
4023a9bdcb8b
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
140
diff
changeset
|
59 return (TranslationLanguage)languageList.SelectedItem; |
140
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
60 } |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
61 |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
62 private void bttnCancel_Click(object sender, EventArgs e) |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
63 { |
144
4023a9bdcb8b
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
140
diff
changeset
|
64 Translation.LoadTranslation(initialLang); |
140
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
65 Close(); |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
66 } |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
67 |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
68 private void bttnOkay_Click(object sender, EventArgs e) |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
69 { |
144
4023a9bdcb8b
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
140
diff
changeset
|
70 prefs["language"] = Translation.GetTranslationLanguage(); |
140
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
71 prefs.Save(); |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
72 Close(); |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
73 } |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
74 |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
75 private int CompareLanguages(TranslationLanguage lang1, TranslationLanguage lang2) |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
76 { |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
77 CompareOptions options = CompareOptions.IgnoreCase | CompareOptions.IgnoreKanaType | CompareOptions.IgnoreWidth; |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
78 return CultureInfo.CurrentCulture.CompareInfo.Compare(lang1.Name, lang2.Name, options); |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
79 } |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
80 } |
60c795eca8de
Re #265: Add language preference UI
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
81 } |