void ErrorMessage::Blocking(std::string title, std::string message) { class BlockingDismissCallback: public ErrorMessageCallback { public: BlockingDismissCallback() {} virtual void DismissCallback() { ui::Engine::Ref().Break(); } virtual ~BlockingDismissCallback() { } }; new ErrorMessage(title, message, new BlockingDismissCallback()); EngineProcess(); }
bool ConfirmPrompt::Blocking(std::string title, std::string message, std::string buttonText) { class BlockingPromptCallback: public ConfirmDialogueCallback { public: bool & outputResult; BlockingPromptCallback(bool & output): outputResult(output) {} virtual void ConfirmCallback(ConfirmPrompt::DialogueResult result) { if (result == ConfirmPrompt::ResultOkay) outputResult = true; else outputResult = false; ui::Engine::Ref().Break(); } virtual ~BlockingPromptCallback() { } }; bool result; new ConfirmPrompt(title, message, buttonText, new BlockingPromptCallback(result)); EngineProcess(); return result; }
std::string TextPrompt::Blocking(std::string title, std::string message, std::string text, std::string placeholder, bool multiline) { std::string returnString = ""; class BlockingTextCallback: public TextDialogueCallback { std::string & outputString; public: BlockingTextCallback(std::string & output) : outputString(output) {} virtual void TextCallback(TextPrompt::DialogueResult result, std::string resultText) { if(result == ResultOkay) outputString = resultText; else outputString = ""; ui::Engine::Ref().Break(); } virtual ~BlockingTextCallback() { } }; new TextPrompt(title, message, text, placeholder, multiline, new BlockingTextCallback(returnString)); EngineProcess(); return returnString; }