mirror of
https://gitea.nishi.boats/pyrite-dev/milsko
synced 2026-01-06 17:39:45 +00:00
add dispatcherror
git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@71 b9cfdab3-6d41-4d17-bbe4-086880011989
This commit is contained in:
@@ -34,6 +34,9 @@ MWDECL void MwVaListApply(MwWidget handle, va_list va);
|
|||||||
MWDECL void MwAddUserHandler(MwWidget handle, const char* key, MwUserHandler handler, void* user_data);
|
MWDECL void MwAddUserHandler(MwWidget handle, const char* key, MwUserHandler handler, void* user_data);
|
||||||
MWDECL void MwDispatchUserHandler(MwWidget handle, const char* key, void* handler_data);
|
MWDECL void MwDispatchUserHandler(MwWidget handle, const char* key, void* handler_data);
|
||||||
|
|
||||||
|
MWDECL void MwSetErrorHandler(MwErrorHandler handler, void* user_data);
|
||||||
|
MWDECL void MwDispatchError(int code, const char* message);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ typedef void* MwWidget;
|
|||||||
#endif
|
#endif
|
||||||
typedef void (*MwHandler)(MwWidget handle);
|
typedef void (*MwHandler)(MwWidget handle);
|
||||||
typedef void (*MwUserHandler)(MwWidget handle, void* user_data, void* call_data);
|
typedef void (*MwUserHandler)(MwWidget handle, void* user_data, void* call_data);
|
||||||
|
typedef void (*MwErrorHandler)(int code, const char* message, void* user_data);
|
||||||
|
|
||||||
#ifdef _MILSKO
|
#ifdef _MILSKO
|
||||||
#include <Mw/LowLevel.h>
|
#include <Mw/LowLevel.h>
|
||||||
|
|||||||
23
src/core.c
23
src/core.c
@@ -250,3 +250,26 @@ void MwAddUserHandler(MwWidget handle, const char* key, MwUserHandler handler, v
|
|||||||
ind = shgeti(handle->handler, key);
|
ind = shgeti(handle->handler, key);
|
||||||
handle->handler[ind].user_data = user_data;
|
handle->handler[ind].user_data = user_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static MwErrorHandler error_handler = NULL;
|
||||||
|
static void* error_user_data = NULL;
|
||||||
|
|
||||||
|
void MwSetErrorHandler(MwErrorHandler handler, void* user_data) {
|
||||||
|
error_handler = handler;
|
||||||
|
error_user_data = user_data;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MwDispatchError(int code, const char* message) {
|
||||||
|
if(error_handler != NULL) {
|
||||||
|
error_handler(code, message, error_user_data);
|
||||||
|
} else {
|
||||||
|
#ifdef _WIN32
|
||||||
|
char buffer[1024];
|
||||||
|
sprintf(buffer, "Error: %s\r\nCode : %d\r\n\r\nMilsko is exiting.", message, code);
|
||||||
|
MessageBox(NULL, buffer, "Error", MB_ICONERROR | MB_OK);
|
||||||
|
#else
|
||||||
|
fprintf(stderr, "Error: %s\nCode : %d\n\nMilsko is exiting.", message, code);
|
||||||
|
#endif
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user