public static void OverrideValues(UndoRedoStack urs, SettingsPropertyGroupDefinition current, SettingsPropertyGroupDefinition @new)
        {
            var currentSubGroups         = current.SubGroups.ToDictionary(x => x.GroupName, x => x);
            var currentSettingProperties = current.SettingProperties.ToDictionary(x => x.DisplayName, x => x);

            foreach (var nspg in @new.SubGroups)
            {
                if (currentSubGroups.TryGetValue(nspg.GroupName, out var spg))
                {
                    OverrideValues(urs, spg, nspg);
                }
                else
                {
                    MCMUISubModule.Logger.LogWarning("{NewId}::{GroupName} was not found on, {CurrentId}", @new.DisplayGroupName, nspg.GroupName, current.DisplayGroupName);
                }
            }
            foreach (var nsp in @new.SettingProperties)
            {
                if (currentSettingProperties.TryGetValue(nsp.DisplayName, out var sp))
                {
                    OverrideValues(urs, sp, nsp);
                }
                else
                {
                    MCMUISubModule.Logger.LogWarning("{NewId}::{GroupName} was not found on, {CurrentId}", @new.DisplayGroupName, nsp.DisplayName, current.DisplayGroupName);
                }
            }
        }
示例#2
0
        public TextBox(string name, string text = null, bool transparent = false)
            : base(name, Docking.Fill, transparent ? new TransparentTextBoxWidgetStyle() as IWidgetStyle : new TextBoxWidgetStyle() as IWidgetStyle)
        {
            if (transparent)
            {
                Styles.SetStyle(new TransparentTextBoxActiveWidgetStyle(), WidgetStates.Active);
                Styles.SetStyle(new TransparentTextBoxDisabledWidgetStyle(), WidgetStates.Disabled);
            }
            else
            {
                Styles.SetStyle(new TextBoxActiveWidgetStyle(), WidgetStates.Active);
                Styles.SetStyle(new TextBoxDisabledWidgetStyle(), WidgetStates.Disabled);
            }

            UndoRedoManager = new UndoRedoStack(this, 100);

            Font    = SummerGUIWindow.CurrentContext.FontManager.DefaultFont;
            MaxSize = new SizeF(MaxSize.Width, Font.TextBoxHeight);
            Format  = DefaultSingleLineFontFormat;

            TextMargin = new Size(6, 2);

            CursorLineWidth = 1f;
            HideSelection   = true;

            Text = text;
            if (Text != null)
            {
                CursorPosition = Text.Length;
            }

            AllowTabKey = true;
            CanFocus    = true;
        }
示例#3
0
        public MultiLineTextBox(string name, IWidgetStyle style)
            : base(name, Docking.Fill, style)
        {
            m_Font          = SummerGUIWindow.CurrentContext.FontManager.MonoFont;
            RowManager      = new MultiLineTextManager(this, SpecialCharacterFlags.All);
            UndoRedoManager = new UndoRedoStack(this, 100);
            CursorOptions   = CursorFlags.Default;
            CanFocus        = true;
            HideSelection   = true;
            AutoScroll      = true;
            ScrollBars      = ScrollBars.Vertical;
            VScrollBar.SetColorScheme(ScrollBarColorSchemes.Dark);

            Padding   = new Padding(Font.Height, Font.LineHeight / 2);
            CursorPen = new Pen(Theme.Colors.White, 1.5f);

            BreakWidthRulerVisible = true;

            RowManager.LoadingCompleted += delegate {
                RowManager.MoveHome();
                ScrollOffsetX = 0;
                ScrollOffsetY = 0;
                IsLoading     = false;
                OnEnabledChanged();

                RowManager.Paragraphs.UpdateCompleted += delegate {
                    try {
                        EnsureCurrentRowVisible();
                        Invalidate(1);
                    } catch (Exception ex) {
                        ex.LogError();
                    }
                };
            };
        }
示例#4
0
        /// <summary>
        /// Сохранения в файл
        /// </summary>
        /// <param name="undoRedoStack">Стек команд</param>
        /// <param name="filename">Путь к файлу</param>
        public void SaveToFile(UndoRedoStack undoRedoStack,
                               string filename)
        {
            var file = new StreamWriter(filename);

            var redo      = undoRedoStack.RedoStack;
            var undoCount = undoRedoStack.UndoCount;
            var redoCount = undoRedoStack.RedoCount;

            file.WriteLine(redoCount);

            for (int i = 0; i < undoCount; i++)
            {
                undoRedoStack.Undo();
            }

            var redoList = redo.ToList().AsReadOnly();

            foreach (var command in redoList)
            {
                var jsonString = JsonConvert.SerializeObject(command,
                                                             new JsonSerializerSettings
                {
                    TypeNameHandling = TypeNameHandling.All
                });
                file.WriteLine(jsonString);
            }

            for (int i = 0; i < undoCount; i++)
            {
                undoRedoStack.Redo();
            }

            file.Close();
        }
