public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { int ifrom = 0; int ito = 0; KeyConfigData KD = (KeyConfigData)value; ObservableCollection <string> dist = new ObservableCollection <string>(); if (value == null) { return(dist); } while (ito < KD.assign.Length) { //最初の{を検索 ifrom = KD.assign.IndexOf("{", ito); if (ifrom >= 0) { //{が発見できた場合}を検索 ito = KD.assign.IndexOf("}", ifrom); if (ito >= 0) { //{から}までをショートカットとして設定 dist.Add(KD.assign.Substring(ifrom + 1, ito - ifrom - 1)); } } else { break; } } return(dist); }
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { ObservableCollection <string> aaa = (ObservableCollection <string>)value; KeyConfigData KD = new KeyConfigData(); foreach (string tmp in aaa) { //1レコードごとに{}で囲んで結合前後にスペース KD.assign += " {" + tmp + "} "; } return(KD); }
/// <summary> /// アプリケーション設定からショートカットキー全定義取得 /// データグリッドの一覧作成元になります /// </summary> /// <param name="KeyConvDef"></param> public void GetAllDef(KeyConfigList KL) { StringCollection src = Properties.Settings.Default.AllKeyDef; //ショートカットキー全定義取得 foreach (string str in src) { KeyConfigData fd = new KeyConfigData(); //最初の空白を検索 int ito = str.IndexOf(" "); //最初の空白までをカテゴリとして抽出 fd.Cat = str.Substring(0, ito); int ifrom = ito + 1; ito = str.IndexOf(" ", ifrom); //次の空白までをIDとして抽出 fd.ID = Convert.ToInt32(str.Substring(ifrom, ito - ifrom)); ifrom = ito + 1; //残りを機能名として設定 fd.name = str.Substring(ifrom); KL.Add(fd); } }
/// <summary> /// 猫ペイントのkey.txtを取得 /// 取得したキー割り当てを一覧から探して設定 /// 一覧にない場合(4352以降のスクリプトショートカット)は追加 /// </summary> public void ReadNekoKeytxt(string NpDir, int ScriptID, Dictionary <string, int> Assigned, Dictionary <int, string> AllName, KeyConfigList KL) { try { //重複定義回避用 List <int> dupChk = new List <int>(); // シフトJISのファイルの読み込み string[] lines1 = File.ReadAllLines(NpDir + "\\config\\key.txt", System.Text.Encoding.GetEncoding("Shift_JIS")); foreach (string line in lines1) { int ID; string KEY; string name = ""; List <string> tmpDiv = new List <string>(); //最初の空白を検索 int ito = line.IndexOf(" "); //最初の空白までをIDとして抽出 ID = Convert.ToInt32(line.Substring(0, ito)); //重複チェック if (dupChk.Contains(ID)) { //重複していたら二件目以降を無視 continue; } dupChk.Add(ID); //最初の{を検索 int ifrom = ito + 1; ito = line.IndexOf("{", ifrom); if (ito > 0) { name = line.Substring(ifrom, ito - ifrom); //{が発見できた場合(ショートカット設定済み) //{までを機能名として設定 ifrom = ito; //最後の}を検索 ito = line.LastIndexOf("}"); if (ito > ifrom) { //{から}までを取得。前後にスペースを付加 KEY = " " + line.Substring(ifrom, ito - ifrom + 1) + " "; //作成済みの一覧からIDを検索 bool Flg = false; foreach (var fd in KL) { if (fd.ID == ID) { //IDの一致するレコードにショートカット設定 fd.assign = KEY; //分割後の割り当てを取得 fd.DivAssign(tmpDiv); //重複回避用一時領域 List <string> tmp = new List <string>(); foreach (string div in tmpDiv) { if (Assigned.ContainsKey(div) != true) { //割り当て済みリストに追加 Assigned.Add(div, ID); tmp.Add(div); } } if (tmp.Count > 0) { fd.CatAssign(tmp); } else { fd.assign = ""; } Flg = true; break; } } if (Flg == false) { AllName.Add(ID, name); KeyConfigData fd = new KeyConfigData(); fd.ID = ID; fd.name = name; fd.assign = KEY; fd.Cat = "スクリプト"; KL.Add(fd); fd.DivAssign(tmpDiv); foreach (string div in tmpDiv) { //割り当て済みリストに追加 Assigned.Add(div, ID); } } } } else { name = line.Substring(ifrom); //作成済みの一覧からIDを検索 bool Flg = false; foreach (var fd in KL) { if (fd.ID == ID) { Flg = true; break; } } if (Flg == false) { AllName.Add(ID, name); KeyConfigData fd = new KeyConfigData(); fd.ID = ID; fd.name = name; fd.Cat = "スクリプト"; KL.Add(fd); } } } } catch (Exception e) { MessageBox.Show(e.Message); } }