private void ShowTrain(bool UserSelectedEncoding) {
if (!UserSelectedEncoding) {
comboboxTrainEncoding.Tag = new object();
comboboxTrainEncoding.SelectedIndex = 0;
comboboxTrainEncoding.Items[0] = "(UTF-8)";
comboboxTrainEncoding.Tag = null;
Result.TrainEncoding = System.Text.Encoding.UTF8;
switch (TextEncoding.GetEncodingFromFile(Result.TrainFolder, "train.txt")) {
case TextEncoding.Encoding.Utf8:
comboboxTrainEncoding.SelectedIndex = 0;
comboboxTrainEncoding.Items[0] = "(UTF-8)";
Result.TrainEncoding = System.Text.Encoding.UTF8;
break;
case TextEncoding.Encoding.Utf16Le:
comboboxTrainEncoding.SelectedIndex = 0;
comboboxTrainEncoding.Items[0] = "(UTF-16 little endian)";
Result.TrainEncoding = System.Text.Encoding.Unicode;
break;
case TextEncoding.Encoding.Utf16Be:
comboboxTrainEncoding.SelectedIndex = 0;
comboboxTrainEncoding.Items[0] = "(UTF-16 big endian)";
Result.TrainEncoding = System.Text.Encoding.BigEndianUnicode;
break;
case TextEncoding.Encoding.Utf32Le:
comboboxTrainEncoding.SelectedIndex = 0;
comboboxTrainEncoding.Items[0] = "(UTF-32 little endian)";
Result.TrainEncoding = System.Text.Encoding.UTF32;
break;
case TextEncoding.Encoding.Utf32Be:
comboboxTrainEncoding.SelectedIndex = 0;
comboboxTrainEncoding.Items[0] = "(UTF-32 big endian)";
Result.TrainEncoding = System.Text.Encoding.GetEncoding(12001);
break;
case TextEncoding.Encoding.Shift_JIS:
comboboxTrainEncoding.SelectedIndex = 0;
comboboxTrainEncoding.Items[0] = "(SHIFT_JIS)";
Result.TrainEncoding = System.Text.Encoding.GetEncoding(932);
break;
}
int i;
for (i = 0; i < Interface.CurrentOptions.TrainEncodings.Length; i++) {
if (Interface.CurrentOptions.TrainEncodings[i].Value == Result.TrainFolder) {
int j;
for (j = 1; j < EncodingCodepages.Length; j++) {
if (EncodingCodepages[j] == Interface.CurrentOptions.TrainEncodings[i].Codepage) {
comboboxTrainEncoding.SelectedIndex = j;
Result.TrainEncoding = System.Text.Encoding.GetEncoding(EncodingCodepages[j]);
break;
}
}
if (j == EncodingCodepages.Length) {
comboboxTrainEncoding.SelectedIndex = 0;
Result.TrainEncoding = System.Text.Encoding.UTF8;
}
break;
}
}
panelTrainEncoding.Enabled = true;
comboboxTrainEncoding.Tag = null;
}
{
// train image
string File = OpenBveApi.Path.CombineFile(Result.TrainFolder, "train.png");
if (!System.IO.File.Exists(File)) {
File = OpenBveApi.Path.CombineFile(Result.TrainFolder, "train.bmp");
}
if (System.IO.File.Exists(File)) {
try {
pictureboxTrainImage.Image = Image.FromFile(File);
} catch {
pictureboxTrainImage.Image = null;
TryLoadImage(pictureboxTrainImage, "train_error.png");
}
} else {
TryLoadImage(pictureboxTrainImage, "train_unknown.png");
}
}
{
// train description
string File = OpenBveApi.Path.CombineFile(Result.TrainFolder, "train.txt");
if (System.IO.File.Exists(File)) {
try {
string trainText = System.IO.File.ReadAllText(File, Result.TrainEncoding);
trainText = Interface.ConvertNewlinesToCrLf(trainText);
textboxTrainDescription.Text = trainText;
textboxTrainEncodingPreview.Text = trainText;
} catch {
textboxTrainDescription.Text = System.IO.Path.GetFileName(Result.TrainFolder);
textboxTrainEncodingPreview.Text = "";
}
} else {
textboxTrainDescription.Text = System.IO.Path.GetFileName(Result.TrainFolder);
textboxTrainEncodingPreview.Text = "";
}
}
groupboxTrainDetails.Visible = true;
labelTrainEncoding.Enabled = true;
labelTrainEncodingPreview.Enabled = true;
textboxTrainEncodingPreview.Enabled = true;
buttonStart.Enabled = Result.RouteFile != null & Result.TrainFolder != null;
}