void AddonMenu::toggle_addon(const Addon& addon) { if(addon.is_enabled()) { m_addon_manager.disable_addon(addon.get_id()); } else { m_addon_manager.enable_addon(addon.get_id()); } if(addon.get_type() == Addon::LANGUAGEPACK) { std::unique_ptr<Dialog> dialog(new Dialog); dialog->set_text(_("Please restart SuperTux\nfor these changes to take effect.")); dialog->add_cancel_button(_("OK")); MenuManager::instance().set_dialog(std::move(dialog)); } }
void AddonMenu::install_addon(const Addon& addon) { auto addon_id = addon.get_id(); TransferStatusPtr status = m_addon_manager.request_install_addon(addon_id); std::unique_ptr<DownloadDialog> dialog(new DownloadDialog(status, false, m_auto_install_langpack)); dialog->set_title(str(boost::format( _("Downloading %s") ) % generate_menu_item_text(addon))); status->then([this, addon_id](bool success) { if (success) { try { m_addon_manager.enable_addon(addon_id); if(m_auto_install_langpack) { MenuManager::instance().set_dialog({}); MenuManager::instance().clear_menu_stack(); return; } } catch(const std::exception& err) { log_warning << "Enabling add-on failed: " << err.what() << std::endl; } refresh(); } else { if(m_auto_install_langpack) { MenuManager::instance().set_dialog({}); MenuManager::instance().clear_menu_stack(); } } }); MenuManager::instance().set_dialog(std::move(dialog)); }