protected override void OnInitialized(EventArgs e)
        {
            base.OnInitialized(e);


            CommandBindings.Add(new CommandBinding(ApplicationCommands.Undo,
                                                   (sender, ce) =>
            {
                var undo      = UndoStack.Pop();
                _isUndoHandle = true;
                if (!(UndoCommand?.CanExecute(null) ?? true))
                {
                    return;
                }
                else
                {
                    UndoCommand?.Execute(null);
                }
                undo.UndoAction(undo);
            },
                                                   (sender, ce) =>
            {
                ce.CanExecute = UndoStack.Any();
            }));

            CommandBindings.Add(new CommandBinding(ApplicationCommands.Redo,
                                                   (sender, ce) =>
            {
                var redo      = RedoStack.Pop();
                _isUndoHandle = false;
                if (!(RedoCommand?.CanExecute(null) ?? true))
                {
                    return;
                }
                else
                {
                    RedoCommand?.Execute(null);
                }
                redo.RedoAction(redo);
            },
                                                   (sender, ce) =>
            {
                ce.CanExecute = RedoStack.Any();
            }));
        }
Exemple #2
0
        /// <summary>
        /// 元に戻す
        /// </summary>
        /// <returns>破壊的命令をUndoしたか</returns>
        public bool Undo()
        {
            if (!UndoStack.Any())
            {
                return(false);
            }

            var cmd = UndoStack.Pop();

            cmd.Undo();
            RedoStack.Push(cmd);

            if (cmd.IsDestructive)
            {
                EditCount--;
            }

            return(cmd.IsDestructive);
        }
        public override void Undo()
        {
            if (!UndoStack.Any())
            {
                return;
            }
            // Get Previous Change
            var previousItemChange = UndoStack.Pop();

            var selectedItem = Items[previousItemChange.Index];

            // Set Redo Change
            PushNewItemChange(selectedItem, previousItemChange.Index, RedoStack);

            // Undo
            Items[previousItemChange.Index] = (Furniture)previousItemChange.Item;
            var img = EditorPictureBox.Image;

            EditorPictureBox.Image = ImageGeneration.DrawFurnitureArrows((Bitmap)Inventory.GetItemPic(ItemCellSize,
                                                                                                      ItemsPerRow, Items, MainForm.SaveFile.SaveType, EditorPictureBox.Size), (Furniture[])Items, ItemsPerRow);
            img?.Dispose();

            OnItemChanged(selectedItem, Items[previousItemChange.Index], previousItemChange.Index);
        }
Exemple #4
0
 private bool CanExecuteUndoCommand(object parameter)
 {
     return(UndoStack.Any());
 }