]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/msgdlg.cpp
ATSU Support in font extended
[wxWidgets.git] / src / mac / carbon / msgdlg.cpp
index f7a4a0a7248189ccbb5de42250e094bbcc469a35..e0f43288d4d2416360cf90d221437dffd667d0cd 100644 (file)
@@ -9,10 +9,12 @@
 // Licence:       wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 #pragma implementation "msgdlg.h"
 #endif
 
+#include "wx/wxprec.h"
+
 #include "wx/app.h"
 #include "wx/msgdlg.h"
 #include "wx/intl.h"
 IMPLEMENT_CLASS(wxMessageDialog, wxDialog)
 #endif
 
-short language = 0 ;
-
-void wxMacConvertNewlines( const char *source , char * destination ) ;
-void wxMacConvertNewlines( const char *source , char * destination )
-{
-    const char *s = source ;
-    char *d = destination ;
-    
-    while( *s  )
-    {
-        switch( *s )
-        {
-        case 0x0a :
-            *d++ = 0x0d ;
-            ++s ;
-            break ;
-        case 0x0d :
-            *d++ = 0x0d ;
-            ++s ;
-            if ( *s == 0x0a )
-                ++s ;
-            break ;
-        default :
-            *d++ = *s++ ;
-            break ;
-        }
-    }
-    *d = 0 ;
-}
-
 wxMessageDialog::wxMessageDialog(wxWindow *parent, const wxString& message, const wxString& caption,
                                  long style, const wxPoint& pos)
 {
@@ -67,7 +39,7 @@ int wxMessageDialog::ShowModal()
     
     short result ;
     
-    wxASSERT_MSG( ( m_dialogStyle & 0x3F ) != wxYES , "this style is not supported on mac" ) ;
+    wxASSERT_MSG( ( m_dialogStyle & 0x3F ) != wxYES , wxT("this style is not supported on mac") ) ;
     
     AlertType alertType = kAlertPlainAlert ;
     if (m_dialogStyle & wxICON_EXCLAMATION)
@@ -83,19 +55,15 @@ int wxMessageDialog::ShowModal()
     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( _("No") ) ;
-        cfYesString = wxMacCreateCFString( _("Yes") ) ;
+        wxMacCFStringHolder cfNoString(_("No") , m_font.GetEncoding()) ;
+        wxMacCFStringHolder cfYesString( _("Yes") , m_font.GetEncoding()) ;
         
+        wxMacCFStringHolder cfTitle(m_caption , m_font.GetEncoding());
+        wxMacCFStringHolder cfText(m_message , m_font.GetEncoding());
+                
         param.movable = true;
         param.flags = 0 ;
+        param.version = kStdCFStringAlertVersionOne ;
         
         bool skipDialog = false ;
         
@@ -107,7 +75,7 @@ int wxMessageDialog::ShowModal()
                 param.cancelText     = (CFStringRef) kAlertDefaultCancelText;
                 param.otherText     = cfNoString ;
                 param.helpButton     = false ;
-                param.defaultButton = kAlertStdAlertOKButton;
+                param.defaultButton = m_dialogStyle & wxNO_DEFAULT ? kAlertStdAlertOtherButton : kAlertStdAlertOKButton;
                 param.cancelButton     = kAlertStdAlertCancelButton;
             }
             else
@@ -116,17 +84,18 @@ int wxMessageDialog::ShowModal()
                 param.cancelText     = NULL;
                 param.otherText     = cfNoString ;
                 param.helpButton     = false ;
-                param.defaultButton = kAlertStdAlertOKButton;
+                param.defaultButton = m_dialogStyle & wxNO_DEFAULT ? kAlertStdAlertOtherButton : kAlertStdAlertOKButton;
                 param.cancelButton     = 0;
             }
         }
-        else if (m_dialogStyle & wxOK)
+        // the msw implementation even shows an ok button if it is not specified, we'll do the same
+        else 
         {
             if (m_dialogStyle & wxCANCEL)
             {
                 // thats a cancel missing
                 param.defaultText     = (CFStringRef) kAlertDefaultOKText ;
-                param.cancelText     = NULL;
+                param.cancelText     = (CFStringRef) kAlertDefaultCancelText ;
                 param.otherText     = NULL;
                 param.helpButton     = false ;
                 param.defaultButton = kAlertStdAlertOKButton;
@@ -142,10 +111,12 @@ int wxMessageDialog::ShowModal()
                 param.cancelButton     = 0;
             }
         }
+        /*
         else
         {
             skipDialog = true ;
         }
+        */
         
         param.position = kWindowDefaultPosition;
         if ( !skipDialog )
@@ -154,32 +125,13 @@ int wxMessageDialog::ShowModal()
             CreateStandardAlert( alertType , cfTitle , cfText , &param , &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 )
+       if ( skipDialog )
             return wxID_CANCEL ;
     }
     else
 #endif
     {
         AlertStdAlertParamRec    param;
-        char   cText[2048] ;
-        
-        if (wxApp::s_macDefaultEncodingIsPC)
-        {
-            strcpy(cText , wxMacMakeMacStringFromPC( m_message) ) ;
-        }
-        else
-        {
-            strcpy( cText , m_message ) ;
-        }
-        wxMacConvertNewlines( cText , cText ) ;
         
         Str255 yesPString ;
         Str255 noPString ;
@@ -189,7 +141,7 @@ int wxMessageDialog::ShowModal()
         wxMacStringToPascal( m_caption , pascalTitle ) ;
         wxMacStringToPascal( _("Yes") , yesPString ) ;
         wxMacStringToPascal(  _("No") , noPString ) ;
-        CopyCStringToPascal( cText , pascalText ) ;
+        wxMacStringToPascal( m_message , pascalText ) ;
         
         param.movable         = true;
         param.filterProc     = NULL ;
@@ -218,9 +170,8 @@ int wxMessageDialog::ShowModal()
         {
             if (m_dialogStyle & wxCANCEL)
             {
-                // thats a cancel missing
                 param.defaultText     = (StringPtr) kAlertDefaultOKText ;
-                param.cancelText     = NULL;
+                param.cancelText     = (StringPtr) kAlertDefaultCancelText ;
                 param.otherText     = NULL;
                 param.helpButton     = false ;
                 param.defaultButton = kAlertStdAlertOKButton;