示例#5
0
        public void WhenDoThreeCommands()
        {
            var stack = new UndoRedoStack();
            var command1 = MockRepository.GenerateMock<ICommand>();
            var command2 = MockRepository.GenerateMock<ICommand>();
            var command3 = MockRepository.GenerateMock<ICommand>();
            stack.Do(command1);
            stack.Do(command2);
            stack.Do(command3);
            Assert.IsTrue(stack.CanUndo(command3));
            Assert.IsFalse(stack.CanUndo(command2));
            Assert.IsFalse(stack.CanUndo(command1));

            stack.Undo(command3);
            Assert.IsTrue(stack.CanRedo(command3));
            Assert.IsTrue(stack.CanUndo(command2));
            Assert.IsFalse(stack.CanUndo(command1));

            stack.Undo(command2);
            Assert.IsFalse(stack.CanRedo(command3));
            Assert.IsFalse(stack.CanUndo(command2));
            Assert.IsTrue(stack.CanRedo(command2));
            Assert.IsTrue(stack.CanUndo(command1));

            stack.Undo(command1);

            Assert.IsTrue(stack.CanRedo(command1));
            Assert.IsFalse(stack.CanRedo(command2));
        }
示例#6
0
        public static void OverrideValues(UndoRedoStack urs, ISettingsPropertyDefinition current, ISettingsPropertyDefinition @new)
        {
            if (SettingsUtils.Equals(current, @new))
            {
                return;
            }

            switch (current.SettingType)
            {
            case SettingType.Bool when @new.PropertyReference.Value is bool val:
                urs.Do(new SetValueTypeAction <bool>(current.PropertyReference, val));
                break;

            case SettingType.Int when @new.PropertyReference.Value is int val:
                urs.Do(new SetValueTypeAction <int>(current.PropertyReference, val));
                break;

            case SettingType.Float when @new.PropertyReference.Value is float val:
                urs.Do(new SetValueTypeAction <float>(current.PropertyReference, val));
                break;

            case SettingType.String when @new.PropertyReference.Value is string val:
                urs.Do(new SetStringAction(current.PropertyReference, val));
                break;

            case SettingType.Dropdown when @new.PropertyReference.Value is { } val:
                urs.Do(new SetSelectedIndexAction(current.PropertyReference, new SelectedIndexWrapper(val)));
                break;
            }
        }
示例#7
0
 public static void OverrideValues(UndoRedoStack urs, SettingsPropertyGroupDefinition current, SettingsPropertyGroupDefinition @new)
 {
     foreach (var newSettingPropertyGroup in @new.SubGroups)
     {
         var settingPropertyGroup = current.SubGroups
                                    .FirstOrDefault(x => x.GroupName == newSettingPropertyGroup.GroupName);
         if (settingPropertyGroup is not null)
         {
             OverrideValues(urs, settingPropertyGroup, newSettingPropertyGroup);
         }
         else
         {
             MCMUISubModule.Logger.LogWarning("{NewId}::{GroupName} was not found on, {CurrentId}", @new.DisplayGroupName, newSettingPropertyGroup.GroupName, current.DisplayGroupName);
         }
     }
     foreach (var newSettingProperty in @new.SettingProperties)
     {
         var settingProperty = current.SettingProperties
                               .FirstOrDefault(x => x.DisplayName == newSettingProperty.DisplayName);
         if (settingProperty is not null)
         {
             OverrideValues(urs, settingProperty, newSettingProperty);
         }
         else
         {
             MCMUISubModule.Logger.LogWarning("{NewId}::{GroupName} was not found on, {CurrentId}", @new.DisplayGroupName, newSettingProperty.DisplayName, current.DisplayGroupName);
         }
     }
 }
        private void EditTextBlockAtBlank()
        {
            if (SelectedPageViewModel == null)
            {
                return;
            }
            if (SelectedTextBlock == null)
            {
                return;
            }

            var viewModel = new CreateEditNameForTextBlockDialogViewModel("Редактирование текста", SelectedTextBlock.Text);
            var newName   = viewModel.Show();

            if (string.IsNullOrEmpty(newName))
            {
                return;
            }

            var textBlocks = new List <TextBlock>();

            foreach (var textBlock in SelectedPageViewModel.TextBlocks)
            {
                var text = textBlock == SelectedTextBlock ? newName : textBlock.Text;
                textBlocks.Add(new TextBlock(text, textBlock.X, textBlock.Y));
            }
            UndoRedoStack.ExecuteNewCommand(new ChangeTextBlockListCommand(SelectedPageViewModel, textBlocks));
        }
        private void ImportTextBlocks()
        {
            if (SelectedPageViewModel == null)
            {
                return;
            }

            var openFileDialog = new OpenFileDialog()
            {
                Filter = "JSON файлы (*.json) | *.json"
            };
            var res = openFileDialog.ShowDialog();

            if (res != true)
            {
                return;
            }

            List <TextBlock> textBlocks;

            try
            {
                var fileContent = File.ReadAllText(openFileDialog.FileName);
                textBlocks = JsonConvert.DeserializeObject <List <TextBlock> >(fileContent);
            }
            catch
            {
                MessageBox.Show("Ошибка чтения файла");
                return;
            }

            UndoRedoStack.ExecuteNewCommand(new ChangeTextBlockListCommand(SelectedPageViewModel, textBlocks));
        }
