/// <summary> /// AddPresetCommand の実処理を行う。 /// </summary> /// <param name="preset">プリセット。</param> private void ExecuteAddPresetCommand(TalkTextReplacePreset preset) { if (preset == null) { return; } foreach (var p in preset.Items) { // 置換元文字列が同じアイテムを探す var found = this.Items.Value .Select((item, index) => new { item, index }) .FirstOrDefault(v => v.item.OldValue == p.OldValue); if (found == null) { // 無いので新規追加 this.Items.Value.Add(p.Clone()); this.SelectedIndex.Value = this.Items.Value.Count - 1; } else { // あるので上書き this.Items.Value[found.index] = p.Clone(); this.SelectedIndex.Value = found.index; } } }
/// <summary> /// 内包 ViewModel のセットアップを行う。 /// </summary> private void SetupViewModels() { // ViewModel 作成 this.VoiceReplaceItems = new TalkTextReplaceItemsViewModel( this.CanModify, this.MakeConfigProperty(c => c.VoiceReplaceItems)); this.TextFileReplaceItems = new TalkTextReplaceItemsViewModel( this.CanModify, this.MakeConfigProperty(c => c.TextFileReplaceItems)); // 長音プリセット設定 var longSoundPreset = new TalkTextReplacePreset(@"「~」を「ー」に置換"); longSoundPreset.Items.Add( new TalkTextReplaceItem { OldValue = @"~", NewValue = @"ー" }); this.VoiceReplaceItems.Presets.Add(longSoundPreset); // 記号ポーズプリセット設定 var symbolPausePreset = new TalkTextReplacePreset(@"記号ポーズ文字削除セット"); symbolPausePreset.Items.Add( new TalkTextReplaceItem { OldValue = @"#", NewValue = @"" }); symbolPausePreset.Items.Add( new TalkTextReplaceItem { OldValue = @"#", NewValue = @"" }); symbolPausePreset.Items.Add( new TalkTextReplaceItem { OldValue = @"@", NewValue = @"" }); symbolPausePreset.Items.Add( new TalkTextReplaceItem { OldValue = @"@", NewValue = @"" }); symbolPausePreset.Items.Add( new TalkTextReplaceItem { OldValue = @"■", NewValue = @"" }); symbolPausePreset.Items.Add( new TalkTextReplaceItem { OldValue = @"●", NewValue = @"" }); symbolPausePreset.Items.Add( new TalkTextReplaceItem { OldValue = @"▲", NewValue = @"" }); this.TextFileReplaceItems.Presets.Add(symbolPausePreset); }