Mac OS X DialogDriver was lacking OKCancel, I also added YesNo Dialog to every platform.
This commit is contained in:
@@ -234,6 +234,30 @@ Dialog::Result Dialog::AbortRetry( RString sMessage, RString sID )
|
||||
return ret;
|
||||
}
|
||||
|
||||
Dialog::Result Dialog::YesNo( RString sMessage, RString sID )
|
||||
{
|
||||
Dialog::Init();
|
||||
|
||||
if( LOG )
|
||||
LOG->Trace( "Dialog: \"%s\" [%s]", sMessage.c_str(), sID.c_str() );
|
||||
|
||||
if( sID != "" && MessageIsIgnored(sID) )
|
||||
return g_NullDriver.YesNo( sMessage, sID );
|
||||
|
||||
RageThread::SetIsShowingDialog( true );
|
||||
|
||||
// only show Dialog if windowed
|
||||
Dialog::Result ret;
|
||||
if( DialogsEnabled() )
|
||||
ret = g_pImpl->YesNo( sMessage, sID ); // call derived version
|
||||
else
|
||||
ret = g_NullDriver.YesNo( sMessage, sID );
|
||||
|
||||
RageThread::SetIsShowingDialog( false );
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* (c) 2003-2004 Glenn Maynard, Chris Danford
|
||||
* All rights reserved.
|
||||
|
||||
@@ -10,12 +10,13 @@ namespace Dialog
|
||||
|
||||
void SetWindowed( bool bWindowed );
|
||||
|
||||
enum Result { ok, cancel, abort, retry, ignore };
|
||||
enum Result { ok, cancel, abort, retry, ignore, yes, no };
|
||||
void Error( RString sError, RString sID = "" );
|
||||
void OK( RString sMessage, RString sID = "" );
|
||||
Result OKCancel( RString sMessage, RString sID = "" );
|
||||
Result AbortRetryIgnore( RString sMessage, RString sID = "" );
|
||||
Result AbortRetry( RString sMessage, RString sID = "" );
|
||||
Result YesNo( RString sMessage, RString sID = "" );
|
||||
|
||||
/* for DialogDrivers */
|
||||
void IgnoreMessage( RString sID );
|
||||
|
||||
@@ -12,8 +12,9 @@ public:
|
||||
virtual void Error( RString sMessage, RString sID ) { printf("Error: %s\n", sMessage.c_str()); }
|
||||
virtual void OK( RString sMessage, RString sID ) {}
|
||||
virtual Dialog::Result OKCancel( RString sMessage, RString sID ) { return Dialog::ok; }
|
||||
virtual Dialog::Result AbortRetryIgnore( RString sMessage, RString sID ) { return Dialog::ignore; }
|
||||
virtual Dialog::Result AbortRetry( RString sMessage, RString sID ) { return Dialog::abort; }
|
||||
virtual Dialog::Result AbortRetryIgnore( RString sMessage, RString sID ) { return Dialog::ignore; }
|
||||
virtual Dialog::Result AbortRetry( RString sMessage, RString sID ) { return Dialog::abort; }
|
||||
virtual Dialog::Result YesNo( RString sMessage, RString sID ) { return Dialog::no; }
|
||||
|
||||
virtual RString Init() { return RString(); }
|
||||
virtual ~DialogDriver() { }
|
||||
|
||||
@@ -54,6 +54,27 @@ void DialogDriver_MacOSX::Error( RString sError, RString sID )
|
||||
ShowAlert( kCFUserNotificationStopAlertLevel, sError, CFSTR("OK") );
|
||||
}
|
||||
|
||||
Dialog::Result DialogDriver_MacOSX::OKCancel( RString sMessage, RString sID )
|
||||
{
|
||||
CFBundleRef bundle = CFBundleGetMainBundle();
|
||||
CFStringRef sOK = LSTRING( bundle, "OK" );
|
||||
CFStringRef sCancel = LSTRING( bundle, "Cancel" );
|
||||
CFOptionFlags result = ShowAlert( kCFUserNotificationNoteAlertLevel, sMessage, sOK, sCancel );
|
||||
|
||||
CFRelease( sOK );
|
||||
CFRelease( sCancel );
|
||||
switch( result )
|
||||
{
|
||||
case kCFUserNotificationDefaultResponse:
|
||||
case kCFUserNotificationCancelResponse:
|
||||
return Dialog::cancel;
|
||||
case kCFUserNotificationAlternateResponse:
|
||||
return Dialog::ok;
|
||||
default:
|
||||
FAIL_M( ssprintf("Invalid response: %d.", int(result)) );
|
||||
}
|
||||
}
|
||||
|
||||
Dialog::Result DialogDriver_MacOSX::AbortRetryIgnore( RString sMessage, RString sID )
|
||||
{
|
||||
CFBundleRef bundle = CFBundleGetMainBundle();
|
||||
@@ -101,6 +122,27 @@ Dialog::Result DialogDriver_MacOSX::AbortRetry( RString sMessage, RString sID )
|
||||
}
|
||||
}
|
||||
|
||||
Dialog::Result DialogDriver_MacOSX::YesNo( RString sMessage, RString sID )
|
||||
{
|
||||
CFBundleRef bundle = CFBundleGetMainBundle();
|
||||
CFStringRef sYes = LSTRING( bundle, "Yes" );
|
||||
CFStringRef sNo = LSTRING( bundle, "No" );
|
||||
CFOptionFlags result = ShowAlert( kCFUserNotificationNoteAlertLevel, sMessage, sYes, sNo );
|
||||
|
||||
CFRelease( sYes );
|
||||
CFRelease( sNo );
|
||||
switch( result )
|
||||
{
|
||||
case kCFUserNotificationDefaultResponse:
|
||||
case kCFUserNotificationCancelResponse:
|
||||
return Dialog::no;
|
||||
case kCFUserNotificationAlternateResponse:
|
||||
return Dialog::yes;
|
||||
default:
|
||||
FAIL_M( ssprintf("Invalid response: %d.", int(result)) );
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* (c) 2003-2006 Steve Checkoway
|
||||
* All rights reserved.
|
||||
|
||||
@@ -8,8 +8,10 @@ class DialogDriver_MacOSX: public DialogDriver
|
||||
public:
|
||||
void Error( RString sError, RString sID );
|
||||
void OK( RString sMessage, RString sID );
|
||||
Dialog::Result OKCancel( RString sMessage, RString sID );
|
||||
Dialog::Result AbortRetryIgnore( RString sMessage, RString sID );
|
||||
Dialog::Result AbortRetry( RString sMessage, RString sID );
|
||||
Dialog::Result YesNo( RString sMessage, RString sID );
|
||||
};
|
||||
#define USE_DIALOG_DRIVER_COCOA
|
||||
|
||||
|
||||
@@ -263,6 +263,22 @@ Dialog::Result DialogDriver_Win32::AbortRetry( RString sMessage, RString sID )
|
||||
}
|
||||
}
|
||||
|
||||
Dialog::Result DialogDriver_Win32::YesNo( RString sMessage, RString sID )
|
||||
{
|
||||
int iRet = 0;
|
||||
#if !defined(SMPACKAGE)
|
||||
iRet = ::MessageBox(::GetHwnd(), ConvertUTF8ToACP(sMessage).c_str(), ConvertUTF8ToACP(::GetWindowTitle()).c_str(), MB_YESNO);
|
||||
#else
|
||||
iRet = ::AfxMessageBox( ConvertUTF8ToACP(sMessage).c_str(), MB_RETRYCANCEL, 0 );
|
||||
#endif
|
||||
switch( iRet )
|
||||
{
|
||||
case IDYES: return Dialog::yes;
|
||||
default: ASSERT(0);
|
||||
case IDNO: return Dialog::no;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* (c) 2003-2004 Glenn Maynard, Chris Danford
|
||||
* All rights reserved.
|
||||
|
||||
@@ -11,6 +11,7 @@ public:
|
||||
Dialog::Result OKCancel( RString sMessage, RString sID );
|
||||
Dialog::Result AbortRetryIgnore( RString sMessage, RString sID );
|
||||
Dialog::Result AbortRetry( RString sMessage, RString sID );
|
||||
Dialog::Result YesNo( RString sMessage, RString sID );
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user