// ================================================================================================
//
// Wikipedia翻訳支援ツール設定名入力ダイアログクラスソース
//
//
// Copyright (C) 2012 Honeplus. All rights reserved.
//
// Honeplus
// ================================================================================================
namespace Honememo.Wptscs
{
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
using Honememo.Models;
using Honememo.Wptscs.Logics;
using Honememo.Wptscs.Models;
using Honememo.Wptscs.Properties;
using Honememo.Wptscs.Utilities;
///
/// Wikipedia翻訳支援ツール設定名入力ダイアログのクラスです。
///
public partial class AddConfigDialog : Form
{
#region private変数
///
/// 登録済みの設定ファイル名。
///
private IgnoreCaseSet configNames;
#endregion
#region コンストラクタ
///
/// コンストラクタ。初期化メソッド呼び出しのみ。
///
/// 登録済みの設定ファイル名。
/// がnull。
public AddConfigDialog(IEnumerable configNames)
{
// Windows フォーム デザイナで生成されたコード
this.InitializeComponent();
// 重複チェック用の既存の設定名一覧を受け取る
this.configNames = new IgnoreCaseSet(configNames);
}
#endregion
#region プロパティ
///
/// 設定名(データやり取り用)。
///
public string ConfigName
{
get;
set;
}
#endregion
#region フォームの各イベントのメソッド
///
/// OKボタン押下時の処理。データ保存。
///
/// イベント発生オブジェクト。
/// 発生したイベント。
private void ButtonOk_Click(object sender, EventArgs e)
{
// 入力値チェック
this.ConfigName = this.textBoxName.Text.Trim();
if (string.IsNullOrEmpty(this.ConfigName))
{
FormUtils.WarningDialog(Resources.WarningMessageEmptyConfigName);
this.textBoxName.Focus();
return;
}
else if (this.ConfigName.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0)
{
FormUtils.WarningDialog(
Resources.WarningMessageInvalidConfigName,
string.Join(", ", Path.GetInvalidFileNameChars()));
this.textBoxName.Focus();
return;
}
else if (this.configNames.Contains(this.ConfigName))
{
FormUtils.WarningDialog(Resources.WarningMessageDuplicateConfigName);
this.textBoxName.Focus();
return;
}
// テキストボックスの設定名を保存、設定名からMediaWiki用のパラメータで設定を作成
Config config = new Config();
config.File = this.ConfigName + Settings.Default.ConfigurationExtension;
config.Translator = typeof(MediaWikiTranslator);
try
{
// 設定ファイルを一旦保存、成功なら画面を閉じる
// ※ エラーの場合、どうしても駄目ならキャンセルボタンで閉じてもらう
config.Save();
this.DialogResult = DialogResult.OK;
}
catch (Exception ex)
{
// 異常時はエラーメッセージを表示
System.Diagnostics.Debug.WriteLine(ex.ToString());
FormUtils.ErrorDialog(Resources.ErrorMessageConfigSaveFailed, ex.Message);
}
}
#endregion
}
}