#include "wx/app.h"
#endif
+#include "wx/thread.h"
#include "wx/mac/uma.h"
IMPLEMENT_CLASS(wxMessageDialog, wxDialog)
-wxMessageDialog::wxMessageDialog(
- wxWindow *parent, const wxString& message, const wxString& caption,
- long style, const wxPoint& pos )
+wxMessageDialog::wxMessageDialog(wxWindow *parent,
+ const wxString& message,
+ const wxString& caption,
+ long style,
+ const wxPoint& WXUNUSED(pos))
+ : wxMessageDialogBase(parent, message, caption, style)
{
- m_caption = caption;
- m_message = message;
- m_parent = parent;
- SetMessageDialogStyle(style);
+ m_yes = _("Yes");
+ m_no = _("No");
+ m_ok = _("OK");
+ m_cancel = _("Cancel");
+}
+
+bool wxMessageDialog::SetYesNoLabels(const wxString& yes,const wxString& no)
+{
+ m_yes = yes;
+ m_no = no;
+ return true;
+}
+
+bool wxMessageDialog::SetYesNoCancelLabels(const wxString& yes, const wxString& no, const wxString& cancel)
+{
+ m_yes = yes;
+ m_no = no;
+ m_cancel = cancel;
+ return true;
+}
+
+bool wxMessageDialog::SetOKLabel(const wxString& ok)
+{
+ m_ok = ok;
+ return true;
+}
+
+bool wxMessageDialog::SetOKCancelLabels(const wxString& ok, const wxString& cancel)
+{
+ m_ok = ok;
+ m_cancel = cancel;
+ return true;
}
int wxMessageDialog::ShowModal()
AlertType alertType = kAlertPlainAlert;
if (style & wxICON_EXCLAMATION)
- alertType = kAlertNoteAlert;
+ alertType = kAlertCautionAlert;
else if (style & wxICON_HAND)
alertType = kAlertStopAlert;
else if (style & wxICON_INFORMATION)
alertType = kAlertNoteAlert;
else if (style & wxICON_QUESTION)
- alertType = kAlertCautionAlert;
+ alertType = kAlertNoteAlert;
+
+
+ // work out what to display
+ // if the extended text is empty then we use the caption as the title
+ // and the message as the text (for backwards compatibility)
+ // but if the extended message is not empty then we use the message as the title
+ // and the extended message as the text because that makes more sense
+
+ wxString msgtitle,msgtext;
+ if(m_extendedMessage.IsEmpty())
+ {
+ msgtitle = m_caption;
+ msgtext = m_message;
+ }
+ else
+ {
+ msgtitle = m_message;
+ msgtext = m_extendedMessage;
+ }
+
-#if TARGET_API_MAC_OSX
if ( !wxIsMainThread() )
{
CFStringRef defaultButtonTitle = NULL;
CFStringRef alternateButtonTitle = NULL;
CFStringRef otherButtonTitle = NULL;
- wxMacCFStringHolder cfTitle( m_caption, m_font.GetEncoding() );
- wxMacCFStringHolder cfText( m_message, m_font.GetEncoding() );
+ wxCFStringRef cfTitle( msgtitle, GetFont().GetEncoding() );
+ wxCFStringRef cfText( msgtext, GetFont().GetEncoding() );
- wxMacCFStringHolder cfNoString( _("No"), m_font.GetEncoding() );
- wxMacCFStringHolder cfYesString( _("Yes"), m_font.GetEncoding() );
- wxMacCFStringHolder cfOKString( _("OK") , m_font.GetEncoding()) ;
- wxMacCFStringHolder cfCancelString( _("Cancel"), m_font.GetEncoding() );
+ wxCFStringRef cfNoString( m_no.c_str(), GetFont().GetEncoding() );
+ wxCFStringRef cfYesString( m_yes.c_str(), GetFont().GetEncoding() );
+ wxCFStringRef cfOKString( m_ok.c_str() , GetFont().GetEncoding()) ;
+ wxCFStringRef cfCancelString( m_cancel.c_str(), GetFont().GetEncoding() );
int buttonId[4] = { 0, 0, 0, wxID_CANCEL /* time-out */ };
resultbutton = buttonId[exitButton];
}
else
-#endif
{
short result;
AlertStdCFStringAlertParamRec param;
- wxMacCFStringHolder cfNoString( _("No"), m_font.GetEncoding() );
- wxMacCFStringHolder cfYesString( _("Yes"), m_font.GetEncoding() );
+ wxCFStringRef cfNoString( m_no.c_str(), GetFont().GetEncoding() );
+ wxCFStringRef cfYesString( m_yes.c_str(), GetFont().GetEncoding() );
+ wxCFStringRef cfOKString( m_ok.c_str(), GetFont().GetEncoding() );
+ wxCFStringRef cfCancelString( m_cancel.c_str(), GetFont().GetEncoding() );
- wxMacCFStringHolder cfTitle( m_caption, m_font.GetEncoding() );
- wxMacCFStringHolder cfText( m_message, m_font.GetEncoding() );
+ wxCFStringRef cfTitle( msgtitle, GetFont().GetEncoding() );
+ wxCFStringRef cfText( msgtext, GetFont().GetEncoding() );
param.movable = true;
param.flags = 0;
if (style & wxCANCEL)
{
param.defaultText = cfYesString;
- param.cancelText = (CFStringRef) kAlertDefaultCancelText;
+ param.cancelText = cfCancelString;
param.otherText = cfNoString;
param.helpButton = false;
param.defaultButton = style & wxNO_DEFAULT ? kAlertStdAlertOtherButton : kAlertStdAlertOKButton;
if (style & wxCANCEL)
{
// that's a cancel missing
- param.defaultText = (CFStringRef) kAlertDefaultOKText;
- param.cancelText = (CFStringRef) kAlertDefaultCancelText;
+ param.defaultText = cfOKString;
+ param.cancelText = cfCancelString;
param.otherText = NULL;
param.helpButton = false;
param.defaultButton = kAlertStdAlertOKButton;
}
else
{
- param.defaultText = (CFStringRef) kAlertDefaultOKText;
+ param.defaultText = cfOKString;
param.cancelText = NULL;
param.otherText = NULL;
param.helpButton = false;