HotkeySettings::HotkeySettings(TabFrame* parent) : TabFrameItem(parent) { setImage(Icon::Device::Keyboard); setText("Hotkeys"); layout.setMargin(5); mappingList.onActivate([&] { assignMapping(); }); mappingList.onChange([&] { eraseButton.setEnabled((bool)mappingList.selected()); }); resetButton.setText("Reset").onActivate([&] { if(MessageDialog("Are you sure you want to erase all hotkey mappings?").setParent(*settingsManager).question() == "Yes") { for(auto& mapping : inputManager->hotkeys) mapping->unbind(); refreshMappings(); } }); eraseButton.setText("Erase").onActivate([&] { if(auto item = mappingList.selected()) { inputManager->hotkeys[item->offset()]->unbind(); refreshMappings(); } }); reloadMappings(); refreshMappings(); }
InputSettings::InputSettings(TabFrame* parent) : TabFrameItem(parent) { setIcon(Icon::Device::Joypad); setText("Input"); layout.setMargin(5); focusLabel.setText("When Focus is Lost:"); pauseEmulation.setText("Pause Emulation").setChecked(settings["Input/FocusLoss/Pause"].boolean()).onToggle([&] { settings["Input/FocusLoss/Pause"].setValue(pauseEmulation.checked()); allowInput.setEnabled(!pauseEmulation.checked()); }).doToggle(); allowInput.setText("Allow Input").setChecked(settings["Input/FocusLoss/AllowInput"].boolean()).onToggle([&] { settings["Input/FocusLoss/AllowInput"].setValue(allowInput.checked()); }); for(auto& emulator : inputManager->emulators) { emulatorList.append(ComboButtonItem().setText(emulator.name)); } emulatorList.onChange([&] { reloadPorts(); }); portList.onChange([&] { reloadDevices(); }); deviceList.onChange([&] { reloadMappings(); }); mappingList.onActivate([&] { assignMapping(); }); mappingList.onChange([&] { updateControls(); }); assignMouse1.setVisible(false).onActivate([&] { assignMouseInput(0); }); assignMouse2.setVisible(false).onActivate([&] { assignMouseInput(1); }); assignMouse3.setVisible(false).onActivate([&] { assignMouseInput(2); }); resetButton.setText("Reset").onActivate([&] { if(MessageDialog("Are you sure you want to erase all mappings for this device?").setParent(*settingsManager).question() == "Yes") { for(auto& mapping : activeDevice().mappings) mapping->unbind(); refreshMappings(); } }); eraseButton.setText("Erase").onActivate([&] { if(auto mapping = mappingList.selected()) { activeDevice().mappings[mapping->offset()]->unbind(); refreshMappings(); } }); reloadPorts(); }