]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/msgdlg.cpp
avoid system pop-up menu commands being handled by wxApp, bug was shown in printing...
[wxWidgets.git] / src / mac / carbon / msgdlg.cpp
index 670d30644e13967db34cd632e754a64dff3d3597..315012b368d53923a214693660bb77ab1e71bc40 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
-// Name:        msgdlg.cpp
+// Name:        src/mac/carbon/msgdlg.cpp
 // Purpose:     wxMessageDialog
 // Author:      Stefan Csomor
 // Modified by:
 // Created:     04/01/98
 // Purpose:     wxMessageDialog
 // Author:      Stefan Csomor
 // Modified by:
 // Created:     04/01/98
-// RCS-ID:      $$
+// RCS-ID:      $Id$
 // Copyright:   (c) Stefan Csomor
 // Copyright:   (c) Stefan Csomor
-// Licence:       wxWindows licence
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
-#pragma implementation "msgdlg.h"
-#endif
+#include "wx/wxprec.h"
 
 #include "wx/app.h"
 #include "wx/msgdlg.h"
 #include "wx/intl.h"
 #include "wx/mac/uma.h"
 
 
 #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)
 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)
 {
     m_caption = caption;
     m_message = message;
 
 wxMessageDialog::wxMessageDialog(wxWindow *parent, const wxString& message, const wxString& caption,
                                  long style, const wxPoint& pos)
 {
     m_caption = caption;
     m_message = message;
-    m_dialogStyle = style;
     m_parent = parent;
     m_parent = parent;
+    SetMessageDialogStyle(style);
 }
 
 int wxMessageDialog::ShowModal()
 {
     int resultbutton = wxID_CANCEL ;
 }
 
 int wxMessageDialog::ShowModal()
 {
     int resultbutton = wxID_CANCEL ;
-    
+
     short result ;
     short result ;
-    
-    wxASSERT_MSG( ( m_dialogStyle & 0x3F ) != wxYES , wxT("this style is not supported on mac") ) ;
-    
+
+    const long style = GetMessageDialogStyle();
+
+    wxASSERT_MSG( ( style & 0x3F ) != wxYES , wxT("this style is not supported on mac") ) ;
+
     AlertType alertType = kAlertPlainAlert ;
     AlertType alertType = kAlertPlainAlert ;
-    if (m_dialogStyle & wxICON_EXCLAMATION)
+    if (style & wxICON_EXCLAMATION)
         alertType = kAlertNoteAlert ;
         alertType = kAlertNoteAlert ;
-    else if (m_dialogStyle & wxICON_HAND)
+    else if (style & wxICON_HAND)
         alertType = kAlertStopAlert ;
         alertType = kAlertStopAlert ;
-    else if (m_dialogStyle & wxICON_INFORMATION)
+    else if (style & wxICON_INFORMATION)
         alertType = kAlertNoteAlert ;
         alertType = kAlertNoteAlert ;
-    else if (m_dialogStyle & wxICON_QUESTION)
+    else if (style & wxICON_QUESTION)
         alertType = kAlertCautionAlert ;
         alertType = kAlertCautionAlert ;
-    
+
 #if TARGET_CARBON
     if ( UMAGetSystemVersion() >= 0x1000 )
     {
         AlertStdCFStringAlertParamRec param ;
 #if TARGET_CARBON
     if ( UMAGetSystemVersion() >= 0x1000 )
     {
         AlertStdCFStringAlertParamRec param ;
-        wxMacCFStringHolder cfNoString(_("No")) ;
-        wxMacCFStringHolder cfYesString( _("Yes")) ;
-        
-        wxMacCFStringHolder cfTitle(m_caption);
-        wxMacCFStringHolder cfText(m_message);
-                
+        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.movable = true;
         param.flags = 0 ;
-        
+        param.version = kStdCFStringAlertVersionOne ;
+
         bool skipDialog = false ;
         bool skipDialog = false ;
-        
-        if (m_dialogStyle & wxYES_NO)
+
+        if (style & wxYES_NO)
         {
         {
-            if (m_dialogStyle & wxCANCEL)
+            if (style & wxCANCEL)
             {
                 param.defaultText     = cfYesString ;
                 param.cancelText     = (CFStringRef) kAlertDefaultCancelText;
                 param.otherText     = cfNoString ;
                 param.helpButton     = false ;
             {
                 param.defaultText     = cfYesString ;
                 param.cancelText     = (CFStringRef) kAlertDefaultCancelText;
                 param.otherText     = cfNoString ;
                 param.helpButton     = false ;
-                param.defaultButton = kAlertStdAlertOKButton;
+                param.defaultButton = style & wxNO_DEFAULT ? kAlertStdAlertOtherButton : kAlertStdAlertOKButton;
                 param.cancelButton     = kAlertStdAlertCancelButton;
             }
             else
                 param.cancelButton     = kAlertStdAlertCancelButton;
             }
             else
@@ -111,18 +80,18 @@ int wxMessageDialog::ShowModal()
                 param.cancelText     = NULL;
                 param.otherText     = cfNoString ;
                 param.helpButton     = false ;
                 param.cancelText     = NULL;
                 param.otherText     = cfNoString ;
                 param.helpButton     = false ;
-                param.defaultButton = kAlertStdAlertOKButton;
+                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
                 param.cancelButton     = 0;
             }
         }
         // the msw implementation even shows an ok button if it is not specified, we'll do the same
-        else 
+        else
         {
         {
-            if (m_dialogStyle & wxCANCEL)
+            if (style & wxCANCEL)
             {
                 // thats a cancel missing
                 param.defaultText     = (CFStringRef) kAlertDefaultOKText ;
             {
                 // thats a cancel missing
                 param.defaultText     = (CFStringRef) kAlertDefaultOKText ;
-                param.cancelText     = NULL;
+                param.cancelText     = (CFStringRef) kAlertDefaultCancelText ;
                 param.otherText     = NULL;
                 param.helpButton     = false ;
                 param.defaultButton = kAlertStdAlertOKButton;
                 param.otherText     = NULL;
                 param.helpButton     = false ;
                 param.defaultButton = kAlertStdAlertOKButton;
@@ -144,7 +113,7 @@ int wxMessageDialog::ShowModal()
             skipDialog = true ;
         }
         */
             skipDialog = true ;
         }
         */
-        
+
         param.position = kWindowDefaultPosition;
         if ( !skipDialog )
         {
         param.position = kWindowDefaultPosition;
         if ( !skipDialog )
         {
@@ -152,29 +121,29 @@ int wxMessageDialog::ShowModal()
             CreateStandardAlert( alertType , cfTitle , cfText , &param , &alertRef ) ;
             RunStandardAlert( alertRef , NULL , &result ) ;
         }
             CreateStandardAlert( alertType , cfTitle , cfText , &param , &alertRef ) ;
             RunStandardAlert( alertRef , NULL , &result ) ;
         }
-       if ( skipDialog )
+        if ( skipDialog )
             return wxID_CANCEL ;
     }
     else
 #endif
     {
         AlertStdAlertParamRec    param;
             return wxID_CANCEL ;
     }
     else
 #endif
     {
         AlertStdAlertParamRec    param;
-        
+
         Str255 yesPString ;
         Str255 noPString ;
         Str255 yesPString ;
         Str255 noPString ;
-        
+
         Str255 pascalTitle ;
         Str255 pascalText ;
         wxMacStringToPascal( m_caption , pascalTitle ) ;
         wxMacStringToPascal( _("Yes") , yesPString ) ;
         wxMacStringToPascal(  _("No") , noPString ) ;
         wxMacStringToPascal( m_message , pascalText ) ;
         Str255 pascalTitle ;
         Str255 pascalText ;
         wxMacStringToPascal( m_caption , pascalTitle ) ;
         wxMacStringToPascal( _("Yes") , yesPString ) ;
         wxMacStringToPascal(  _("No") , noPString ) ;
         wxMacStringToPascal( m_message , pascalText ) ;
-        
+
         param.movable         = true;
         param.filterProc     = NULL ;
         param.movable         = true;
         param.filterProc     = NULL ;
-        if (m_dialogStyle & wxYES_NO)
+        if (style & wxYES_NO)
         {
         {
-            if (m_dialogStyle & wxCANCEL)
+            if (style & wxCANCEL)
             {
                 param.defaultText     = yesPString ;
                 param.cancelText     = (StringPtr) kAlertDefaultCancelText;
             {
                 param.defaultText     = yesPString ;
                 param.cancelText     = (StringPtr) kAlertDefaultCancelText;
@@ -193,13 +162,12 @@ int wxMessageDialog::ShowModal()
                 param.cancelButton     = 0;
             }
         }
                 param.cancelButton     = 0;
             }
         }
-        else if (m_dialogStyle & wxOK)
+        else if (style & wxOK)
         {
         {
-            if (m_dialogStyle & wxCANCEL)
+            if (style & wxCANCEL)
             {
             {
-                // thats a cancel missing
                 param.defaultText     = (StringPtr) kAlertDefaultOKText ;
                 param.defaultText     = (StringPtr) kAlertDefaultOKText ;
-                param.cancelText     = NULL;
+                param.cancelText     = (StringPtr) kAlertDefaultCancelText ;
                 param.otherText     = NULL;
                 param.helpButton     = false ;
                 param.defaultButton = kAlertStdAlertOKButton;
                 param.otherText     = NULL;
                 param.helpButton     = false ;
                 param.defaultButton = kAlertStdAlertOKButton;
@@ -219,15 +187,15 @@ int wxMessageDialog::ShowModal()
         {
             return resultbutton ;
         }
         {
             return resultbutton ;
         }
-        
+
         param.position         = 0;
         param.position         = 0;
-        
+
         StandardAlert( alertType, pascalTitle, pascalText, &param, &result );
     }
         StandardAlert( alertType, pascalTitle, pascalText, &param, &result );
     }
-    
-    if (m_dialogStyle & wxOK)
+
+    if (style & wxOK)
     {
     {
-        if (m_dialogStyle & wxCANCEL)                
+        if (style & wxCANCEL)
         {
             //TODO add Cancelbutton
             switch( result )
         {
             //TODO add Cancelbutton
             switch( result )
@@ -255,9 +223,9 @@ int wxMessageDialog::ShowModal()
             }
         }
     }
             }
         }
     }
-    else if (m_dialogStyle & wxYES_NO)
+    else if (style & wxYES_NO)
     {
     {
-        if (m_dialogStyle & wxCANCEL)
+        if (style & wxCANCEL)
         {
             switch( result )
             {
         {
             switch( result )
             {
@@ -286,8 +254,8 @@ int wxMessageDialog::ShowModal()
                 break ;
             }
         }
                 break ;
             }
         }
-    } 
-    
+    }
+
     return resultbutton ;
 }
 
     return resultbutton ;
 }