示例#10
0
        public static void OverrideValues(UndoRedoStack urs, ISettingsPropertyDefinition current, ISettingsPropertyDefinition @new)
        {
            if (SettingsUtils.Equals(current, @new))
            {
                return;
            }

            switch (current.SettingType)
            {
            case SettingType.Bool:
                urs.Do(new SetValueTypeAction <bool>(current.PropertyReference, (bool)@new.PropertyReference.Value));
                break;

            case SettingType.Int:
                urs.Do(new SetValueTypeAction <int>(current.PropertyReference, (int)@new.PropertyReference.Value));
                break;

            case SettingType.Float:
                urs.Do(new SetValueTypeAction <float>(current.PropertyReference, (float)@new.PropertyReference.Value));
                break;

            case SettingType.String:
                urs.Do(new SetStringAction(current.PropertyReference, (string)@new.PropertyReference.Value));
                break;

            case SettingType.Dropdown:
                urs.Do(new SetDropdownIndexAction(current.PropertyReference, SettingsUtils.GetSelector(@new.PropertyReference.Value)));
                break;
            }
        }
示例#11
0
        public UndoManager(int undoDepth)
        {
            undoDepth = MathC.Clamp(undoDepth, 1, MaxUndoDepth);

            _undoStack = new UndoRedoStack(undoDepth);
            _redoStack = new UndoRedoStack(undoDepth);
        }
示例#12
0
        /// <summary>
        /// Конструктор представителя
        /// </summary>
        /// <param name="view">Представление</param>
        /// <param name="model">Модель</param>
        public Presenter(IView view, IModel model)
        {
            _currentHandler = null;
            _undoRedoStack  = new UndoRedoStack();

            _view  = view;
            _model = model;

            _model.NewProject();
            _saveState     = SaveState.NewFile;
            _view.SaveType = _saveState;

            _view.ToolPicked        += _view_ToolPicked;
            _view.ParametersChanged += _view_ParametersChanged;
            _view.CanvasCleared     += _view_CanvasCleared;
            _view.FiguresDeleted    += _view_FiguresDeleted;
            _view.FigureCopied      += _view_FigureCopied;
            _view.UndoPressed       += _view_UndoPressed;
            _view.RedoPressed       += _view_RedoPressed;
            _view.CommandStack       = _undoRedoStack;
            _view.FileLoaded        += _view_FileLoaded;
            _view.NewProjectCreated += _view_NewProjectCreated;

            _model.RegisterObserver(this);
        }
示例#13
0
        public void GetNamespaceGuidFromFunctionAssemblyName_CheckIfGuidIsFoundInGivenAssemblyFilename_GuidIsFound()
        {
            var input = "CurveFunc_ID49163ffa-f4e9-406f-8b5c-602c6adc276f_Version757e70ab-555d-42f2-bb0d-1fdbdf77841b";

            var guidGroup = UndoRedoStack.GetNamespaceGuidFromFunctionAssemblyName(input);

            Assert.AreEqual("49163ffa-f4e9-406f-8b5c-602c6adc276f", guidGroup);
        }
