public WipBaseFileVm(Repository repos, WipFile model) : base(true) { Debug.Assert(repos != null); Debug.Assert(model != null); _model = model; #region IsInStaging, IsInStagingFromModel IsInStaging = new ReactiveProperty<bool>(model.IsInStaging) .AddTo(MultipleDisposable); IsInStaging.Subscribe(x => { if (x) model.Stage(); else model.Unstage(); }).AddTo(MultipleDisposable); IsInStagingFromModel = model.ObserveProperty(x => x.IsInStaging) .ToReadOnlyReactiveProperty() .AddTo(MultipleDisposable); IsInStagingFromModel .Subscribe(x => IsInStaging.Value = x) .AddTo(MultipleDisposable); #endregion if (_model.IsBinary == false) this.MakeDiff(_model.Patch); IsSelected = new ReactiveProperty<bool>() .AddTo(MultipleDisposable); DiscardChangesCommand = new ReactiveCommand() .AddTo(MultipleDisposable); DiscardChangesCommand .Subscribe(_ => repos.DiscardChanges(new[] {Path})) .AddTo(MultipleDisposable); }
public void CopyFrom(WipFile source) { IsInStaging = source.IsInStaging; base.CopyFrom(source); }
public WipFileVm(Repository repos, WipFile model) : base(true) { Debug.Assert(repos != null); Debug.Assert(model != null); _model = model; MultipleDisposable.AddFirst(() => { lock (_diffMakingLockObj) { if (IsDiffMaking) _disposeResetEvent = new ManualResetEventSlim(); } }); // Path = model.ObserveProperty(x => x.Path).ToReactiveProperty().AddTo(MultipleDisposable); Status = model.ObserveProperty(x => x.Status).ToReactiveProperty().AddTo(MultipleDisposable); // DiffLines.AddTo(MultipleDisposable); //LinesAdded = model.ObserveProperty(x => x.LinesAdded, false).ToReactiveProperty().AddTo(MultipleDisposable); //LinesDeleted = model.ObserveProperty(x => x.LinesDeleted, false).ToReactiveProperty().AddTo(MultipleDisposable); IsBinary = model.ObserveProperty(x => x.IsBinary, false).ToReactiveProperty().AddTo(MultipleDisposable); #region IsInStaging, IsInStagingFromModel IsInStaging = new ReactiveProperty<bool>(model.IsInStaging) .AddTo(MultipleDisposable); IsInStaging.Subscribe(x => { if (x) model.Stage(); else model.Unstage(); }).AddTo(MultipleDisposable); IsInStagingFromModel = model.ObserveProperty(x => x.IsInStaging) .ToReadOnlyReactiveProperty() .AddTo(MultipleDisposable); IsInStagingFromModel .Subscribe(x => IsInStaging.Value = x) .AddTo(MultipleDisposable); #endregion IsSelected = new ReactiveProperty<bool>() .AddTo(MultipleDisposable); DiscardChangesCommand = new ReactiveCommand() .AddTo(MultipleDisposable); DiscardChangesCommand .Subscribe(_ => repos.DiscardChanges(new[] {Path.Value})) .AddTo(MultipleDisposable); model.ObserveProperty(x => x.Patch, false) .Subscribe(x => Diff = null) .AddTo(MultipleDisposable); }