using the new alerts under OSX - no string255 limits anymore
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18680 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -66,17 +66,111 @@ int wxMessageDialog::ShowModal()
|
|||||||
int resultbutton = wxID_CANCEL ;
|
int resultbutton = wxID_CANCEL ;
|
||||||
|
|
||||||
short result ;
|
short result ;
|
||||||
Str255 pascalTitle ;
|
|
||||||
Str255 pascalText ;
|
wxASSERT_MSG( ( m_dialogStyle & 0x3F ) != wxYES , "this style is not supported on mac" ) ;
|
||||||
|
|
||||||
|
AlertType alertType = kAlertPlainAlert ;
|
||||||
|
if (m_dialogStyle & wxICON_EXCLAMATION)
|
||||||
|
alertType = kAlertNoteAlert ;
|
||||||
|
else if (m_dialogStyle & wxICON_HAND)
|
||||||
|
alertType = kAlertStopAlert ;
|
||||||
|
else if (m_dialogStyle & wxICON_INFORMATION)
|
||||||
|
alertType = kAlertNoteAlert ;
|
||||||
|
else if (m_dialogStyle & wxICON_QUESTION)
|
||||||
|
alertType = kAlertCautionAlert ;
|
||||||
|
|
||||||
|
#if TARGET_CARBON
|
||||||
|
if ( UMAGetSystemVersion() >= 0x1000 )
|
||||||
|
{
|
||||||
|
AlertStdCFStringAlertParamRec param ;
|
||||||
|
CFStringRef cfNoString = NULL ;
|
||||||
|
CFStringRef cfYesString = NULL ;
|
||||||
|
|
||||||
|
CFStringRef cfTitle = NULL;
|
||||||
|
CFStringRef cfText = NULL;
|
||||||
|
|
||||||
|
cfTitle = wxMacCreateCFString( m_caption ) ;
|
||||||
|
cfText = wxMacCreateCFString( m_message ) ;
|
||||||
|
cfNoString = wxMacCreateCFString( _("Yes") ) ;
|
||||||
|
cfYesString = wxMacCreateCFString( _("No") ) ;
|
||||||
|
|
||||||
|
param.movable = true;
|
||||||
|
param.flags = 0 ;
|
||||||
|
|
||||||
|
bool skipDialog = false ;
|
||||||
|
|
||||||
|
if (m_dialogStyle & wxYES_NO)
|
||||||
|
{
|
||||||
|
if (m_dialogStyle & wxCANCEL)
|
||||||
|
{
|
||||||
|
param.defaultText = cfYesString ;
|
||||||
|
param.cancelText = (CFStringRef) kAlertDefaultCancelText;
|
||||||
|
param.otherText = cfNoString ;
|
||||||
|
param.helpButton = false ;
|
||||||
|
param.defaultButton = kAlertStdAlertOKButton;
|
||||||
|
param.cancelButton = kAlertStdAlertCancelButton;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
param.defaultText = cfYesString ;
|
||||||
|
param.cancelText = NULL;
|
||||||
|
param.otherText = cfNoString ;
|
||||||
|
param.helpButton = false ;
|
||||||
|
param.defaultButton = kAlertStdAlertOKButton;
|
||||||
|
param.cancelButton = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (m_dialogStyle & wxOK)
|
||||||
|
{
|
||||||
|
if (m_dialogStyle & wxCANCEL)
|
||||||
|
{
|
||||||
|
// thats a cancel missing
|
||||||
|
param.defaultText = (CFStringRef) kAlertDefaultOKText ;
|
||||||
|
param.cancelText = NULL;
|
||||||
|
param.otherText = NULL;
|
||||||
|
param.helpButton = false ;
|
||||||
|
param.defaultButton = kAlertStdAlertOKButton;
|
||||||
|
param.cancelButton = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
param.defaultText = (CFStringRef) kAlertDefaultOKText ;
|
||||||
|
param.cancelText = NULL;
|
||||||
|
param.otherText = NULL;
|
||||||
|
param.helpButton = false ;
|
||||||
|
param.defaultButton = kAlertStdAlertOKButton;
|
||||||
|
param.cancelButton = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
skipDialog = true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
param.position = kWindowDefaultPosition;
|
||||||
|
if ( !skipDialog )
|
||||||
|
{
|
||||||
|
DialogRef alertRef ;
|
||||||
|
CreateStandardAlert( alertType , cfTitle , cfText , ¶m , &alertRef ) ;
|
||||||
|
RunStandardAlert( alertRef , NULL , &result ) ;
|
||||||
|
}
|
||||||
|
if(cfTitle != NULL)
|
||||||
|
CFRelease(cfTitle);
|
||||||
|
if(cfText != NULL)
|
||||||
|
CFRelease(cfText);
|
||||||
|
if(cfNoString != NULL)
|
||||||
|
CFRelease(cfNoString);
|
||||||
|
if(cfYesString != NULL)
|
||||||
|
CFRelease(cfYesString);
|
||||||
|
if ( skipDialog )
|
||||||
|
return wxID_CANCEL ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
AlertStdAlertParamRec param;
|
||||||
char cText[2048] ;
|
char cText[2048] ;
|
||||||
|
|
||||||
Str255 yesPString ;
|
|
||||||
Str255 noPString ;
|
|
||||||
|
|
||||||
wxMacStringToPascal( m_caption , pascalTitle ) ;
|
|
||||||
wxMacStringToPascal( _("Yes") , yesPString ) ;
|
|
||||||
wxMacStringToPascal( _("No") , noPString ) ;
|
|
||||||
|
|
||||||
if (wxApp::s_macDefaultEncodingIsPC)
|
if (wxApp::s_macDefaultEncodingIsPC)
|
||||||
{
|
{
|
||||||
strcpy(cText , wxMacMakeMacStringFromPC( m_message) ) ;
|
strcpy(cText , wxMacMakeMacStringFromPC( m_message) ) ;
|
||||||
@@ -85,18 +179,20 @@ int wxMessageDialog::ShowModal()
|
|||||||
{
|
{
|
||||||
strcpy( cText , m_message ) ;
|
strcpy( cText , m_message ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxMacConvertNewlines( cText , cText ) ;
|
wxMacConvertNewlines( cText , cText ) ;
|
||||||
|
|
||||||
|
Str255 yesPString ;
|
||||||
|
Str255 noPString ;
|
||||||
|
|
||||||
|
Str255 pascalTitle ;
|
||||||
|
Str255 pascalText ;
|
||||||
|
wxMacStringToPascal( m_caption , pascalTitle ) ;
|
||||||
|
wxMacStringToPascal( _("Yes") , yesPString ) ;
|
||||||
|
wxMacStringToPascal( _("No") , noPString ) ;
|
||||||
CopyCStringToPascal( cText , pascalText ) ;
|
CopyCStringToPascal( cText , pascalText ) ;
|
||||||
|
|
||||||
wxASSERT_MSG( ( m_dialogStyle & 0x3F ) != wxYES , "this style is not supported on mac" ) ;
|
|
||||||
|
|
||||||
|
|
||||||
AlertStdAlertParamRec param;
|
|
||||||
|
|
||||||
param.movable = true;
|
param.movable = true;
|
||||||
param.filterProc = NULL ;
|
param.filterProc = NULL ;
|
||||||
|
|
||||||
if (m_dialogStyle & wxYES_NO)
|
if (m_dialogStyle & wxYES_NO)
|
||||||
{
|
{
|
||||||
if (m_dialogStyle & wxCANCEL)
|
if (m_dialogStyle & wxCANCEL)
|
||||||
@@ -147,16 +243,8 @@ int wxMessageDialog::ShowModal()
|
|||||||
|
|
||||||
param.position = 0;
|
param.position = 0;
|
||||||
|
|
||||||
if (m_dialogStyle & wxICON_EXCLAMATION)
|
StandardAlert( alertType, pascalTitle, pascalText, ¶m, &result );
|
||||||
StandardAlert( kAlertNoteAlert, pascalTitle, pascalText, ¶m, &result );
|
}
|
||||||
else if (m_dialogStyle & wxICON_HAND)
|
|
||||||
StandardAlert( kAlertStopAlert, pascalTitle, pascalText, ¶m, &result );
|
|
||||||
else if (m_dialogStyle & wxICON_INFORMATION)
|
|
||||||
StandardAlert( kAlertNoteAlert, pascalTitle, pascalText, ¶m, &result );
|
|
||||||
else if (m_dialogStyle & wxICON_QUESTION)
|
|
||||||
StandardAlert( kAlertCautionAlert, pascalTitle, pascalText, ¶m, &result );
|
|
||||||
else
|
|
||||||
StandardAlert( kAlertPlainAlert, pascalTitle, pascalText, ¶m, &result );
|
|
||||||
|
|
||||||
if (m_dialogStyle & wxOK)
|
if (m_dialogStyle & wxOK)
|
||||||
{
|
{
|
||||||
|
@@ -66,17 +66,111 @@ int wxMessageDialog::ShowModal()
|
|||||||
int resultbutton = wxID_CANCEL ;
|
int resultbutton = wxID_CANCEL ;
|
||||||
|
|
||||||
short result ;
|
short result ;
|
||||||
Str255 pascalTitle ;
|
|
||||||
Str255 pascalText ;
|
wxASSERT_MSG( ( m_dialogStyle & 0x3F ) != wxYES , "this style is not supported on mac" ) ;
|
||||||
|
|
||||||
|
AlertType alertType = kAlertPlainAlert ;
|
||||||
|
if (m_dialogStyle & wxICON_EXCLAMATION)
|
||||||
|
alertType = kAlertNoteAlert ;
|
||||||
|
else if (m_dialogStyle & wxICON_HAND)
|
||||||
|
alertType = kAlertStopAlert ;
|
||||||
|
else if (m_dialogStyle & wxICON_INFORMATION)
|
||||||
|
alertType = kAlertNoteAlert ;
|
||||||
|
else if (m_dialogStyle & wxICON_QUESTION)
|
||||||
|
alertType = kAlertCautionAlert ;
|
||||||
|
|
||||||
|
#if TARGET_CARBON
|
||||||
|
if ( UMAGetSystemVersion() >= 0x1000 )
|
||||||
|
{
|
||||||
|
AlertStdCFStringAlertParamRec param ;
|
||||||
|
CFStringRef cfNoString = NULL ;
|
||||||
|
CFStringRef cfYesString = NULL ;
|
||||||
|
|
||||||
|
CFStringRef cfTitle = NULL;
|
||||||
|
CFStringRef cfText = NULL;
|
||||||
|
|
||||||
|
cfTitle = wxMacCreateCFString( m_caption ) ;
|
||||||
|
cfText = wxMacCreateCFString( m_message ) ;
|
||||||
|
cfNoString = wxMacCreateCFString( _("Yes") ) ;
|
||||||
|
cfYesString = wxMacCreateCFString( _("No") ) ;
|
||||||
|
|
||||||
|
param.movable = true;
|
||||||
|
param.flags = 0 ;
|
||||||
|
|
||||||
|
bool skipDialog = false ;
|
||||||
|
|
||||||
|
if (m_dialogStyle & wxYES_NO)
|
||||||
|
{
|
||||||
|
if (m_dialogStyle & wxCANCEL)
|
||||||
|
{
|
||||||
|
param.defaultText = cfYesString ;
|
||||||
|
param.cancelText = (CFStringRef) kAlertDefaultCancelText;
|
||||||
|
param.otherText = cfNoString ;
|
||||||
|
param.helpButton = false ;
|
||||||
|
param.defaultButton = kAlertStdAlertOKButton;
|
||||||
|
param.cancelButton = kAlertStdAlertCancelButton;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
param.defaultText = cfYesString ;
|
||||||
|
param.cancelText = NULL;
|
||||||
|
param.otherText = cfNoString ;
|
||||||
|
param.helpButton = false ;
|
||||||
|
param.defaultButton = kAlertStdAlertOKButton;
|
||||||
|
param.cancelButton = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (m_dialogStyle & wxOK)
|
||||||
|
{
|
||||||
|
if (m_dialogStyle & wxCANCEL)
|
||||||
|
{
|
||||||
|
// thats a cancel missing
|
||||||
|
param.defaultText = (CFStringRef) kAlertDefaultOKText ;
|
||||||
|
param.cancelText = NULL;
|
||||||
|
param.otherText = NULL;
|
||||||
|
param.helpButton = false ;
|
||||||
|
param.defaultButton = kAlertStdAlertOKButton;
|
||||||
|
param.cancelButton = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
param.defaultText = (CFStringRef) kAlertDefaultOKText ;
|
||||||
|
param.cancelText = NULL;
|
||||||
|
param.otherText = NULL;
|
||||||
|
param.helpButton = false ;
|
||||||
|
param.defaultButton = kAlertStdAlertOKButton;
|
||||||
|
param.cancelButton = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
skipDialog = true ;
|
||||||
|
}
|
||||||
|
|
||||||
|
param.position = kWindowDefaultPosition;
|
||||||
|
if ( !skipDialog )
|
||||||
|
{
|
||||||
|
DialogRef alertRef ;
|
||||||
|
CreateStandardAlert( alertType , cfTitle , cfText , ¶m , &alertRef ) ;
|
||||||
|
RunStandardAlert( alertRef , NULL , &result ) ;
|
||||||
|
}
|
||||||
|
if(cfTitle != NULL)
|
||||||
|
CFRelease(cfTitle);
|
||||||
|
if(cfText != NULL)
|
||||||
|
CFRelease(cfText);
|
||||||
|
if(cfNoString != NULL)
|
||||||
|
CFRelease(cfNoString);
|
||||||
|
if(cfYesString != NULL)
|
||||||
|
CFRelease(cfYesString);
|
||||||
|
if ( skipDialog )
|
||||||
|
return wxID_CANCEL ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
AlertStdAlertParamRec param;
|
||||||
char cText[2048] ;
|
char cText[2048] ;
|
||||||
|
|
||||||
Str255 yesPString ;
|
|
||||||
Str255 noPString ;
|
|
||||||
|
|
||||||
wxMacStringToPascal( m_caption , pascalTitle ) ;
|
|
||||||
wxMacStringToPascal( _("Yes") , yesPString ) ;
|
|
||||||
wxMacStringToPascal( _("No") , noPString ) ;
|
|
||||||
|
|
||||||
if (wxApp::s_macDefaultEncodingIsPC)
|
if (wxApp::s_macDefaultEncodingIsPC)
|
||||||
{
|
{
|
||||||
strcpy(cText , wxMacMakeMacStringFromPC( m_message) ) ;
|
strcpy(cText , wxMacMakeMacStringFromPC( m_message) ) ;
|
||||||
@@ -85,18 +179,20 @@ int wxMessageDialog::ShowModal()
|
|||||||
{
|
{
|
||||||
strcpy( cText , m_message ) ;
|
strcpy( cText , m_message ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxMacConvertNewlines( cText , cText ) ;
|
wxMacConvertNewlines( cText , cText ) ;
|
||||||
|
|
||||||
|
Str255 yesPString ;
|
||||||
|
Str255 noPString ;
|
||||||
|
|
||||||
|
Str255 pascalTitle ;
|
||||||
|
Str255 pascalText ;
|
||||||
|
wxMacStringToPascal( m_caption , pascalTitle ) ;
|
||||||
|
wxMacStringToPascal( _("Yes") , yesPString ) ;
|
||||||
|
wxMacStringToPascal( _("No") , noPString ) ;
|
||||||
CopyCStringToPascal( cText , pascalText ) ;
|
CopyCStringToPascal( cText , pascalText ) ;
|
||||||
|
|
||||||
wxASSERT_MSG( ( m_dialogStyle & 0x3F ) != wxYES , "this style is not supported on mac" ) ;
|
|
||||||
|
|
||||||
|
|
||||||
AlertStdAlertParamRec param;
|
|
||||||
|
|
||||||
param.movable = true;
|
param.movable = true;
|
||||||
param.filterProc = NULL ;
|
param.filterProc = NULL ;
|
||||||
|
|
||||||
if (m_dialogStyle & wxYES_NO)
|
if (m_dialogStyle & wxYES_NO)
|
||||||
{
|
{
|
||||||
if (m_dialogStyle & wxCANCEL)
|
if (m_dialogStyle & wxCANCEL)
|
||||||
@@ -147,16 +243,8 @@ int wxMessageDialog::ShowModal()
|
|||||||
|
|
||||||
param.position = 0;
|
param.position = 0;
|
||||||
|
|
||||||
if (m_dialogStyle & wxICON_EXCLAMATION)
|
StandardAlert( alertType, pascalTitle, pascalText, ¶m, &result );
|
||||||
StandardAlert( kAlertNoteAlert, pascalTitle, pascalText, ¶m, &result );
|
}
|
||||||
else if (m_dialogStyle & wxICON_HAND)
|
|
||||||
StandardAlert( kAlertStopAlert, pascalTitle, pascalText, ¶m, &result );
|
|
||||||
else if (m_dialogStyle & wxICON_INFORMATION)
|
|
||||||
StandardAlert( kAlertNoteAlert, pascalTitle, pascalText, ¶m, &result );
|
|
||||||
else if (m_dialogStyle & wxICON_QUESTION)
|
|
||||||
StandardAlert( kAlertCautionAlert, pascalTitle, pascalText, ¶m, &result );
|
|
||||||
else
|
|
||||||
StandardAlert( kAlertPlainAlert, pascalTitle, pascalText, ¶m, &result );
|
|
||||||
|
|
||||||
if (m_dialogStyle & wxOK)
|
if (m_dialogStyle & wxOK)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user