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; }
public void Dispose() { StackRedo.Clear(); StackUndo.Clear(); }
public void Snapshot(HistoryEntry entry) { StackRedo.Clear(); StackUndo.Push(entry); }
public void Clear() { StackRedo.Clear(); StackUndo.Clear(); }