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;
|
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
|
* (c) 2003-2004 Glenn Maynard, Chris Danford
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
|||||||
@@ -10,12 +10,13 @@ namespace Dialog
|
|||||||
|
|
||||||
void SetWindowed( bool bWindowed );
|
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 Error( RString sError, RString sID = "" );
|
||||||
void OK( RString sMessage, RString sID = "" );
|
void OK( RString sMessage, RString sID = "" );
|
||||||
Result OKCancel( RString sMessage, RString sID = "" );
|
Result OKCancel( RString sMessage, RString sID = "" );
|
||||||
Result AbortRetryIgnore( RString sMessage, RString sID = "" );
|
Result AbortRetryIgnore( RString sMessage, RString sID = "" );
|
||||||
Result AbortRetry( RString sMessage, RString sID = "" );
|
Result AbortRetry( RString sMessage, RString sID = "" );
|
||||||
|
Result YesNo( RString sMessage, RString sID = "" );
|
||||||
|
|
||||||
/* for DialogDrivers */
|
/* for DialogDrivers */
|
||||||
void IgnoreMessage( RString sID );
|
void IgnoreMessage( RString sID );
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ public:
|
|||||||
virtual Dialog::Result OKCancel( RString sMessage, RString sID ) { return Dialog::ok; }
|
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 AbortRetryIgnore( RString sMessage, RString sID ) { return Dialog::ignore; }
|
||||||
virtual Dialog::Result AbortRetry( RString sMessage, RString sID ) { return Dialog::abort; }
|
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 RString Init() { return RString(); }
|
||||||
virtual ~DialogDriver() { }
|
virtual ~DialogDriver() { }
|
||||||
|
|||||||
@@ -54,6 +54,27 @@ void DialogDriver_MacOSX::Error( RString sError, RString sID )
|
|||||||
ShowAlert( kCFUserNotificationStopAlertLevel, sError, CFSTR("OK") );
|
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 )
|
Dialog::Result DialogDriver_MacOSX::AbortRetryIgnore( RString sMessage, RString sID )
|
||||||
{
|
{
|
||||||
CFBundleRef bundle = CFBundleGetMainBundle();
|
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
|
* (c) 2003-2006 Steve Checkoway
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
|||||||
@@ -8,8 +8,10 @@ class DialogDriver_MacOSX: public DialogDriver
|
|||||||
public:
|
public:
|
||||||
void Error( RString sError, RString sID );
|
void Error( RString sError, RString sID );
|
||||||
void OK( RString sMessage, RString sID );
|
void OK( RString sMessage, RString sID );
|
||||||
|
Dialog::Result OKCancel( RString sMessage, RString sID );
|
||||||
Dialog::Result AbortRetryIgnore( RString sMessage, RString sID );
|
Dialog::Result AbortRetryIgnore( RString sMessage, RString sID );
|
||||||
Dialog::Result AbortRetry( RString sMessage, RString sID );
|
Dialog::Result AbortRetry( RString sMessage, RString sID );
|
||||||
|
Dialog::Result YesNo( RString sMessage, RString sID );
|
||||||
};
|
};
|
||||||
#define USE_DIALOG_DRIVER_COCOA
|
#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
|
* (c) 2003-2004 Glenn Maynard, Chris Danford
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ public:
|
|||||||
Dialog::Result OKCancel( RString sMessage, RString sID );
|
Dialog::Result OKCancel( RString sMessage, RString sID );
|
||||||
Dialog::Result AbortRetryIgnore( RString sMessage, RString sID );
|
Dialog::Result AbortRetryIgnore( RString sMessage, RString sID );
|
||||||
Dialog::Result AbortRetry( RString sMessage, RString sID );
|
Dialog::Result AbortRetry( RString sMessage, RString sID );
|
||||||
|
Dialog::Result YesNo( RString sMessage, RString sID );
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user