- int resultbutton = wxID_CANCEL ;
-
- short result ;
-
- 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 ;
-
+ int resultbutton = wxID_CANCEL;
+
+ const long style = GetMessageDialogStyle();
+
+ wxASSERT_MSG( (style & 0x3F) != wxYES, wxT("this style is not supported on Mac") );
+
+ AlertType alertType = kAlertPlainAlert;
+ if (style & wxICON_EXCLAMATION)
+ alertType = kAlertNoteAlert;
+ else if (style & wxICON_HAND)
+ alertType = kAlertStopAlert;
+ else if (style & wxICON_INFORMATION)
+ alertType = kAlertNoteAlert;
+ else if (style & wxICON_QUESTION)
+ alertType = kAlertCautionAlert;
+
+#if TARGET_API_MAC_OSX
+ CFStringRef defaultButtonTitle = NULL;
+ CFStringRef alternateButtonTitle = NULL;
+ CFStringRef otherButtonTitle = NULL;
+
+ wxMacCFStringHolder cfTitle( m_caption, m_font.GetEncoding() );
+ wxMacCFStringHolder cfText( m_message, m_font.GetEncoding() );
+
+ wxMacCFStringHolder cfNoString( _("No"), m_font.GetEncoding() );
+ wxMacCFStringHolder cfYesString( _("Yes"), m_font.GetEncoding() );
+ wxMacCFStringHolder cfOKString( _("OK") , m_font.GetEncoding()) ;
+ wxMacCFStringHolder cfCancelString( _("Cancel"), m_font.GetEncoding() );
+
+ int buttonId[4] = { 0, 0, 0, wxID_CANCEL /* time-out */ };
+
+ if (style & wxYES_NO)
+ {
+ if ( style & wxNO_DEFAULT )
+ {
+ defaultButtonTitle = cfNoString;
+ alternateButtonTitle = cfYesString;
+ buttonId[0] = wxID_NO;
+ buttonId[1] = wxID_YES;
+ }
+ else
+ {
+ defaultButtonTitle = cfYesString;
+ alternateButtonTitle = cfNoString;
+ buttonId[0] = wxID_YES;
+ buttonId[1] = wxID_NO;
+ }
+ if (style & wxCANCEL)
+ {
+ otherButtonTitle = cfCancelString;
+ buttonId[2] = wxID_CANCEL;
+ }
+ }
+ else
+ {
+ // the MSW implementation even shows an OK button if it is not specified, we'll do the same
+ buttonId[0] = wxID_OK;
+ // using null as default title does not work on earlier systems
+ defaultButtonTitle = cfOKString;
+ if (style & wxCANCEL)
+ {
+ alternateButtonTitle = cfCancelString;
+ buttonId[1] = wxID_CANCEL;
+ }
+ }
+
+ CFOptionFlags exitButton;
+ OSStatus err = CFUserNotificationDisplayAlert(
+ 0, alertType, NULL, NULL, NULL, cfTitle, cfText,
+ defaultButtonTitle, alternateButtonTitle, otherButtonTitle, &exitButton );
+ if (err == noErr)
+ resultbutton = buttonId[exitButton];
+
+#else
+ short result;
+