/// <summary> /// Wklej. /// </summary> public void Paste() { StringBuilder modifiedContentBuilder = new StringBuilder(subtitlesEditor.SubtitlesContent); SubtitlesContentModificationArea modificationArea = SubtitlesContentModificationArea.PostCaret; SubtitlesEditState editState = subtitlesEditor.EditState; int insertPosition = editState.CaretPosition; Selection selection = editState.Selection; if (selection.Length > 0) { modifiedContentBuilder.Remove(selection.Start, selection.Length); modificationArea = SubtitlesContentModificationArea.Selection; insertPosition = selection.Start; } String contentToInsert = Clipboard.GetText(); modifiedContentBuilder.Insert(insertPosition, contentToInsert); SubtitlesContentModification contentMod = new SubtitlesContentModification(modifiedContentBuilder.ToString(), modificationArea); int postInsertCaret = insertPosition + contentToInsert.Length; SubtitlesEditState newEditState = new SubtitlesEditState(postInsertCaret, new Selection(postInsertCaret, 0)); SubtitlesEditStateModification editMod = new SubtitlesEditStateModification(newEditState); subtitlesEditor.PerformModification(new CompositeModification(contentMod, editMod)); }
/// <summary> /// Wytnij. /// </summary> public void Cut() { SubtitlesEditState editState = subtitlesEditor.EditState; String content = subtitlesEditor.SubtitlesContent; Selection selection = editState.Selection; String contentToCut = content.Substring(selection.Start, selection.Length); Clipboard.SetText(contentToCut); String cuttedContent = content.Remove(selection.Start, selection.Length); SubtitlesContentModification contentMod = new SubtitlesContentModification(cuttedContent, SubtitlesContentModificationArea.Selection); SubtitlesEditState newEditState = new SubtitlesEditState(selection.Start, new Selection(selection.Start, 0)); SubtitlesEditStateModification editMod = new SubtitlesEditStateModification(newEditState); subtitlesEditor.PerformModification(new CompositeModification(contentMod, editMod)); }
private void SetEditorContent(String content) { SubtitlesContentModificationArea modificationArea = (this.Editor.EditState.Selection.Length > 0) ? SubtitlesContentModificationArea.Selection : SubtitlesContentModificationArea.Entire; SubtitlesEditState newEditState = null; if (modificationArea == SubtitlesContentModificationArea.Selection) { //Utworzenie nowego stanu edycjiu uwzględniającego zmiane długości tekstu w wyniku zmiany timingów i dostosowanie długości początkowego //zaznaczenia do nowej długości tekstu, tak odpowiadało ono dalej pierwotnie zaznaczonej treści. int initialContentLength = this.Editor.SubtitlesContent.Length; int modifiedContentLength = content.Length; int contentLengthDelta = modifiedContentLength - initialContentLength; Selection adjustedSelection = new Selection( this.Editor.EditState.Selection.Start, this.Editor.EditState.Selection.Length + contentLengthDelta); newEditState = new SubtitlesEditState(this.Editor.EditState.CaretPosition, adjustedSelection); } else { //Nie ma zaznaczenia, więc można wykorzystać niezmodyfikowany stan edycji. newEditState = this.Editor.EditState; } //Najpierw modyfikacja nowej zawrtości, a później stanu edycji //aby po zmodyfikowaniu zawrtości stan edycji był taki sam jak przed. SubtitlesContentModification contentModification = new SubtitlesContentModification(content, modificationArea); SubtitlesEditStateModification editStateModification = new SubtitlesEditStateModification(newEditState); ModificationComposer composer = new ModificationComposer(); composer.Begin(); composer.Add(contentModification); composer.Add(editStateModification); var modification = composer.End(); this.Editor.PerformModification(modification); }
private void SetEditorContent(String content) { SubtitlesContentModificationArea modificationArea = Editor.EditState.Selection.Length > 0 ? SubtitlesContentModificationArea.Selection : SubtitlesContentModificationArea.Entire; //Najpierw modyfikacja nowej zawrtości, a później stanu edycji //aby po zmodyfikowaniu zawrtości stan edycji był taki sam jak przed. SubtitlesContentModification contentModification = new SubtitlesContentModification(content, SubtitlesContentModificationArea.Entire); SubtitlesEditStateModification editStateModification = new SubtitlesEditStateModification(Editor.EditState); ModificationComposer composer = new ModificationComposer(); composer.Begin(); composer.Add(contentModification); composer.Add(editStateModification); var modification = composer.End(); this.Editor.PerformModification(modification); }