SubtitleEdit/src/Forms/ChooseLanguage.cs
niksedk ebedc3ddda A little cleanup
git-svn-id: https://subtitleedit.googlecode.com/svn/trunk@924 99eadd0c-20b8-1223-b5c4-2a2b2df33de2
2012-01-12 07:16:37 +00:00

114 lines
4.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Windows.Forms;
using Nikse.SubtitleEdit.Logic;
namespace Nikse.SubtitleEdit.Forms
{
public sealed partial class ChooseLanguage : Form
{
public class CultureListItem
{
CultureInfo _cultureInfo;
public CultureListItem(CultureInfo cultureInfo)
{
_cultureInfo = cultureInfo;
}
public override string ToString()
{
return _cultureInfo.NativeName;
}
public string Name
{
get { return _cultureInfo.Name; }
}
}
public string CultureName
{
get
{
int index = comboBoxLanguages.SelectedIndex;
if (index == -1)
return "en-US";
else
return (comboBoxLanguages.Items[index] as CultureListItem).Name;
}
}
public ChooseLanguage()
{
InitializeComponent();
List<string> list = new List<string>();
if (Directory.Exists(Path.Combine(Configuration.BaseDirectory, "Languages")))
{
foreach (string fileName in Directory.GetFiles(Path.Combine(Configuration.BaseDirectory, "Languages"), "*.xml"))
{
string cultureName = Path.GetFileNameWithoutExtension(fileName);
list.Add(cultureName);
}
}
list.Sort();
comboBoxLanguages.Items.Add(new CultureListItem(CultureInfo.CreateSpecificCulture("en-US")));
foreach (string cultureName in list)
{
try
{
if (string.Compare(cultureName, "zh-CHS", true) == 0)
comboBoxLanguages.Items.Add(new CultureListItem(new CultureInfo(0x4)));
else if (string.Compare(cultureName, "zh-CHT", true) == 0)
comboBoxLanguages.Items.Add(new CultureListItem(new CultureInfo(0x7C04)));
else
comboBoxLanguages.Items.Add(new CultureListItem(CultureInfo.CreateSpecificCulture(cultureName)));
}
catch (ArgumentException)
{
System.Diagnostics.Debug.WriteLine(cultureName + " is not a valid culture");
}
}
int index = 0;
for (int i=0; i< comboBoxLanguages.Items.Count; i++)
{
var item = (CultureListItem)comboBoxLanguages.Items[i];
if (item.Name == Configuration.Settings.Language.General.CultureName)
index = i;
}
comboBoxLanguages.SelectedIndex = index;
Text = Configuration.Settings.Language.ChooseLanguage.Title;
labelLanguage.Text = Configuration.Settings.Language.ChooseLanguage.Language;
buttonOK.Text = Configuration.Settings.Language.General.OK;
buttonCancel.Text = Configuration.Settings.Language.General.Cancel;
FixLargeFonts();
}
private void FixLargeFonts()
{
Graphics graphics = this.CreateGraphics();
SizeF textSize = graphics.MeasureString(buttonOK.Text, this.Font);
if (textSize.Height > buttonOK.Height - 4)
{
int newButtonHeight = (int)(textSize.Height + 7 + 0.5);
Utilities.SetButtonHeight(this, newButtonHeight, 1);
}
}
private void ChangeLanguage_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
DialogResult = DialogResult.Cancel;
else if (e.Shift && e.Control && e.Alt && e.KeyCode == Keys.L)
Configuration.Settings.Language.Save();
}
}
}