]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/msgdlg.cpp
1. Derive wxMessageDialogBase from wxDialog (why did we use multiple
[wxWidgets.git] / src / mac / carbon / msgdlg.cpp
index e7fc38da4096eeb5f946bdedf0e85237615a6137..ade6197a84faffd33af9cbe026465e1f41bfcdd1 100644 (file)
 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& 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()
@@ -52,6 +83,26 @@ int wxMessageDialog::ShowModal()
     else if (style & wxICON_QUESTION)
         alertType = kAlertCautionAlert;
 
+
+    // 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() )
     {
@@ -59,13 +110,13 @@ int wxMessageDialog::ShowModal()
         CFStringRef alternateButtonTitle = NULL;
         CFStringRef otherButtonTitle = NULL;
 
-        wxMacCFStringHolder cfTitle( m_caption, m_font.GetEncoding() );
-        wxMacCFStringHolder cfText( m_message, m_font.GetEncoding() );
+        wxMacCFStringHolder cfTitle( msgtitle, m_font.GetEncoding() );
+        wxMacCFStringHolder cfText( msgtext, m_font.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() );
+        wxMacCFStringHolder cfNoString( m_no.c_str(), m_font.GetEncoding() );
+        wxMacCFStringHolder cfYesString( m_yes.c_str(), m_font.GetEncoding() );
+        wxMacCFStringHolder cfOKString( m_ok.c_str() , m_font.GetEncoding()) ;
+        wxMacCFStringHolder cfCancelString( m_cancel.c_str(), m_font.GetEncoding() );
 
         int buttonId[4] = { 0, 0, 0, wxID_CANCEL /* time-out */ };
 
@@ -117,11 +168,13 @@ int wxMessageDialog::ShowModal()
         short result;
 
         AlertStdCFStringAlertParamRec param;
-        wxMacCFStringHolder cfNoString( _("No"), m_font.GetEncoding() );
-        wxMacCFStringHolder cfYesString( _("Yes"), m_font.GetEncoding() );
+        wxMacCFStringHolder cfNoString( m_no.c_str(), m_font.GetEncoding() );
+        wxMacCFStringHolder cfYesString( m_yes.c_str(), m_font.GetEncoding() );
+        wxMacCFStringHolder cfOKString( m_ok.c_str(), m_font.GetEncoding() );
+        wxMacCFStringHolder cfCancelString( m_cancel.c_str(), m_font.GetEncoding() );
 
-        wxMacCFStringHolder cfTitle( m_caption, m_font.GetEncoding() );
-        wxMacCFStringHolder cfText( m_message, m_font.GetEncoding() );
+        wxMacCFStringHolder cfTitle( msgtitle, m_font.GetEncoding() );
+        wxMacCFStringHolder cfText( msgtext, m_font.GetEncoding() );
 
         param.movable = true;
         param.flags = 0;
@@ -134,7 +187,7 @@ int wxMessageDialog::ShowModal()
             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;
@@ -156,8 +209,8 @@ int wxMessageDialog::ShowModal()
             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;
@@ -165,7 +218,7 @@ int wxMessageDialog::ShowModal()
             }
             else
             {
-                param.defaultText = (CFStringRef) kAlertDefaultOKText;
+                param.defaultText = cfOKString;
                 param.cancelText = NULL;
                 param.otherText = NULL;
                 param.helpButton = false;