Пример #1
0
        public void Undo(int commandNumber)
        {
            string command = "";
            int    i       = 0;

            for (i = 0; i < commandNumber && undoElements.Count > 0; i++)
            {
                UndoRedoElement element = undoElements[undoElements.Count - 1];
                undoElements.RemoveAt(undoElements.Count - 1);
                command = element.TypeString;

                bool executed;
                if (element.Undo(out executed))
                {
                    OnUndoComplete(element.TypeString, element.Args);

                    if (element.TypeString == "AddImageToDoc" || element.TypeString == "AddImageCurrentDoc")
                    {
                        if (executed)
                        {
                            redoElements.Add(element);
                        }
                    }
                    else
                    {
                        redoElements.Add(element);
                    }

                    if (element.TypeString == "RotateCW" || element.TypeString == "RotateCCW")
                    {
                        return;
                    }
                }
                else
                {
                    return;
                }
            }
            OnUndoEnd(command, i, 0);
        }