private void BuildBindingReports() { _bindingReports = new ConcurrentDictionary <BindingDescriptor, BindingReport>(); for (var i = 0; i < 269; i++) { if (!Enum.IsDefined(typeof(JoystickOffset), i)) { continue; } var bindingType = Utilities.OffsetToType((JoystickOffset)i); var bindingDescriptor = new BindingDescriptor { Index = i, SubIndex = 0, Type = bindingType }; var category = bindingType == BindingType.Axis ? BindingCategory.Signed : BindingCategory.Momentary; string name; switch (bindingType) { case BindingType.Axis: name = ((JoystickOffset)i).ToString(); break; case BindingType.Button: name = (i - (int)JoystickOffset.Buttons0 + 1).ToString(); break; case BindingType.POV: for (var j = 0; j < 4; j++) { // POV reports are added here var povNum = (i - (int)JoystickOffset.PointOfViewControllers0) / 4; bindingDescriptor.Index = povNum; bindingDescriptor.SubIndex = j; _bindingReports.TryAdd(bindingDescriptor, PovBindingInfos[povNum][j]); } continue; default: continue; } var prefix = bindingType.ToString(); var br = new BindingReport { Title = name, Path = $"{prefix}: {name}", Category = category, BindingDescriptor = bindingDescriptor }; // Button and Axis reports are added here _bindingReports.TryAdd(bindingDescriptor, br); } }
static void ShowMissingParameters(BindingReport report) { Write("One or more required arguments are missing!"); Write(); var context = new BindingContext(); foreach (var parameter in report.PropertiesNotBound.Select(p => new Parameter(p, context)).Where(p => p.Position > 0)) { WritePositionalParameter(parameter, ExampleOutputSettings.DontShowExamples); } WriteHelpInstructions(); }
private void InitKeyReports() { _keyboardReports = new ConcurrentDictionary <BindingDescriptor, BindingReport>(); _keyboardList = new DeviceReportNode { Title = "Keys" }; for (var i = 0; i < 256; i++) { BindingReport report = null; var bd = new BindingDescriptor { Type = BindingType.Button, Index = i, SubIndex = 0 }; report = BuildKeyboardBindingReport(bd); if (report != null) { _keyboardList.Bindings.Add(report); _keyboardReports.TryAdd(bd, report); } // Check if this button has an extended (Right) variant var altBd = new BindingDescriptor { Type = BindingType.Button, Index = i + 256, SubIndex = 0 }; var altReport = BuildKeyboardBindingReport(altBd); if (altReport != null && (report == null || report.Title != altReport.Title)) // If the alReport is not null, and is not the same as the report (if it exists) { _keyboardList.Bindings.Add(altReport); _keyboardReports.TryAdd(altBd, altReport); } } _keyboardList.Bindings.Sort((x, y) => string.Compare(x.Title, y.Title, StringComparison.Ordinal)); }
public BindingReportTextWriter(BindingReport binding, bool showValues) { _showValues = showValues; addDivider(); _report.AddText("Binding report for " + binding.ModelType.FullName); addDivider(); if (showValues) { _report.StartColumns(3); _report.AddColumnData("Property", "Handler", "Values ('[RawValue]' from '[Source]'/[RawKey])"); } else { _report.StartColumns(2); _report.AddColumnData("Property", "Handler"); } addDivider(); binding.AcceptVisitor(this); addDivider(); }
void IBindingReportVisitor.Report(BindingReport report) { _bindingStack.Push(report); }
public void Store(BindingReport report) { _reports.Add(report); }
public void Store(BindingReport report) { _logger.DebugMessage(() => new ModelBindingLog{Report = report}); }
private void InputChanged(ProviderDescriptor providerDescriptor, DeviceDescriptor deviceDescriptor, BindingReport bindingReport, int value) { if (!DeviceBinding.MapCategory(bindingReport.Category).Equals(_deviceBinding.DeviceBindingCategory)) { return; } if (!IsInputValid(bindingReport.Category, value)) { return; } var device = FindDevice(providerDescriptor, deviceDescriptor); _deviceBinding.SetDeviceGuid(device.Guid); _deviceBinding.SetKeyTypeValue((int)bindingReport.BindingDescriptor.Type, bindingReport.BindingDescriptor.Index, bindingReport.BindingDescriptor.SubIndex); EndBindMode(); }
private void BuildInputDeviceReportTemplate() { _bindingReports = new ConcurrentDictionary <BindingDescriptor, BindingReport>(); var node = new DeviceReportNode(); for (var channel = 0; channel < 16; channel++) { var channelInfo = new DeviceReportNode { Title = $"CH {channel + 1}" }; // Notes - Keys, Pads var notesInfo = new DeviceReportNode { Title = "Notes" }; for (var octave = -2; octave < 9; octave++) { var octaveInfo = new DeviceReportNode { Title = $"Octave {octave}" }; for (var noteIndex = 0; noteIndex < NoteNames.Length; noteIndex++) { if (octave == 8 && noteIndex > 7) { continue; // MIDI ends at G8, Skip G# to B } var noteName = NoteNames[noteIndex]; var bd = BuildNoteDescriptor(channel, octave, noteIndex); var br = new BindingReport { Title = $"{noteName}", Path = $"CH{channel + 1} {noteName}{octave}", Category = BindingCategory.Signed, BindingDescriptor = bd }; _bindingReports.TryAdd(bd, br); octaveInfo.Bindings.Add(br); } notesInfo.Nodes.Add(octaveInfo); } channelInfo.Nodes.Add(notesInfo); // ControlChange (CC) - Dials, Sliders etc var controlChangeInfo = new DeviceReportNode { Title = "CtrlChange" }; for (var controllerId = 0; controllerId < 128; controllerId++) { var bd = BuildControlChangeDescriptor(channel, controllerId); var br = new BindingReport { Title = $"ID {controllerId}", Path = $"CH{channel} CC{controllerId}", Category = BindingCategory.Signed, BindingDescriptor = bd }; _bindingReports.TryAdd(bd, br); controlChangeInfo.Bindings.Add(br); } channelInfo.Nodes.Add(controlChangeInfo); // Pitch Wheel var pwbd = new BindingDescriptor { Index = (int)MidiCommandCode.PitchWheelChange, SubIndex = 0 }; var pwbr = new BindingReport { Title = "Pitch Wheel", Path = $"CH{channel + 1} PW", Category = BindingCategory.Signed, BindingDescriptor = pwbd }; _bindingReports.TryAdd(pwbd, pwbr); channelInfo.Bindings.Add(pwbr); // Add the channel node.Nodes.Add(channelInfo); } _inputDeviceReportTemplate = node; }
public void Store(BindingReport report) { _logger.DebugMessage(() => new ModelBindingLog { Report = report }); }
private static void BindModeHandler(ProviderDescriptor provider, DeviceDescriptor device, BindingReport binding, short value) { Console.WriteLine($"BIND MODE: Provider: {provider.ProviderName} | Device: {device.DeviceHandle}/{device.DeviceInstance} | Binding: {binding.BindingDescriptor.Type}/{binding.BindingDescriptor.Index}/{binding.BindingDescriptor.SubIndex} | Title: {binding.Title} | Path: {binding.Path} | Value: {value}"); }
public BindingReport BindAsNestedChild(IModelBinder binder) { _nested = new BindingReport(_property.PropertyType, binder); return _nested; }
static bool RequiredParameterMissing(BindingReport bindingReport) { return(bindingReport.RequiredPropertiesNotBound.Any()); }
private void BuildInputList() { _buttonInfo = new DeviceReportNode { Title = "Buttons" }; _bindingReports = new ConcurrentDictionary <BindingDescriptor, BindingReport>(); for (var b = 0; b < 10; b++) { var bd = new BindingDescriptor { Index = b, Type = BindingType.Button }; var name = Utilities.buttonNames[bd.Index]; var br = new BindingReport { Title = name, Path = $"Button: {name}", Category = BindingCategory.Momentary, BindingDescriptor = bd }; _bindingReports.TryAdd(bd, br); _buttonInfo.Bindings.Add(br); } _axisInfo = new DeviceReportNode { Title = "Axes" }; for (var a = 0; a < 6; a++) { var bd = new BindingDescriptor { Index = a, Type = BindingType.Axis }; var name = Utilities.axisNames[bd.Index]; var br = new BindingReport { Title = name, Path = $"Axis: {name}", Category = (bd.Index < 4 ? BindingCategory.Signed : BindingCategory.Unsigned), BindingDescriptor = bd }; _bindingReports.TryAdd(bd, br); _axisInfo.Bindings.Add(br); } _povInfo = new DeviceReportNode { Title = "DPad" }; for (var d = 0; d < 4; d++) { var bd = new BindingDescriptor { Index = 0, SubIndex = d, Type = BindingType.POV }; var name = Utilities.povNames[bd.SubIndex]; var br = new BindingReport { Title = name, Path = $"DPad: {name}", Category = BindingCategory.Momentary, BindingDescriptor = bd }; _bindingReports.TryAdd(bd, br); _povInfo.Bindings.Add(br); } }
public static void ProcessBindMode(ProviderDescriptor providerDescriptor, DeviceDescriptor deviceDescriptor, BindingReport bindingDescriptor, short state) { Console.WriteLine($"IOWrapper| BindMode: Proivider: {providerDescriptor.ProviderName}, Handle {deviceDescriptor.DeviceHandle}/{deviceDescriptor.DeviceInstance}" + $", Type: {bindingDescriptor.BindingDescriptor.Type}, Index: {bindingDescriptor.BindingDescriptor.Index}/{bindingDescriptor.BindingDescriptor.SubIndex}, State: {state}"); }