// A Mapping was selected for editing private void mbrcMappingSelect_Click(object sender, EventArgs e) { // Make sure it's a SimpleMapping if (((Button)sender).Tag is SimpleMapping) { SimpleMapping mapping = (SimpleMapping)(((Button)sender).Tag); // In case it's a direct-switch from one mapping to another. showSimpleMappingDefEditorControls(false); // Update the editor state variables to communicate to the OK method. mappingBeingEdited = mapping; creatingNewMapping = false; enableUiDeviceLabelsForFirstTwoInputDevices(); // Populate UI fields. tbMappingName.Text = mapping.name; tbMappingName.ReadOnly = true; // You can't edit mapping name. // If there are mappings defined for at least one Input Device then update the UI elements on the left side with data from the first one defined. if (mapping.perDeviceSimpleMappings.Count > 0) { SimpleMapping.PerDeviceSimpleMapping perDeviceSimpleMapping = mapping.perDeviceSimpleMappings[0]; cbMappingSplitDevice1.Checked = perDeviceSimpleMapping.splitPoint > 0; nudMappingSplitDevice1.Value = (perDeviceSimpleMapping.splitPoint > 0) ? perDeviceSimpleMapping.splitPoint : 60; nudMappingSplitDevice1.Visible = perDeviceSimpleMapping.splitPoint > 0; lbMappingDevice1UpperPatches.Items.Clear(); lbMappingDevice1UpperPatches.Visible = true; lbMappingDevice1LowerPatches.Items.Clear(); lbMappingDevice1LowerPatches.Visible = perDeviceSimpleMapping.splitPoint > 0; foreach (SimpleMapping.SimpleMappingDefinition mappingDefinition in perDeviceSimpleMapping.simpleMappingDefinitions) { if (mappingDefinition.bLower) { lbMappingDevice1LowerPatches.Items.Add(mappingDefinition); } else { lbMappingDevice1UpperPatches.Items.Add(mappingDefinition); } } } // If there are mappings defined for at least two Input Device then update the UI elements on the right side with the second. We ignore any beyond that. if (mapping.perDeviceSimpleMappings.Count > 1) { // Make InputDevice2 mapping def controls visible cbMappingSplitDevice2.Visible = true; SimpleMapping.PerDeviceSimpleMapping perDeviceMapping = mapping.perDeviceSimpleMappings[1]; lblMappingInputDevice2.Text = perDeviceMapping.inputDeviceName; cbMappingSplitDevice2.Checked = perDeviceMapping.splitPoint > 0; nudMappingSplitDevice2.Value = (perDeviceMapping.splitPoint > 0) ? perDeviceMapping.splitPoint : 60; nudMappingSplitDevice2.Visible = perDeviceMapping.splitPoint > 0; lbMappingDevice2UpperPatches.Items.Clear(); lbMappingDevice2UpperPatches.Visible = true; lbMappingDevice2LowerPatches.Items.Clear(); lbMappingDevice2LowerPatches.Visible = perDeviceMapping.splitPoint > 0; foreach (SimpleMapping.SimpleMappingDefinition mappingDefinition in perDeviceMapping.simpleMappingDefinitions) { if (mappingDefinition.bLower) { lbMappingDevice2LowerPatches.Items.Add(mappingDefinition); } else { lbMappingDevice2UpperPatches.Items.Add(mappingDefinition); } } } else { lbMappingDevice2LowerPatches.Visible = false; cbMappingSplitDevice2.Checked = false; nudMappingSplitDevice2.Value = 60; nudMappingSplitDevice2.Visible = false; } // Expose the Mapping Editor UI elements pnlMappingEdit.Visible = true; tlpMappingEditNameAndButtons.Visible = true; tvMappingEditorPrograms.Focus(); } else { MessageBox.Show("Presently one can only edit SimpleMappings with this UI"); } }
private void btnMappingEditOK_Click(object sender, EventArgs e) { if (creatingNewMapping == true) { // Make sure the new mapping name entered is OK if (tbMappingName.Text.Length == 0) { MessageBox.Show("You must enter a Mapping Name"); return; } if (mapper.configuration.mappings.ContainsKey(tbMappingName.Text)) { MessageBox.Show("Proposed mapping name " + tbMappingName.Text + " is already in use."); return; } mappingBeingEdited.name = tbMappingName.Text; } else { mappingBeingEdited.perDeviceSimpleMappings.Clear(); } // Create and populate the PerDeviceMapping for the first (leftmost) device SimpleMapping.PerDeviceSimpleMapping device1SimpleMapping = new SimpleMapping.PerDeviceSimpleMapping(); device1SimpleMapping.inputDeviceName = lblMappingInputDevice1.Text; device1SimpleMapping.inputDeviceChannel = 0; // Defaulting this... device1SimpleMapping.splitPoint = (cbMappingSplitDevice1.Checked) ? (int)nudMappingSplitDevice1.Value : -1; foreach (Object o in lbMappingDevice1UpperPatches.Items) { if (o is SimpleMapping.SimpleMappingDefinition) { device1SimpleMapping.simpleMappingDefinitions.Add((SimpleMapping.SimpleMappingDefinition)o); } } if (device1SimpleMapping.splitPoint > 0) { foreach (Object o in lbMappingDevice1LowerPatches.Items) { if (o is SimpleMapping.SimpleMappingDefinition) { device1SimpleMapping.simpleMappingDefinitions.Add((SimpleMapping.SimpleMappingDefinition)o); } } } if (device1SimpleMapping.simpleMappingDefinitions.Count > 0) { mappingBeingEdited.perDeviceSimpleMappings.Add(device1SimpleMapping); } // If second device's UI fields are active create and populate the PerDeviceMapping for the second (rightmost) device SimpleMapping.PerDeviceSimpleMapping device2SimpleMapping = new SimpleMapping.PerDeviceSimpleMapping(); device2SimpleMapping.inputDeviceName = lblMappingInputDevice2.Text; device2SimpleMapping.inputDeviceChannel = 0; // Defaulting this... device2SimpleMapping.splitPoint = (cbMappingSplitDevice2.Checked == true) ? (int)nudMappingSplitDevice2.Value : -1; foreach (Object o in lbMappingDevice2UpperPatches.Items) { if (o is SimpleMapping.SimpleMappingDefinition) { device2SimpleMapping.simpleMappingDefinitions.Add((SimpleMapping.SimpleMappingDefinition)o); } } if (device2SimpleMapping.splitPoint > 0) { foreach (Object o in lbMappingDevice2LowerPatches.Items) { if (o is SimpleMapping.SimpleMappingDefinition) { device2SimpleMapping.simpleMappingDefinitions.Add((SimpleMapping.SimpleMappingDefinition)o); } } } if (device2SimpleMapping.simpleMappingDefinitions.Count > 0) { mappingBeingEdited.perDeviceSimpleMappings.Add(device2SimpleMapping); } // Flesh out the mapping internals mappingBeingEdited.bind(mapper.configuration.logicalInputDeviceDict, mapper.configuration.soundGenerators); // Store it if (creatingNewMapping) { mapper.configuration.mappings.Add(mappingBeingEdited.name, mappingBeingEdited); } else { mapper.configuration.mappings[mappingBeingEdited.name] = mappingBeingEdited; } mapper.configuration.dirty = true; // Activate it... mapper.SetMapping(mappingBeingEdited); // Hide the UI elements pnlMappingEdit.Visible = false; tlpMappingEditNameAndButtons.Visible = false; showSimpleMappingDefEditorControls(false); // Refresh selectors that may not be showing this (new) mapping if (creatingNewMapping) { refreshMappingToEditSelector(); btnPatchTreeViewBySG_Click(null, null); } }