MCPcopy Create free account
hub / github.com/OpenDungeons/OpenDungeons / onApplySettings

Method onApplySettings

source/modes/SettingsWindow.cpp:523–567  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

521}
522
523bool SettingsWindow::onApplySettings(const CEGUI::EventArgs&)
524{
525 // Check the renderer change and open the pop-up if needed.
526 Ogre::Root* ogreRoot = Ogre::Root::getSingletonPtr();
527 Ogre::RenderSystem* currentRenderer = ogreRoot->getRenderSystem();
528
529 // Changing Ogre renderer needs a restart to allow to load shaders and requested stuff
530 CEGUI::Combobox* rdrCb = static_cast<CEGUI::Combobox*>(
531 mRootWindow->getChild("SettingsWindow/MainTabControl/Video/VideoSP/RendererCombobox"));
532 std::string rendererName = rdrCb->getSelectedItem()->getText().c_str();
533 if (rendererName != currentRenderer->getName())
534 {
535 Ogre::RenderSystem* newRenderer = ogreRoot->getRenderSystemByName(rendererName);
536 if (newRenderer == nullptr)
537 {
538 OD_LOG_ERR("No valid renderer found while searching for: "
539 + std::string(rdrCb->getSelectedItem()->getText().c_str())
540 + ". Restoring the previous value: " + std::string(currentRenderer->getName().c_str()));
541
542 for (size_t i = 0; i < rdrCb->getItemCount(); ++i)
543 {
544 CEGUI::ListboxTextItem* item = static_cast<CEGUI::ListboxTextItem*>(rdrCb->getListboxItemFromIndex(i));
545
546 if (item->getText() == std::string(currentRenderer->getName().c_str()))
547 {
548 rdrCb->setItemSelectState(item, true);
549 rdrCb->setText(item->getText());
550 break;
551 }
552 ++i;
553 }
554 return true;
555 }
556
557 // If render changed, we need to restart game.
558 mApplyWindow->show();
559 // Input only allowed on this window when visible.
560 mApplyWindow->setModalState(true);
561 return true;
562 }
563
564 saveConfig();
565 hide();
566 return true;
567}
568
569bool SettingsWindow::onPopupCancelApplySettings(const CEGUI::EventArgs&)
570{

Callers

nothing calls this directly

Calls 2

setTextMethod · 0.80
showMethod · 0.80

Tested by

no test coverage detected