// 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)
{
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)
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 ;
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
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;
param.cancelButton = 0;
}
}
+ /*
else
{
skipDialog = true ;
}
+ */
param.position = kWindowDefaultPosition;
if ( !skipDialog )
CreateStandardAlert( alertType , cfTitle , cfText , ¶m , &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 ;
wxMacStringToPascal( m_caption , pascalTitle ) ;
wxMacStringToPascal( _("Yes") , yesPString ) ;
wxMacStringToPascal( _("No") , noPString ) ;
- CopyCStringToPascal( cText , pascalText ) ;
+ wxMacStringToPascal( m_message , pascalText ) ;
param.movable = true;
param.filterProc = NULL ;
{
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;