public InstallerViewModel() { foreach (var operation in GetAvailableOperations()) { AvailableOperations.Add(operation); } SelectedOperation = AvailableOperations.FirstOrDefault(); }
private void BindFilter(CompositeDisposable disposables) { this.FilterTypeComboBox.AddEnumValues <FilterType>(); this.Bind(this.ViewModel, vm => vm.FilterType, v => v.FilterTypeComboBox.SelectedItem) .DisposeWith(disposables); var filterOperationConverter = Locator.Current.GetService <IEnumConverter <FilterOperation> >(); this.ViewModel !.AvailableOperations .ToObservableChangeSet() .Transform(filterOperationConverter.ToString) .ToCollection() .Subscribe(ops => { this.FilterOperationComboBox.Items.Clear(); ops.ForEach(op => this.FilterOperationComboBox.Items.Add(op)); }) .DisposeWith(disposables); this.Bind(this.ViewModel, vm => vm.FilterOperation, v => v.FilterOperationComboBox.SelectedItem) .DisposeWith(disposables); this.WhenAnyValue(v => v.ViewModel !.FilterOperation) .Select(op => op != FilterOperation.None) .BindTo(this, v => v.FilterOperationComboBox.Visibility) .DisposeWith(disposables); this.Bind(this.ViewModel !, vm => vm.IsNegated, v => v.NegateCheckBox.IsChecked) .DisposeWith(disposables); this.OneWayBind( this.ViewModel !, vm => vm.IsNegated, v => v.ColorStripRectangle.Visibility, BooleanToVisibilityHint.UseHidden) .DisposeWith(disposables); this.WhenAnyValue(v => v.ViewModel !.FilterOperation) .Select(op => op != FilterOperation.None ? 1 : 0) .Subscribe(gridRow => Grid.SetRow(this.NegateCheckBox, gridRow)) .DisposeWith(disposables); this.Bind(this.ViewModel, vm => vm.FilterInput, v => v.InputViewHost.ViewModel) .DisposeWith(disposables); }
/// <summary> /// Function to create video operation settings. Emotion operations should not have any settings /// </summary> /// <param name="operation">The currently selected API operation</param> /// <returns>Returns default <see cref="VideoOperationSettings"/> for the currently selected operation</returns> public VideoOperationSettings CreateVideoOperationSettings(AvailableOperations operation) { VideoOperationSettings videoOperationSettings = null; switch (operation) { case AvailableOperations.Emotion: videoOperationSettings = null; break; case AvailableOperations.FaceDetection: videoOperationSettings = new FaceDetectionOperationSettings(); break; case AvailableOperations.Stabilization: videoOperationSettings = new VideoStabilizationOperationSettings(); break; case AvailableOperations.MotionDetection: videoOperationSettings = new MotionDetectionOperationSettings() { DetectLightChange = true, FrameSamplingValue = 10, MergeTimeThreshold = 10, SensitivityLevel = MotionDetectionOperationSettings.SensitivityLevels.Medium }; break; case AvailableOperations.Thumbnail: videoOperationSettings = new VideoThumbnailOperationSettings() { FadeInFadeOut = true, MaxMotionThumbnailDurationInSecs = 10, OutputAudio = true, OutputType = VideoThumbnailOperationSettings.OutputTypes.Video }; break; default: break; } return(videoOperationSettings); }
private void BindFilter(CompositeDisposable disposables) { this.FilterTypeComboBox.SetEnumValues <FilterType>(); this.Bind(this.ViewModel, vm => vm.FilterType, v => v.FilterTypeComboBox.SelectedItem) .DisposeWith(disposables); var filterOperationConverter = GetDefaultService <IEnumConverter <FilterOperation> >(); this.ViewModel !.AvailableOperations .ToObservableChangeSet() .Transform(filterOperationConverter.ToString) .ToCollection() .Subscribe(ops => this.FilterOperationComboBox.Items = ops.ToList()) .DisposeWith(disposables); this.Bind(this.ViewModel, vm => vm.FilterOperation, v => v.FilterOperationComboBox.SelectedItem) .DisposeWith(disposables); this.WhenAnyValue(v => v.ViewModel !.FilterOperation) .Select(op => op != FilterOperation.None) .BindTo(this, v => v.FilterOperationComboBox.IsVisible) .DisposeWith(disposables); this.Bind(this.ViewModel !, vm => vm.IsNegated, v => v.NegateCheckBox.IsChecked) .DisposeWith(disposables); this.OneWayBind(this.ViewModel !, vm => vm.IsNegated, v => v.ColorStripRectangle.IsVisible) .DisposeWith(disposables); this.WhenAnyValue(v => v.ViewModel !.FilterOperation) .Select(op => op != FilterOperation.None) .BindTo(this, v => v.FilterOperationCaption.IsVisible) .DisposeWith(disposables); this.WhenAnyValue(v => v.ViewModel !.FilterOperation) .Select(op => op != FilterOperation.None ? 2 : 1) .Subscribe(gridRow => Grid.SetRow(this.NegateGrid, gridRow)) .DisposeWith(disposables); this.Bind(this.ViewModel, vm => vm.FilterInput, v => v.InputViewHost.ViewModel) .DisposeWith(disposables); }
public async Task <IntcodeProgramResult> RunProgram(IntcodeProgramInput programInput) { CurrentMemory = new long[InitialMemory.Length * 100]; InitialMemory.CopyTo(CurrentMemory, 0); programInput.MemoryInitialisation(CurrentMemory); InstructionPointer = 0; RelativeBase = 0; Exited = false; Errored = false; Paused = false; Inputs.Clear(); programInput.Inputs.ForEach(AddInput); while (!Exited) { var operationCode = (int)(((CurrentMemory[InstructionPointer] / (decimal)100) - Math.Floor(CurrentMemory[InstructionPointer] / (decimal)100)) * (decimal)100); var matchedOperations = AvailableOperations.Where(op => op.Code == operationCode); if (matchedOperations.Count() == 0) { Exited = true; Errored = true; } else if (matchedOperations.Count() == 1) { try { var operationResult = await matchedOperations.Single().RunOperation(InstructionPointer, CurrentMemory, RelativeBase, GetNextInput); Exited |= operationResult.Exit; if (operationResult.Output.HasValue) { AddOutput(operationResult.Output.Value); } if (operationResult.JumpTo.HasValue) { InstructionPointer = operationResult.JumpTo.Value; } else { InstructionPointer += (1 + (ulong)matchedOperations.Single().ParameterCount); } if (operationResult.AdjustRelativeBase.HasValue) { RelativeBase = RelativeBase + operationResult.AdjustRelativeBase.Value; } } catch (IntcodeOperationException ex) { Exited = true; Errored = true; } } else { throw new Exception("Multiple operation definitions for operation code: " + CurrentMemory[InstructionPointer]); } } var finalMemState = new long[InitialMemory.Length * 100]; CurrentMemory.CopyTo(finalMemState, 0); List <long> finalOutputs; lock (OutputLock) { finalOutputs = Outputs.CloneAsList().ToList(); } return(new IntcodeProgramResult(!Errored, finalMemState, finalOutputs)); }