public IObservable <Unit> Clear()
 {
     UpdateSubjects(true);
     StackRedo.Clear();
     StackUndo.Clear();
     UpdateSubjects();
     return(Observables.Unit);
 }
        public void Dispose()
        {
            StackRedo.Clear();
            StackUndo.Clear();

            _canUndo.Dispose();
            _canRedo.Dispose();
            _canClear.Dispose();
            _canRecord.Dispose();
        }
 public IObservable <HistoryEntry> Record(HistoryEntry entry, Func <HistoryEntry, IObservable <HistoryEntry> > execute)
 {
     StackRedo.Clear();
     UpdateSubjects(true);
     return(execute(entry).Do(updatedEntry =>
     {
         StackUndo.Push(updatedEntry);
         UpdateSubjects();
     }));
 }
        /// <summary>
        /// Выполнение команды
        /// </summary>
        /// <param name="parameter"> Параметр команды </param>
        public void Execute(object parameter)
        {
            //Запоминаем параметр ( чтобы можно было егоже передать в отмену)
            Parameters = (parameter as TParameter);

            //Выполняем команду и запоминаем результат ( чтобы можно было выполнить отмену именно для этого результата)
            Result = this._execute(Parameters, Result) as TResult;

            //Если команду можно отменить
            if (CanUnExecute)
            {
                //Добавляем копию команды в стек команд, которые можно отменить
                AddInUndo(this.Clone() as CommandUndoRedo);

                //Очищаем список отмененнных команд ( началась новая ветка изменений)
                StackRedo.Clear();
            }

            //Очищаем результат ( чтобы не передавать его при повторном выполнении)
            Result = null;

            //Очищаем параметр ( чтобы не передавать его при повторном выполнении)
            Parameters = null;
        }
Пример #5
0
 public void Dispose()
 {
     StackRedo.Clear();
     StackUndo.Clear();
 }
Пример #6
0
 public void Snapshot(HistoryEntry entry)
 {
     StackRedo.Clear();
     StackUndo.Push(entry);
 }
Пример #7
0
 public void Clear()
 {
     StackRedo.Clear();
     StackUndo.Clear();
 }