Пример #1
0
        // 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");
            }
        }
Пример #2
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);
            }
        }