예제 #1
0
        public void Apply(ScriptEditor editor, Script script)
        {
            editor.Clear();
            editor.ReadOnlySegments.Clear();

            OnApply(editor, script);

            var document         = editor.Document;
            var blocks           = script.Blocks;
            var readonlySegments = editor.ReadOnlySegments.ToList();

            if (blocks.Any() && blocks.Count >= (readonlySegments.Count + 1))
            {
                for (var i = 0; i < readonlySegments.Count; i++)
                {
                    var segment = readonlySegments[i];

                    document.Insert(segment.StartOffset, blocks[i], AnchorMovementType.AfterInsertion);

                    if (i < (readonlySegments.Count - 1))
                    {
                        continue;
                    }

                    document.Insert(segment.EndOffset, blocks[i + 1], AnchorMovementType.BeforeInsertion);
                }
            }

            document.UndoStack.ClearAll();
        }
예제 #2
0
 protected virtual void OnApply(ScriptEditor editor, Script script)
 {
     foreach (var segment in GetSegments())
     {
         editor.Insert(segment, true);
     }
 }