X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/519cb848a8f4c91c73421bb75314754284e593a4..f574489317d55d53c8985f576c4276a4736764ae:/src/mac/msgdlg.cpp?ds=sidebyside diff --git a/src/mac/msgdlg.cpp b/src/mac/msgdlg.cpp index 5aa8554038..03230aa707 100644 --- a/src/mac/msgdlg.cpp +++ b/src/mac/msgdlg.cpp @@ -13,21 +13,18 @@ #pragma implementation "msgdlg.h" #endif +#include "wx/app.h" #include "wx/msgdlg.h" +#include "wx/intl.h" #include "wx/mac/uma.h" #if !USE_SHARED_LIBRARY IMPLEMENT_CLASS(wxMessageDialog, wxDialog) #endif -#define kMacOKAlertResourceID 128 -#define kMacYesNoAlertResourceID 129 -#define kMacYesNoCancelAlertResourceID 130 -#define kMacNoYesAlertResourceID 131 -#define kMacNoYesCancelAlertResourceID 132 - short language = 0 ; +void wxMacConvertNewlines( const char *source , char * destination ) ; void wxMacConvertNewlines( const char *source , char * destination ) { const char *s = source ; @@ -71,221 +68,159 @@ int wxMessageDialog::ShowModal() short result ; Str255 pascalTitle ; Str255 pascalText ; - - strcpy( (char*) pascalTitle , m_caption ) ; - c2pstr( (char*) pascalTitle ) ; - strcpy( (char*) pascalText , m_message ) ; - wxMacConvertNewlines( (char*)pascalText ,(char*) pascalText) ; - c2pstr( (char*) pascalText ) ; + char cText[256] ; - if ( !UMAHasAppearance() ) + Str255 yesPString ; + Str255 noPString ; + + wxMacStringToPascal( m_caption , pascalTitle ) ; + wxMacStringToPascal( _("Yes") , yesPString ) ; + wxMacStringToPascal( _("No") , noPString ) ; + + if (wxApp::s_macDefaultEncodingIsPC) { - int resourceID ; - - if (m_dialogStyle & wxYES_NO) - { - if (m_dialogStyle & wxCANCEL) - resourceID = kMacYesNoCancelAlertResourceID; - else - resourceID = kMacYesNoAlertResourceID + language * 10 ; - } - else if (m_dialogStyle & wxOK) - { - if (m_dialogStyle & wxCANCEL) - resourceID = kMacOKAlertResourceID; // wrong - else - resourceID = kMacOKAlertResourceID; - } - else - { - return resultbutton ; - } - /* - if (hWnd) - msStyle |= MB_APPLMODAL; - else - msStyle |= MB_TASKMODAL; - */ + strcpy(cText , wxMacMakeMacStringFromPC( m_message) ) ; + } + else + { + strcpy( cText , m_message ) ; + } - ParamText( pascalTitle , pascalText , NULL , NULL ) ; + wxMacConvertNewlines( cText , cText ) ; + CopyCStringToPascal( cText , pascalText ) ; - if (m_dialogStyle & wxICON_EXCLAMATION) - result = Alert( resourceID , NULL ) ; - else if (m_dialogStyle & wxICON_HAND) - result = StopAlert( resourceID , NULL ) ; - else if (m_dialogStyle & wxICON_INFORMATION) - result = NoteAlert( resourceID , NULL ) ; - else if (m_dialogStyle & wxICON_QUESTION) - result = CautionAlert( resourceID , NULL ) ; - else - result = Alert( resourceID , NULL ) ; + wxASSERT_MSG( ( m_dialogStyle & 0x3F ) != wxYES , "this style is not supported on mac" ) ; - resultbutton = result ; - - if (m_dialogStyle & wxYES_NO) - { - if (m_dialogStyle & wxCANCEL) - { - switch( result ) - { - case 1 : - resultbutton = wxID_YES ; - break ; - case 2 : - resultbutton = wxID_NO ; - break ; - case 3 : - resultbutton = wxID_CANCEL ; - break ; - } - } - else - { - switch( result ) - { - case 1 : - resultbutton = wxID_YES ; - break ; - case 2 : - resultbutton = wxID_NO ; - break ; - case 3 : - break ; - } - } - } - } + + AlertStdAlertParamRec param; + + param.movable = true; + param.filterProc = NULL ; + + if (m_dialogStyle & wxYES_NO) + { + if (m_dialogStyle & wxCANCEL) + { + param.defaultText = yesPString ; + param.cancelText = (StringPtr) kAlertDefaultCancelText; + param.otherText = noPString ; + param.helpButton = false ; + param.defaultButton = kAlertStdAlertOKButton; + param.cancelButton = kAlertStdAlertCancelButton; + } + else + { + param.defaultText = yesPString ; + param.cancelText = NULL; + param.otherText = noPString ; + param.helpButton = false ; + param.defaultButton = kAlertStdAlertOKButton; + param.cancelButton = 0; + } + } + else if (m_dialogStyle & wxOK) + { + if (m_dialogStyle & wxCANCEL) + { + // thats a cancel missing + param.defaultText = (StringPtr) kAlertDefaultOKText ; + param.cancelText = NULL; + param.otherText = NULL; + param.helpButton = false ; + param.defaultButton = kAlertStdAlertOKButton; + param.cancelButton = 0; + } + else + { + param.defaultText = (StringPtr) kAlertDefaultOKText ; + param.cancelText = NULL; + param.otherText = NULL; + param.helpButton = false ; + param.defaultButton = kAlertStdAlertOKButton; + param.cancelButton = 0; + } + } else { - AlertStdAlertParamRec param; - - param.movable = true; - param.filterProc = NULL ; - - if (m_dialogStyle & wxYES_NO) - { - if (m_dialogStyle & wxCANCEL) - { - param.defaultText = "\pYes" ; - param.cancelText = (StringPtr) kAlertDefaultCancelText; - param.otherText = "\pNo"; - param.helpButton = false ; - param.defaultButton = kAlertStdAlertOKButton; - param.cancelButton = kAlertStdAlertCancelButton; - } - else - { - param.defaultText = "\pYes" ; - param.cancelText = NULL; - param.otherText = "\pNo"; - param.helpButton = false ; - param.defaultButton = kAlertStdAlertOKButton; - param.cancelButton = 0; - } - } - else if (m_dialogStyle & wxOK) - { - if (m_dialogStyle & wxCANCEL) - { - // thats a cancel missing - param.defaultText = (StringPtr) kAlertDefaultOKText ; - param.cancelText = NULL; - param.otherText = NULL; - param.helpButton = false ; - param.defaultButton = kAlertStdAlertOKButton; - param.cancelButton = 0; - } - else - { - param.defaultText = (StringPtr) kAlertDefaultOKText ; - param.cancelText = NULL; - param.otherText = NULL; - param.helpButton = false ; - param.defaultButton = kAlertStdAlertOKButton; - param.cancelButton = 0; - } - } - else - { - return resultbutton ; - } + return resultbutton ; + } - param.position = 0; + 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) + if (m_dialogStyle & wxICON_EXCLAMATION) 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 + 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 ) { - switch( result ) - { - case 1 : - resultbutton = wxID_OK ; - break ; - case 2 : - break ; - case 3 : - break ; - } + 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 ; - } - } - else - { - switch( result ) - { - case 1 : - resultbutton = wxID_YES ; - break ; - case 2 : - break ; - case 3 : - resultbutton = wxID_NO ; - 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 ; + } + } + else + { + switch( result ) + { + case 1 : + resultbutton = wxID_YES ; + break ; + case 2 : + break ; + case 3 : + resultbutton = wxID_NO ; + break ; + } + } + } + return resultbutton ; }