]> git.saurik.com Git - wxWidgets.git/blobdiff - src/cocoa/msgdlg.mm
Add doc for wxGraphicsContext.Create(), which is a lightweight context with no target...
[wxWidgets.git] / src / cocoa / msgdlg.mm
index cf026bbb4fdfcd441d8f83c1b44af14d4e70b789..b14a70ba6100a2cb90a607b9b8ab9d23967b19bf 100644 (file)
@@ -3,6 +3,7 @@
 // Purpose:     wxMessageDialog for wxCocoa
 // Author:      Gareth Simpson
 // Created:     2007-10-09
 // Purpose:     wxMessageDialog for wxCocoa
 // Author:      Gareth Simpson
 // Created:     2007-10-09
+// RCS-ID:      $Id$
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
@@ -30,6 +31,7 @@
 
 #include "wx/cocoa/autorelease.h"
 #include "wx/cocoa/string.h"
 
 #include "wx/cocoa/autorelease.h"
 #include "wx/cocoa/string.h"
+#include "wx/modalhook.h"
 
 #import <AppKit/NSAlert.h>
 // ============================================================================
 
 #import <AppKit/NSAlert.h>
 // ============================================================================
@@ -43,17 +45,14 @@ IMPLEMENT_CLASS(wxCocoaMessageDialog, wxDialog)
 // ----------------------------------------------------------------------------
 
 wxCocoaMessageDialog::wxCocoaMessageDialog(wxWindow *parent,
 // ----------------------------------------------------------------------------
 
 wxCocoaMessageDialog::wxCocoaMessageDialog(wxWindow *parent,
-                        const wxString& message,
-                        const wxString& caption,
-                        long style,
-                                               const wxPoint& pos) : wxMessageDialogBase(parent,message,caption,style)
+                                           const wxString& message,
+                                           const wxString& caption,
+                                           long style,
+                                           const wxPoint& pos)
+    : wxMessageDialogWithCustomLabels(parent, message, caption, style)
 {
 
 {
 
-       //m_caption = caption;
-       //m_message = message;
-
-    //wxTopLevelWindows.Append((wxWindowBase*)this);
-       wxTopLevelWindows.Append(this);
+    wxTopLevelWindows.Append(this);
 
     wxASSERT(CreateBase(parent,wxID_ANY,wxDefaultPosition,wxDefaultSize,style,wxDefaultValidator,wxDialogNameStr));
 
 
     wxASSERT(CreateBase(parent,wxID_ANY,wxDefaultPosition,wxDefaultSize,style,wxDefaultValidator,wxDialogNameStr));
 
@@ -63,131 +62,100 @@ wxCocoaMessageDialog::wxCocoaMessageDialog(wxWindow *parent,
 
     m_cocoaNSWindow = nil;
     m_cocoaNSView = nil;
 
     m_cocoaNSWindow = nil;
     m_cocoaNSView = nil;
-       
-    m_yes = _("Yes");
-    m_no  = _("No");
-    m_ok  = _("OK");
-    m_cancel = _("Cancel");
-
 }
 
 }
 
-wxCocoaMessageDialog::~wxCocoaMessageDialog()
+void wxCocoaMessageDialog::DoSetCustomLabel(wxString& var, const ButtonLabel& value)
 {
 {
+    wxMessageDialogWithCustomLabels::DoSetCustomLabel(var, value);
+
+    var.Replace("&", "");
 }
 
 int wxCocoaMessageDialog::ShowModal()
 {
 }
 
 int wxCocoaMessageDialog::ShowModal()
 {
-       wxAutoNSAutoreleasePool thePool;
+    WX_HOOK_MODAL_DIALOG();
+
+    wxAutoNSAutoreleasePool thePool;
+
+    NSAlert *alert = [[[NSAlert alloc] init] autorelease];
 
 
-       NSAlert *alert = [[[NSAlert alloc] init] autorelease];
-       
     const long style = GetMessageDialogStyle();
 
     NSAlertStyle nsStyle = NSInformationalAlertStyle;
     const long style = GetMessageDialogStyle();
 
     NSAlertStyle nsStyle = NSInformationalAlertStyle;
-    if (style & wxICON_EXCLAMATION)
-        nsStyle = NSWarningAlertStyle;
-    else if (style & wxICON_HAND)
-        nsStyle = NSCriticalAlertStyle;
-    else if (style & wxICON_INFORMATION)
-        nsStyle = NSInformationalAlertStyle;
-    else if (style & wxICON_QUESTION)
-        nsStyle = NSInformationalAlertStyle;
-               
-       [alert setAlertStyle:nsStyle];
-       
-       
-
-       
+
+    switch ( GetEffectiveIcon() )
+    {
+        case wxICON_ERROR:
+            nsStyle = NSCriticalAlertStyle;
+            break;
+
+        case wxICON_WARNING:
+            nsStyle = NSWarningAlertStyle;
+            break;
+    }
+
+    [alert setAlertStyle:nsStyle];
+
+
+
+
     // 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
     // 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
-       if (m_extendedMessage.empty())
-       {
-               [alert setMessageText:wxNSStringWithWxString(m_caption)];
-               [alert setInformativeText:wxNSStringWithWxString(m_message)];
-       }
-       else
-       {
-               [alert setMessageText:wxNSStringWithWxString(m_message)];
-               [alert setInformativeText:wxNSStringWithWxString(m_extendedMessage)];   
-       }
-       
-       //      The wxReturn value corresponding to each button
-       int buttonId[4] = { 0, 0, 0, wxID_CANCEL /* time-out */ };
-       if (style & wxYES_NO)
-       {
-               if ( style & wxNO_DEFAULT )
-               {
-                       [alert addButtonWithTitle:wxNSStringWithWxString(m_no)];
-                       [alert addButtonWithTitle:wxNSStringWithWxString(m_yes)];
-                       buttonId[0] = wxID_NO;
-                       buttonId[1] = wxID_YES;
-               }
-               else
-               {
-                       [alert addButtonWithTitle:wxNSStringWithWxString(m_yes)];
-                       [alert addButtonWithTitle:wxNSStringWithWxString(m_no)];
-                       buttonId[0] = wxID_YES;
-                       buttonId[1] = wxID_NO;
-               }
-               if (style & wxCANCEL)
-               {
-                       [alert addButtonWithTitle:wxNSStringWithWxString(m_cancel)];
-                       buttonId[2] = wxID_CANCEL;
-               }
-       }
-       else
-       {
-               // the MSW implementation even shows an OK button if it is not specified, we'll do the same
-               buttonId[0] = wxID_OK;
-               // using null as default title does not work on earlier systems
-               [alert addButtonWithTitle:wxNSStringWithWxString(m_ok)];
-               if (style & wxCANCEL)
-               {
-                       [alert addButtonWithTitle:wxNSStringWithWxString(m_cancel)];
-                       buttonId[1] = wxID_CANCEL;
-               }
-       }
-       
-       int ret = [alert runModal];
-
-       
-       return buttonId[ret-NSAlertFirstButtonReturn];
-}
-
-bool wxCocoaMessageDialog::SetYesNoLabels(const wxString& yes,const wxString& no)
-{
-       m_yes = yes;
-       m_yes.Replace(_("&"),_(""));
-       m_no = no;
-       m_no.Replace(_("&"),_(""));
-       return true;
-}
-bool wxCocoaMessageDialog::SetYesNoCancelLabels(const wxString& yes, const wxString& no, const wxString& cancel)
-{
-       m_yes = yes;
-       m_yes.Replace(_("&"),_(""));
-       m_no = no;
-       m_no.Replace(_("&"),_(""));
-       m_cancel = cancel;
-       m_cancel.Replace(_("&"),_(""));
-       return true;
-}
-bool wxCocoaMessageDialog::SetOKLabel(const wxString& ok)
-{
-       m_ok = ok;
-       m_ok.Replace(_("&"),_(""));
-       return true;
-}
-bool wxCocoaMessageDialog::SetOKCancelLabels(const wxString& ok, const wxString& cancel)
-{
-       m_ok = ok;
-       m_ok.Replace(_("&"),_(""));
-       m_cancel = cancel;
-       m_cancel.Replace(_("&"),_(""));
-       return true;
+    if (m_extendedMessage.empty())
+    {
+        [alert setMessageText:wxNSStringWithWxString(m_caption)];
+        [alert setInformativeText:wxNSStringWithWxString(m_message)];
+    }
+    else
+    {
+        [alert setMessageText:wxNSStringWithWxString(m_message)];
+        [alert setInformativeText:wxNSStringWithWxString(m_extendedMessage)];
+    }
+
+    //    The wxReturn value corresponding to each button
+    int buttonId[4] = { 0, 0, 0, wxID_CANCEL /* time-out */ };
+    if (style & wxYES_NO)
+    {
+        if ( style & wxNO_DEFAULT )
+        {
+            [alert addButtonWithTitle:wxNSStringWithWxString(GetNoLabel())];
+            [alert addButtonWithTitle:wxNSStringWithWxString(GetYesLabel())];
+            buttonId[0] = wxID_NO;
+            buttonId[1] = wxID_YES;
+        }
+        else
+        {
+            [alert addButtonWithTitle:wxNSStringWithWxString(GetYesLabel())];
+            [alert addButtonWithTitle:wxNSStringWithWxString(GetNoLabel())];
+            buttonId[0] = wxID_YES;
+            buttonId[1] = wxID_NO;
+        }
+        if (style & wxCANCEL)
+        {
+            [alert addButtonWithTitle:wxNSStringWithWxString(GetCancelLabel())];
+            buttonId[2] = wxID_CANCEL;
+        }
+    }
+    else
+    {
+        // the MSW implementation even shows an OK button if it is not specified, we'll do the same
+        buttonId[0] = wxID_OK;
+        // using null as default title does not work on earlier systems
+        [alert addButtonWithTitle:wxNSStringWithWxString(GetOKLabel())];
+        if (style & wxCANCEL)
+        {
+            [alert addButtonWithTitle:wxNSStringWithWxString(GetCancelLabel())];
+            buttonId[1] = wxID_CANCEL;
+        }
+    }
+
+    int ret = [alert runModal];
+
+
+    return buttonId[ret-NSAlertFirstButtonReturn];
 }
 
 #endif // wxUSE_DIRDLG
 }
 
 #endif // wxUSE_DIRDLG