nJoy: Enabled keyboard input (only for buttons so far) through wxWidgets in the main application. It only works when you render to the main window.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1706 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
John Peterson
2008-12-28 18:50:24 +00:00
parent de7abc6bd0
commit 5e5e507121
20 changed files with 460 additions and 153 deletions

View File

@ -189,24 +189,45 @@ inline u64 swap64(u64 data) {return(((u64)swap32(data) << 32) | swap32(data >> 3
} // end of namespace Common
// Utility functions
// Msg Alert
//////////////////////////////////////////////////////////////////////////////////////////
// Utility functions
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
///////////////////////////
// Message alerts
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
enum MSG_TYPE
{
INFORMATION,
QUESTION,
WARNING,
};
typedef bool (*MsgAlertHandler)(const char* caption, const char* text,
bool yes_no);
bool yes_no, int Style);
void RegisterMsgAlertHandler(MsgAlertHandler handler);
extern bool MsgAlert(const char* caption, bool yes_no, const char* format, ...);
extern bool MsgAlert(const char* caption, bool yes_no, int Style, const char* format, ...);
#ifdef _WIN32
#define SuccessAlert(format, ...) MsgAlert("SUCCESS", false, format, __VA_ARGS__)
#define PanicAlert(format, ...) MsgAlert("PANIC", false, format, __VA_ARGS__)
#define PanicYesNo(format, ...) MsgAlert("PANIC", true, format, __VA_ARGS__)
#define AskYesNo(format, ...) MsgAlert("ASK", true, format, __VA_ARGS__)
#define SuccessAlert(format, ...) MsgAlert("Information", false, INFORMATION, format, __VA_ARGS__)
#define PanicAlert(format, ...) MsgAlert("Warning", false, WARNING, format, __VA_ARGS__)
#define PanicYesNo(format, ...) MsgAlert("Warning", true, WARNING, format, __VA_ARGS__)
#define AskYesNo(format, ...) MsgAlert("Question", true, QUESTION, format, __VA_ARGS__)
#else
#define SuccessAlert(format, ...) MsgAlert("SUCCESS", false, format, ##__VA_ARGS__)
#define PanicAlert(format, ...) MsgAlert("PANIC", false, format, ##__VA_ARGS__)
#define PanicYesNo(format, ...) MsgAlert("PANIC", true, format, ##__VA_ARGS__)
#define AskYesNo(format, ...) MsgAlert("ASK", true, format, ##__VA_ARGS__)
#define SuccessAlert(format, ...) MsgAlert("SUCCESS", false, INFORMATION, format, ##__VA_ARGS__)
#define PanicAlert(format, ...) MsgAlert("PANIC", false, WARNING, format, ##__VA_ARGS__)
#define PanicYesNo(format, ...) MsgAlert("PANIC", true, WARNING, format, ##__VA_ARGS__)
#define AskYesNo(format, ...) MsgAlert("ASK", true, QUESTION, format, ##__VA_ARGS__)
#endif
///////////////////////////
// Logging
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern void __Log(int logNumber, const char* text, ...);
extern void __Logv(int log, int v, const char *format, ...);
@ -298,7 +319,10 @@ void Host_UpdateLogDisplay();
#define _assert_msg_(...)
#endif
// compile time asserts
//////////////////////////////////////////////////////////////////////////////////////////
// Compile time asserts
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
namespace
{
@ -313,8 +337,9 @@ namespace
CompileTimeAssert<_SECURE_SCL==0> x;
#endif
#endif
}
//////////////////////////////////
#endif // #ifndef _COMMON_H

View File

@ -15,53 +15,71 @@
// Official SVN repository and contact information can be found at
// http://code.google.com/p/dolphin-emu/
#include <stdio.h>
#include "Common.h"
//////////////////////////////////////////////////////////////////////////////////////
// Include and declarations
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#include <stdio.h> // System
#include "Common.h" // Local
#include "StringUtil.h"
bool DefaultMsgHandler(const char* caption, const char* text, bool yes_no);
bool DefaultMsgHandler(const char* caption, const char* text, bool yes_no, int Style);
static MsgAlertHandler msg_handler = DefaultMsgHandler;
/////////////////////////////
/* Select which of these functions that are used for message boxes. If wxWidgets is enabled
we will use wxMsgAlert() that is defined in main.cpp */
void RegisterMsgAlertHandler(MsgAlertHandler handler)
{
msg_handler = handler;
msg_handler = handler;
}
bool MsgAlert(const char* caption, bool yes_no, const char* format, ...)
{
char buffer[2048];
va_list args;
bool ret = false;
va_start(args, format);
CharArrayFromFormatV(buffer, 2048, format, args);
LOG(MASTER_LOG, "%s: %s", caption, buffer);
if (msg_handler)
{
ret = msg_handler(caption, buffer, yes_no);
}
va_end(args);
return ret;
}
bool DefaultMsgHandler(const char* caption, const char* text, bool yes_no)
/////////////////////////////////////////////////////////////
/* This is the first stop for messages where the log is updated and the correct windows
is shown */
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool MsgAlert(const char* caption, bool yes_no, int Style, const char* format, ...)
{
#ifdef _WIN32
if (yes_no)
return IDYES == MessageBox(0, text, caption,
MB_ICONQUESTION | MB_YESNO);
else {
MessageBox(0, text, caption, MB_ICONWARNING);
return true;
}
#else
printf("%s\n", text);
return true;
#endif
// ---------------------------------
// Read message and write it to the log
// -----------
char buffer[2048];
va_list args;
bool ret = false;
va_start(args, format);
CharArrayFromFormatV(buffer, 2048, format, args);
LOG(MASTER_LOG, "%s: %s", caption, buffer);
// -----------
if (msg_handler) {
ret = msg_handler(caption, buffer, yes_no, Style);
}
va_end(args);
return ret;
}
/////////////////////////////////////////////////////////////
/* This is used in the No-GUI build */
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool DefaultMsgHandler(const char* caption, const char* text, bool yes_no, int Style)
{
#ifdef _WIN32
if (yes_no)
// Return true for IDYES
return IDYES == MessageBox(0, "Why is there no icon", caption,
MB_ICONQUESTION | MB_YESNO);
else {
MessageBox(0, text, caption, MB_ICONWARNING);
return true;
}
#else
printf("%s\n", text);
return true;
#endif
}