private void reassignKeyButton_Click(object sender, EventArgs e) { var selectedFeature = featureList.SelectedItem as FeatureSelection; if (selectedFeature == null) { return; } using (var keyAssignDialog = new ButtonAssignment(true)) { keyAssignDialog.StartPosition = FormStartPosition.CenterParent; keyAssignDialog.ShowDialog(this); var existing = KeyBindings.FirstOrDefault(b => b.Binding == (int)keyAssignDialog.KeyboardInput && b.Feature != (int)selectedFeature.Feature); if (keyAssignDialog.KeyboardInput != Keys.None && existing.Binding == (int)keyAssignDialog.KeyboardInput) { MessageBox.Show(string.Format("This shortcut is already assigned to '{0}'", FeatureSelection.GetFeatureName((Feature)existing.Feature)), "Keyboard shortcuts", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { KeyBindings[selectedFeature.Feature] = keyAssignDialog.KeyboardInput; } } UpdateKeyboardShortcut(); }
public void SetMappings(List <KeyboardMapping> mappings) { Mappings = mappings; SuspendLayout(); Controls.Clear(); foreach (var mapping in mappings) { var panel = new Panel(); panel.Dock = DockStyle.Top; panel.Height = 25; var button = new Button(); button.Text = mapping.Name; button.Size = new System.Drawing.Size(75, 23); button.UseVisualStyleBackColor = true; panel.Controls.Add(button); var label = new Label(); label.Location = new System.Drawing.Point(80, 5); label.Text = mapping.MappedToName ?? NesEmulatorHandler.GetInputName(mapping.MappedTo); panel.Controls.Add(label); button.Click += (s, a) => { using (var keyAssignDialog = new ButtonAssignment(false)) { keyAssignDialog.StartPosition = FormStartPosition.CenterParent; keyAssignDialog.ShowDialog(this); mapping.MappedTo = keyAssignDialog.KeyCode; mapping.MappedToName = keyAssignDialog.ButtonName; } label.Text = mapping.MappedToName ?? NesEmulatorHandler.GetInputName(mapping.MappedTo); SelectNextControl(button, true, false, true, true); }; Controls.Add(panel); Controls.SetChildIndex(panel, 0); } ResumeLayout(); }