- param.defaultText = (StringPtr) kAlertDefaultOKText ;
- param.cancelText = NULL;
- param.otherText = NULL;
- param.helpButton = false ;
- param.defaultButton = kAlertStdAlertOKButton;
- param.cancelButton = 0;
- }
- }
- else
- {
- return resultbutton ;
- }
-
- param.position = 0;
-
- if (m_dialogStyle & wxICON_EXCLAMATION)
- 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 & wxCANCEL)
- {
- //TODO add Cancelbutton
- switch( result )
- {
- case 1 :
- resultbutton = wxID_OK ;
- break ;
- case 2 :
- break ;
- case 3 :
- break ;
- }
- }
- else
- {
- switch( result )
- {
- case 1 :
- resultbutton = wxID_OK ;
- break ;
- case 2 :
- break ;
- case 3 :
- break ;
- }
- }
- }
- else if (m_dialogStyle & wxYES_NO)
- {
- if (m_dialogStyle & wxCANCEL)
- {
- switch( result )
- {
- case 1 :
- resultbutton = wxID_YES ;
- break ;
- case 2 :
- resultbutton = wxID_CANCEL ;
- break ;
- case 3 :
- resultbutton = wxID_NO ;
- break ;
- }
+ short result;
+
+ AlertStdCFStringAlertParamRec param;
+ wxMacCFStringHolder cfNoString( m_no.c_str(), m_font.GetEncoding() );
+ wxMacCFStringHolder cfYesString( m_yes.c_str(), m_font.GetEncoding() );
+ wxMacCFStringHolder cfOKString( m_ok.c_str(), m_font.GetEncoding() );
+ wxMacCFStringHolder cfCancelString( m_cancel.c_str(), m_font.GetEncoding() );
+
+ wxMacCFStringHolder cfTitle( msgtitle, m_font.GetEncoding() );
+ wxMacCFStringHolder cfText( msgtext, m_font.GetEncoding() );
+
+ param.movable = true;
+ param.flags = 0;
+ param.version = kStdCFStringAlertVersionOne;
+
+ bool skipDialog = false;
+
+ if (style & wxYES_NO)
+ {
+ if (style & wxCANCEL)
+ {
+ param.defaultText = cfYesString;
+ param.cancelText = cfCancelString;
+ param.otherText = cfNoString;
+ param.helpButton = false;
+ param.defaultButton = style & wxNO_DEFAULT ? kAlertStdAlertOtherButton : kAlertStdAlertOKButton;
+ param.cancelButton = kAlertStdAlertCancelButton;
+ }
+ else
+ {
+ param.defaultText = cfYesString;
+ param.cancelText = NULL;
+ param.otherText = cfNoString;
+ param.helpButton = false;
+ param.defaultButton = style & wxNO_DEFAULT ? kAlertStdAlertOtherButton : kAlertStdAlertOKButton;
+ param.cancelButton = 0;
+ }
+ }
+ // the MSW implementation even shows an OK button if it is not specified, we'll do the same
+ else
+ {
+ if (style & wxCANCEL)
+ {
+ // that's a cancel missing
+ param.defaultText = cfOKString;
+ param.cancelText = cfCancelString;
+ param.otherText = NULL;
+ param.helpButton = false;
+ param.defaultButton = kAlertStdAlertOKButton;
+ param.cancelButton = 0;
+ }
+ else
+ {
+ param.defaultText = cfOKString;
+ param.cancelText = NULL;
+ param.otherText = NULL;
+ param.helpButton = false;
+ param.defaultButton = kAlertStdAlertOKButton;
+ param.cancelButton = 0;
+ }
+ }
+
+ param.position = kWindowDefaultPosition;
+ if ( !skipDialog )
+ {
+ DialogRef alertRef;
+ CreateStandardAlert( alertType, cfTitle, cfText, ¶m, &alertRef );
+ RunStandardAlert( alertRef, NULL, &result );
+ }
+ else
+ {
+ return wxID_CANCEL;
+ }
+
+ if (style & wxOK)
+ {
+ switch ( result )
+ {
+ case 1:
+ resultbutton = wxID_OK;
+ break;
+
+ case 2:
+ // TODO: add Cancel button
+ // if (style & wxCANCEL)
+ // resultbutton = wxID_CANCEL;
+ break;
+
+ case 3:
+ default:
+ break;
+ }
+ }
+ else if (style & wxYES_NO)
+ {
+ switch ( result )
+ {
+ case 1:
+ resultbutton = wxID_YES;
+ break;
+
+ case 2:
+ if (!(style & wxCANCEL))
+ resultbutton = wxID_CANCEL;
+ break;
+
+ case 3:
+ resultbutton = wxID_NO;
+ break;
+
+ default:
+ break;
+ }
+ }