示例#14
0
 public void AssignUndoRedoStack(UndoRedoStack urs)
 {
     URS = urs;
     foreach (var settingProp in SettingProperties)
     {
         settingProp.AssignUndoRedoStack(urs);
     }
 }
示例#15
0
 /// <summary>
 /// C'tor
 /// </summary>
 /// <param name="parent">Parent container</param>
 /// <param name="id">Parameter identificator</param>
 /// <param name="designation">Parameter name</param>
 /// <param name="defaultValue">Generic typed parameter default value</param>
 protected DataParameter(DataContainer parent, string id, string designation, T defaultValue)
     : base(parent, id, designation)
 {
     _defaultValue = defaultValue;
     BufferedValue = _defaultValue;
     _value        = _defaultValue;
     _undoRedo     = Parent?.Root?.UndoRedo;
 }
示例#16
0
 /// <summary>
 /// Mimics the same method in SettingsUtils, but it registers every action in URS
 /// </summary>
 /// <param name="urs"></param>
 /// <param name="current"></param>
 /// <param name="new"></param>
 public static void OverrideValues(UndoRedoStack urs, BaseSettings current, BaseSettings @new)
 {
     foreach (var newSettingPropertyGroup in @new.GetSettingPropertyGroups())
     {
         var settingPropertyGroup = current.GetSettingPropertyGroups()
                                    .FirstOrDefault(x => x.DisplayGroupName.ToString() == newSettingPropertyGroup.DisplayGroupName.ToString());
         OverrideValues(urs, settingPropertyGroup, newSettingPropertyGroup);
     }
 }
        /// <summary>
        /// C'tor
        /// </summary>
        /// <param name="parent">Parent container</param>
        /// <param name="id">Container identfication</param>
        /// <param name="designation">Container name</param>
        /// <param name="initDefaultContainers">Action that initializes the default configuration of this container's dynamic sub containers</param>
        protected DataDynParentContainer(DataContainer parent, string id, string designation, Action <DataDynParentContainer <T> > initDefaultContainers = null)
            : base(parent, id, designation)
        {
            _initDefaultContainers = initDefaultContainers;
            _initDefaultContainers?.Invoke(this);

            Items.ForEach(c => _bufferedContainers.Add(c));

            _undoRedo = Root?.UndoRedo;
        }
示例#18
0
        public void TestMethod1()
        {
            UndoRedoStack s = new UndoRedoStack();

            s.CellContentsChange("a1", "1");

            string a, b;

            Assert.IsTrue(s.TryUndo(t => t, out a, out b));
        }
示例#19
0
 public Commands(string initialRtf)
 {
     _undoStack = new UndoRedoStack();
     _undoStack.Push(initialRtf, 0);
     _redoStack                  = new UndoRedoStack();
     _lastUndoActionName         = string.Empty;
     _lastSavedText              = string.Empty;
     _lastRemovedRtf             = string.Empty;
     _lastUndoActionWasBackspace = false;
 }
示例#20
0
 public void ShouldTrackUndoAndRedos()
 {
     var stack = new UndoRedoStack();
     var command = MockRepository.GenerateMock<ICommand>();
     stack.Do(command);
     Assert.IsTrue(stack.CanUndo(command));
     stack.Undo(command);
     Assert.IsFalse(stack.CanUndo(command));
     Assert.IsTrue(stack.CanRedo(command));
 }
示例#21
0
 private void Clear(UndoRedoStack stack, bool silent = false)
 {
     if (!StackValid(stack))
     {
         return;
     }
     stack.Clear();
     if (!silent)
     {
         UndoStackChanged?.Invoke(this, new EventArgs());
     }
 }
示例#22
0
 private void InitUndoRedoStack()
 {
     undoRedo = new UndoRedoStack();
     undoRedo.OnUndoRedoAction.SubscribeForLifetime(Refresh, this);
     undoRedo.OnUndoRedoAction.SubscribeForLifetime(() =>
     {
         if (undoRedo.UndoElements.FirstOrDefault() is ClearPendingChangesAction == false)
         {
             SetPendingChanges(true);
         }
     }, this);
     undoRedo.OnEmptyUndoStack.SubscribeForLifetime(() => SetPendingChanges(false), this);
 }
