mirror of
https://github.com/go-vgo/robotgo.git
synced 2025-05-29 21:43:55 +00:00
43 lines
1.5 KiB
C
43 lines
1.5 KiB
C
// #include "os.h"
|
|
#if defined(IS_MACOSX)
|
|
#include <CoreFoundation/CoreFoundation.h>
|
|
#endif
|
|
|
|
#if defined(IS_MACOSX)
|
|
CFStringRef CFStringCreateWithUTF8String(const char *title) {
|
|
if (title == NULL) { return NULL; }
|
|
return CFStringCreateWithCString(NULL, title, kCFStringEncodingUTF8);
|
|
}
|
|
#endif
|
|
|
|
int showAlert(const char *title, const char *msg,
|
|
const char *defaultButton, const char *cancelButton) {
|
|
#if defined(IS_MACOSX)
|
|
CFStringRef alertHeader = CFStringCreateWithUTF8String(title);
|
|
CFStringRef alertMessage = CFStringCreateWithUTF8String(msg);
|
|
CFStringRef defaultButtonTitle = CFStringCreateWithUTF8String(defaultButton);
|
|
CFStringRef cancelButtonTitle = CFStringCreateWithUTF8String(cancelButton);
|
|
CFOptionFlags responseFlags;
|
|
|
|
SInt32 err = CFUserNotificationDisplayAlert(
|
|
0.0, kCFUserNotificationNoteAlertLevel, NULL, NULL, NULL, alertHeader, alertMessage,
|
|
defaultButtonTitle, cancelButtonTitle, NULL, &responseFlags);
|
|
|
|
if (alertHeader != NULL) CFRelease(alertHeader);
|
|
if (alertMessage != NULL) CFRelease(alertMessage);
|
|
if (defaultButtonTitle != NULL) CFRelease(defaultButtonTitle);
|
|
if (cancelButtonTitle != NULL) CFRelease(cancelButtonTitle);
|
|
|
|
if (err != 0) { return -1; }
|
|
return (responseFlags == kCFUserNotificationDefaultResponse) ? 0 : 1;
|
|
#elif defined(USE_X11)
|
|
return 0;
|
|
#else
|
|
/* TODO: Display custom buttons instead of the pre-defined "OK" and "Cancel". */
|
|
int response = MessageBox(NULL, msg, title,
|
|
(cancelButton == NULL) ? MB_OK : MB_OKCANCEL );
|
|
return (response == IDOK) ? 0 : 1;
|
|
#endif
|
|
}
|
|
|