]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/msgdlg.cpp
generate key events for Space/Enter in addition to the activate events, as wxMSW...
[wxWidgets.git] / src / mac / msgdlg.cpp
index f19da7bb4f12ee6fb0c10b4e5d168cc8bfdb593e..7b7109b668698fe47d0ba9e311c6ce83dc1b8a8b 100644 (file)
 #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)
-
-#define kMacOKAlertResourceID 128
-#define kMacYesNoAlertResourceID 129
-#define kMacYesNoCancelAlertResourceID 130
-#define kMacNoYesAlertResourceID 131
-#define kMacNoYesCancelAlertResourceID 132
+#endif
 
 short language = 0 ;
 
+void wxMacConvertNewlines( const char *source , char * destination ) ;
 void wxMacConvertNewlines( const char *source , char * destination )
 {
        const char *s = source ;
@@ -69,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[2048] ;
 
-       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, &param, &result );
-         else if (m_dialogStyle & wxICON_HAND)
-                               StandardAlert( kAlertStopAlert, pascalTitle, pascalText, &param, &result );
-         else if (m_dialogStyle & wxICON_INFORMATION)
+  if (m_dialogStyle & wxICON_EXCLAMATION)
                        StandardAlert( kAlertNoteAlert, pascalTitle, pascalText, &param, &result );
-         else if (m_dialogStyle & wxICON_QUESTION)
-                               StandardAlert( kAlertCautionAlert, pascalTitle, pascalText, &param, &result );
-               else
-                               StandardAlert( kAlertPlainAlert, pascalTitle, pascalText, &param, &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, &param, &result );
+  else if (m_dialogStyle & wxICON_INFORMATION)
+               StandardAlert( kAlertNoteAlert, pascalTitle, pascalText, &param, &result );
+  else if (m_dialogStyle & wxICON_QUESTION)
+                       StandardAlert( kAlertCautionAlert, pascalTitle, pascalText, &param, &result );
+       else
+                       StandardAlert( kAlertPlainAlert, pascalTitle, pascalText, &param, &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 ;
 }