示例#23
0
 public static void OverrideValues(UndoRedoStack urs, SettingsPropertyGroupDefinition current, SettingsPropertyGroupDefinition @new)
 {
     foreach (var newSettingPropertyGroup in @new.SubGroups)
     {
         var settingPropertyGroup = current.SubGroups
                                    .FirstOrDefault(x => x.DisplayGroupName.ToString() == newSettingPropertyGroup.DisplayGroupName.ToString());
         OverrideValues(urs, settingPropertyGroup, newSettingPropertyGroup);
     }
     foreach (var newSettingProperty in @new.SettingProperties)
     {
         var settingProperty = current.SettingProperties
                               .FirstOrDefault(x => x.DisplayName == newSettingProperty.DisplayName);
         OverrideValues(urs, settingProperty, newSettingProperty);
     }
 }
        /// <summary>
        /// Mimics the same method in SettingsUtils, but it registers every action in URS
        /// </summary>
        /// <param name="urs"></param>
        /// <param name="current"></param>
        /// <param name="new"></param>
        public static void OverrideValues(UndoRedoStack urs, BaseSettings current, BaseSettings @new)
        {
            var currentDict = current.GetUnsortedSettingPropertyGroups().ToDictionary(x => x.GroupName, x => x);

            foreach (var nspg in @new.GetAllSettingPropertyGroupDefinitions())
            {
                if (currentDict.TryGetValue(nspg.GroupName, out var spg))
                {
                    OverrideValues(urs, spg, nspg);
                }
                else
                {
                    MCMUISubModule.Logger.LogWarning("{NewId}::{GroupName} was not found on, {CurrentId}", @new.Id, nspg.GroupName, current.Id);
                }
            }
        }
示例#25
0
 /// <summary>
 /// Mimics the same method in SettingsUtils, but it registers every action in URS
 /// </summary>
 /// <param name="urs"></param>
 /// <param name="current"></param>
 /// <param name="new"></param>
 public static void OverrideValues(UndoRedoStack urs, BaseSettings current, BaseSettings @new)
 {
     foreach (var newSettingPropertyGroup in @new.GetAllSettingPropertyGroupDefinitions())
     {
         var settingPropertyGroup = current.GetAllSettingPropertyGroupDefinitions()
                                    .FirstOrDefault(x => x.GroupName == newSettingPropertyGroup.GroupName);
         if (settingPropertyGroup is not null)
         {
             OverrideValues(urs, settingPropertyGroup, newSettingPropertyGroup);
         }
         else
         {
             MCMUISubModule.Logger.LogWarning("{NewId}::{GroupName} was not found on, {CurrentId}", @new.Id, newSettingPropertyGroup.GroupName, current.Id);
         }
     }
 }
示例#26
0
        private void DeleteTextBlockFromBlank()
        {
            if (SelectedPageViewModel == null)
            {
                return;
            }
            if (SelectedTextBlock == null)
            {
                return;
            }

            var textBlocks = SelectedPageViewModel.TextBlocks.ToList();

            textBlocks.Remove(SelectedTextBlock);
            UndoRedoStack.ExecuteNewCommand(new ChangeTextBlockListCommand(SelectedPageViewModel, textBlocks));
        }
示例#27
0
        /// <summary>Initializes a new instance of the <see cref="DockControl"/> class.</summary>
        public DockControl()
        {
            bool designMode = DesignerProperties.GetIsInDesignMode(this);

            VerifyLicense(designMode);
            _dockItems       = new DockItemCollection(this);
            _floatingWindows = new FloatingWindowCollection();
            LeftDockTree     = new DockTree(this, DockTreePosition.Left);
            RightDockTree    = new DockTree(this, DockTreePosition.Right);
            TopDockTree      = new DockTree(this, DockTreePosition.Top);
            BottomDockTree   = new DockTree(this, DockTreePosition.Bottom);
            DocumentDockTree = new DockTree(this, DockTreePosition.Document);
            _undoStack       = new UndoRedoStack <ICommand>(MaxUndoLevel);
            _redoStack       = new UndoRedoStack <ICommand>(MaxUndoLevel);
            PaneManager      = new DockPaneManager(this);
            this.Loaded     += new RoutedEventHandler(OnLoaded);
        }
