Ejemplo n.º 1
0
        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);
            }
        }