From a747cb548c176dc4f612dcd497e05024886815b9 Mon Sep 17 00:00:00 2001 From: Glenn Rice Date: Fri, 14 Jan 2011 00:15:08 +0000 Subject: [PATCH] Clean up translator callback. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6842 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/Common/Src/MsgHandler.cpp | 14 ++++++-------- Source/Core/Common/Src/MsgHandler.h | 5 ++++- Source/Core/DolphinWX/Src/Main.cpp | 9 +++------ 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/Source/Core/Common/Src/MsgHandler.cpp b/Source/Core/Common/Src/MsgHandler.cpp index 231d9c34b4..63406c6312 100644 --- a/Source/Core/Common/Src/MsgHandler.cpp +++ b/Source/Core/Common/Src/MsgHandler.cpp @@ -25,7 +25,7 @@ bool DefaultMsgHandler(const char* caption, const char* text, bool yes_no, int S static MsgAlertHandler msg_handler = DefaultMsgHandler; static bool AlertEnabled = true; -const char* DefaultStringTranslator(const char* text); +std::string DefaultStringTranslator(const char* text); static StringTranslator str_translator = DefaultStringTranslator; /* Select which of these functions that are used for message boxes. If @@ -62,9 +62,9 @@ bool MsgAlert(bool yes_no, int Style, const char* format, ...) if (!info_caption.length()) { - info_caption = std::string(str_translator(_trans("Information"))); - ques_caption = std::string(str_translator(_trans("Question"))); - warn_caption = std::string(str_translator(_trans("Warning"))); + info_caption = str_translator(_trans("Information")); + ques_caption = str_translator(_trans("Question")); + warn_caption = str_translator(_trans("Warning")); } switch(Style) @@ -80,11 +80,9 @@ bool MsgAlert(bool yes_no, int Style, const char* format, ...) break; } - const char *tr_format = str_translator(format); - va_list args; va_start(args, format); - CharArrayFromFormatV(buffer, 2047, tr_format, args); + CharArrayFromFormatV(buffer, 2047, str_translator(format).c_str(), args); va_end(args); ERROR_LOG(MASTER_LOG, "%s: %s", caption.c_str(), buffer); @@ -113,7 +111,7 @@ bool DefaultMsgHandler(const char* caption, const char* text, bool yes_no, int S } // Default (non) translator -const char* DefaultStringTranslator(const char* text) +std::string DefaultStringTranslator(const char* text) { return text; } diff --git a/Source/Core/Common/Src/MsgHandler.h b/Source/Core/Common/Src/MsgHandler.h index 4924277374..0598a8b791 100644 --- a/Source/Core/Common/Src/MsgHandler.h +++ b/Source/Core/Common/Src/MsgHandler.h @@ -17,6 +17,9 @@ #ifndef _MSGHANDLER_H_ #define _MSGHANDLER_H_ + +#include + // Message alerts enum MSG_TYPE { @@ -27,7 +30,7 @@ enum MSG_TYPE typedef bool (*MsgAlertHandler)(const char* caption, const char* text, bool yes_no, int Style); -typedef const char * (*StringTranslator)(const char* text); +typedef std::string (*StringTranslator)(const char* text); void RegisterMsgAlertHandler(MsgAlertHandler handler); void RegisterStringTranslator(StringTranslator translator); diff --git a/Source/Core/DolphinWX/Src/Main.cpp b/Source/Core/DolphinWX/Src/Main.cpp index 7a54d2510c..10e5987086 100644 --- a/Source/Core/DolphinWX/Src/Main.cpp +++ b/Source/Core/DolphinWX/Src/Main.cpp @@ -56,7 +56,7 @@ END_EVENT_TABLE() #include bool wxMsgAlert(const char*, const char*, bool, int); -const char *wxStringTranslator(const char *); +std::string wxStringTranslator(const char *); CFrame* main_frame = NULL; @@ -471,12 +471,9 @@ bool wxMsgAlert(const char* caption, const char* text, bool yes_no, int /*Style* #endif } -const char *wxStringTranslator(const char *text) +std::string wxStringTranslator(const char *text) { - static char buffer[2048]; - snprintf(buffer, 2048, "%s", - (const char *)wxString(wxGetTranslation(wxString::From8BitData(text))).ToUTF8()); - return buffer; + return (const char *)wxString(wxGetTranslation(wxString::From8BitData(text))).ToUTF8(); } // Accessor for the main window class