示例#28
0
文件: TextBox.cs 项目: xvwvx/Myra
        private void UndoRedo(UndoRedoStack undoStack, UndoRedoStack redoStack)
        {
            if (undoStack.Stack.Count == 0)
            {
                return;
            }

            var record = undoStack.Stack.Pop();

            try
            {
                _suppressRedoStackReset = true;
                switch (record.OperationType)
                {
                case OperationType.Insert:
                    redoStack.MakeDelete(Text, record.Where, record.Length);
                    DeleteChars(record.Where, record.Length);
                    UserSetCursorPosition(record.Where);
                    break;

                case OperationType.Delete:
                    if (InsertChars(record.Where, record.Data))
                    {
                        redoStack.MakeInsert(record.Where, record.Data.Length);
                        UserSetCursorPosition(record.Where + record.Data.Length);
                    }
                    break;

                case OperationType.Replace:
                    redoStack.MakeReplace(Text, record.Where, record.Length, record.Data.Length());
                    DeleteChars(record.Where, record.Length);
                    InsertChars(record.Where, record.Data);
                    break;
                }
            }
            finally
            {
                _suppressRedoStackReset = false;
            }

            ResetSelection();
        }
示例#29
0
        private void Engage(UndoRedoStack stack)
        {
            if (!StackValid(stack))
            {
                return;
            }
            var counterStack = stack == _undoStack ? _redoStack : _undoStack;

            var instance = stack.Pop();

            if (instance == null)
            {
                return;
            }

            if (instance.All(item => item.Valid == null || item.Valid()))
            {
                // Generate and push redo instance, if exists. If not, reset redo stack, since action is irreversible.
                var redoList = instance.Where(item => item.RedoInstance != null).ToList().ConvertAll(item => item.RedoInstance());
                if (redoList.Count > 0)
                {
                    counterStack.Push(redoList);
                }
                else
                {
                    counterStack.Clear();
                }

                // Invoke original undo instance
                instance.ForEach(item => item.UndoAction?.Invoke());
            }
            else
            {
                MessageSent?.Invoke(this, new UndoManagerMessageEventArgs()
                {
                    Message = "Level state changed. " + (counterStack == _redoStack ? "Undo" : "Redo") + " action ignored."
                });
            }

            UndoStackChanged?.Invoke(this, new EventArgs());
        }
示例#30
0
        /**
         *  Primary WPF-handler called before updateing the user interface
         */
        void CompositionTarget_RenderingHandler(object sender, EventArgs e)
        {
            UpdateTimeSinceLastFrame();

            if (CompositionTargertRenderingEvent != null)
            {
                CompositionTargertRenderingEvent(this, EventArgs.Empty);
            }

#if USE_SOCKETS
            try
            {
                UpdateRequiredAfterUserInteraction |= UndoRedoStack.ProcessReceivedCommands();
            }
            catch (Exception exception)
            {
                Logger.Warn("Error when excecuting a remote command:\n'{0}'", exception.Message);
            }
#endif

            if (UpdateRequiredAfterUserInteraction ||
                (MainWindow != null && Math.Abs(MainWindow.CompositionView.PlaySpeed) > 0.001))
            {
                UpdateGlobalTime();

                if (UpdateAfterUserInteractionEvent != null)
                {
                    UpdateAfterUserInteractionEvent(this, new EventArgs());
                }
                UpdateRequiredAfterUserInteraction = false;

                // Flush the dispatcher queue if too long (this is likely to result in frame drops but will ensure responsiveness of controls)
                if (_queueLength > 1)
                {
                    DoEvents();
                }
            }
        }
示例#31
0
        public void PointSelected(double x, double y)
        {
            SelectPointMode = false;
            if (SelectedPageViewModel == null)
            {
                return;
            }

            var viewModel = new CreateEditNameForTextBlockDialogViewModel("Добавление текста", "");
            var name      = viewModel.Show();

            if (string.IsNullOrEmpty(name))
            {
                return;
            }

            x -= 2;
            y -= 5;

            var textBlocks = SelectedPageViewModel.TextBlocks.Select(i => (TextBlock)i.Clone()).ToList();

            textBlocks.Add(new TextBlock(name, (int)x, (int)y));
            UndoRedoStack.ExecuteNewCommand(new ChangeTextBlockListCommand(SelectedPageViewModel, textBlocks));
        }
示例#32
0
 private void CloseDocument()
 {
     UndoRedoStack.Clear();
     Pages.Clear();
 }
 public void SetUp()
 {
     stack = new UndoRedoStack<ICommand>();
     handler = new CommandHandler(stack);
 }
 public void SetUp()
 {
     stack = new UndoRedoStack<TestObject>();
 }
 public void TearDown()
 {
     stack = null;
 }