SystemProperties::SystemProperties() { systemProperties = this; layout.setMargin(5); systemLabel.setAlignment(1.0).setText("System:"); for(auto& emulator : program->emulators) { systemOption.append(ComboButtonItem().setText(emulator->information.name)); } loadLabel.setAlignment(1.0).setText("Load:"); loadBrowse.setText("Browse ...").onActivate([&] { string filters = "Games|"; for(auto& emulator : program->emulators) { for(auto& media : emulator->media) { filters.append("*.", media.type, ":"); } } filters.trimRight(":", 1L); if(auto location = BrowserDialog() .setTitle("Select Boot Game") .setPath(settings["Library/Location"].text()) .setFilters(filters) .openFolder()) { loadEdit.setText(location); //change system option to match the media selected auto suffix = Location::suffix(location).trimLeft(".", 1L); for(auto& emulator : program->emulators) { for(auto& media : emulator->media) { if(media.type == suffix) { for(auto item : systemOption.items()) { if(item.text() == emulator->information.name) { item.setSelected(); return; } } } } } } }); aliasLabel.setAlignment(1.0).setText("Alias:"); acceptButton.onActivate([&] { setVisible(false); settingsManager->systems.accept(); }); cancelButton.setText("Cancel").onActivate([&] { setVisible(false); }); setTitle("System Properties"); setSize({480, layout.minimumSize().height()}); setDismissable(); } auto SystemProperties::append() -> void { setCentered(*settingsManager); systemOption.item(0).setSelected(); loadEdit.setText(""); aliasEdit.setText(""); acceptButton.setText("Append"); setFocused(); setVisible(); systemOption.setFocused(); } auto SystemProperties::modify(Markup::Node system) -> void { setCentered(*settingsManager); systemOption.item(0).setSelected(); for(auto item : systemOption.items()) { if(item.text() == system.text()) item.setSelected(); } loadEdit.setText(system["Load"].text()); aliasEdit.setText(system["Alias"].text()); acceptButton.setText("Modify"); setFocused(); setVisible(); systemOption.setFocused(); }