]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/msgdlg.cpp
use unsgined int instead of int for 1 bit bitfields (SGI CC warning fix)
[wxWidgets.git] / src / motif / msgdlg.cpp
index 3e37ff01d4d6a1c4608f65e9bfb84972165a98af..7667a07b1cfc7607bf62c0cd0ff225c96248e0f1 100644 (file)
@@ -1,10 +1,10 @@
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
-// Name:        msgdlg.cpp
+// Name:        src/motif/msgdlg.cpp
 // Purpose:     wxMessageDialog
 // Author:      Julian Smart
 // Modified by:
 // Created:     04/01/98
 // Purpose:     wxMessageDialog
 // Author:      Julian Smart
 // Modified by:
 // Created:     04/01/98
-// RCS-ID:      $$
+// RCS-ID:      $Id$
 // Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 // Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -13,7 +13,7 @@
 // declarations
 // ============================================================================
 
 // declarations
 // ============================================================================
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #pragma implementation "msgdlg.h"
 #endif
 
     #pragma implementation "msgdlg.h"
 #endif
 
 // headers
 // ----------------------------------------------------------------------------
 
 // headers
 // ----------------------------------------------------------------------------
 
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#include "wx/defs.h"
+
+#ifdef __VMS
+#define XtDisplay XTDISPLAY
+#pragma message disable nosimpint
+#include <wx/vms_x_fix.h>
+#endif
 #include <X11/Xlib.h>
 
 #include <Xm/Xm.h>
 #include <Xm/MessageB.h>
 #include <X11/Xlib.h>
 
 #include <Xm/Xm.h>
 #include <Xm/MessageB.h>
+#ifdef __VMS
+#pragma message enable nosimpint
+#endif
 
 #include "wx/app.h"
 #include "wx/intl.h"
 
 #include "wx/app.h"
 #include "wx/intl.h"
-#include "wx/motif/msgdlg.h"
+#include "wx/msgdlg.h"
 #include "wx/motif/private.h"
 #include "wx/motif/private.h"
+#include "wx/settings.h"
 
 // ----------------------------------------------------------------------------
 // macros
 // ----------------------------------------------------------------------------
 
 
 // ----------------------------------------------------------------------------
 // macros
 // ----------------------------------------------------------------------------
 
-#if !USE_SHARED_LIBRARY
     IMPLEMENT_CLASS(wxMessageDialog, wxDialog)
     IMPLEMENT_CLASS(wxMessageDialog, wxDialog)
-#endif
 
 // ============================================================================
 // implementation
 
 // ============================================================================
 // implementation
@@ -48,7 +60,7 @@
 // ----------------------------------------------------------------------------
 
 // the common part
 // ----------------------------------------------------------------------------
 
 // the common part
-static void msgboxCallBack(Widget w, int client_data, int id)
+static void msgboxCallBack(Widget w, void* client_data, int id)
 {
     // close the dialog
     XtUnmanageChild(w);
 {
     // close the dialog
     XtUnmanageChild(w);
@@ -58,28 +70,28 @@ static void msgboxCallBack(Widget w, int client_data, int id)
 }
 
 static void msgboxCallBackOk(Widget w,
 }
 
 static void msgboxCallBackOk(Widget w,
-                             int client_data,
+                             void* client_data,
                              XmAnyCallbackStruct *WXUNUSED(call_data))
 {
     msgboxCallBack(w, client_data, wxID_OK);
 }
 
 static void msgboxCallBackCancel(Widget w,
                              XmAnyCallbackStruct *WXUNUSED(call_data))
 {
     msgboxCallBack(w, client_data, wxID_OK);
 }
 
 static void msgboxCallBackCancel(Widget w,
-                                 int client_data,
+                                 void* client_data,
                                  XmAnyCallbackStruct *WXUNUSED(call_data))
 {
     msgboxCallBack(w, client_data, wxID_CANCEL);
 }
 
 static void msgboxCallBackHelp(Widget w,
                                  XmAnyCallbackStruct *WXUNUSED(call_data))
 {
     msgboxCallBack(w, client_data, wxID_CANCEL);
 }
 
 static void msgboxCallBackHelp(Widget w,
-                               int client_data,
+                               void* client_data,
                                XmAnyCallbackStruct *WXUNUSED(call_data))
 {
     msgboxCallBack(w, client_data, wxID_HELP);
 }
 
 static void msgboxCallBackClose(Widget w,
                                XmAnyCallbackStruct *WXUNUSED(call_data))
 {
     msgboxCallBack(w, client_data, wxID_HELP);
 }
 
 static void msgboxCallBackClose(Widget w,
-                                int client_data,
+                                void* client_data,
                                 XmAnyCallbackStruct *WXUNUSED(call_data))
 {
     msgboxCallBack(w, client_data, wxID_CANCEL);
                                 XmAnyCallbackStruct *WXUNUSED(call_data))
 {
     msgboxCallBack(w, client_data, wxID_CANCEL);
@@ -97,24 +109,31 @@ wxMessageDialog::wxMessageDialog(wxWindow *parent,
 {
     m_caption = caption;
     m_message = message;
 {
     m_caption = caption;
     m_message = message;
-    m_dialogStyle = style;
     m_parent = parent;
     m_parent = parent;
+    SetMessageDialogStyle(style);
+}
+
+extern "C"
+{
+    typedef Widget (*DialogCreateFunction)(Widget, String, ArgList, Cardinal);
 }
 
 int wxMessageDialog::ShowModal()
 {
 }
 
 int wxMessageDialog::ShowModal()
 {
-    Widget (*dialogCreateFunction)(Widget, String, ArgList, Cardinal) = NULL;
-    if ( m_dialogStyle & wxYES_NO )
+    const long style = GetMessageDialogStyle();
+
+    DialogCreateFunction dialogCreateFunction;
+    if ( style & wxYES_NO )
     {
         // if we have [Yes], it must be a question
         dialogCreateFunction = XmCreateQuestionDialog;
     }
     {
         // if we have [Yes], it must be a question
         dialogCreateFunction = XmCreateQuestionDialog;
     }
-    else if ( m_dialogStyle & wxICON_STOP )
+    else if ( style & wxICON_STOP )
     {
         // error dialog is the one with error icon...
         dialogCreateFunction = XmCreateErrorDialog;
     }
     {
         // error dialog is the one with error icon...
         dialogCreateFunction = XmCreateErrorDialog;
     }
-    else if ( m_dialogStyle & wxICON_EXCLAMATION )
+    else if ( style & wxICON_EXCLAMATION )
     {
         // ...and the warning dialog too
         dialogCreateFunction = XmCreateWarningDialog;
     {
         // ...and the warning dialog too
         dialogCreateFunction = XmCreateWarningDialog;
@@ -148,17 +167,30 @@ int wxMessageDialog::ShowModal()
     XtSetArg(args[ac], XmNmessageString, text()); ac++;
     XtSetArg(args[ac], XmNdialogTitle, title()); ac++;
 
     XtSetArg(args[ac], XmNmessageString, text()); ac++;
     XtSetArg(args[ac], XmNdialogTitle, title()); ac++;
 
-    wxComputeColours (XtDisplay(wParent), & m_backgroundColour,
-        (wxColour*) NULL);
+    Display* dpy = XtDisplay(wParent);
+
+    wxComputeColours (dpy, & m_backgroundColour, (wxColour*) NULL);
 
     XtSetArg(args[ac], XmNbackground, g_itemColors[wxBACK_INDEX].pixel); ac++;
     XtSetArg(args[ac], XmNtopShadowColor, g_itemColors[wxTOPS_INDEX].pixel); ac++;
     XtSetArg(args[ac], XmNbottomShadowColor, g_itemColors[wxBOTS_INDEX].pixel); ac++;
     XtSetArg(args[ac], XmNforeground, g_itemColors[wxFORE_INDEX].pixel); ac++;
 
 
     XtSetArg(args[ac], XmNbackground, g_itemColors[wxBACK_INDEX].pixel); ac++;
     XtSetArg(args[ac], XmNtopShadowColor, g_itemColors[wxTOPS_INDEX].pixel); ac++;
     XtSetArg(args[ac], XmNbottomShadowColor, g_itemColors[wxBOTS_INDEX].pixel); ac++;
     XtSetArg(args[ac], XmNforeground, g_itemColors[wxFORE_INDEX].pixel); ac++;
 
+    wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
+
+#if __WXMOTIF20__ && !__WXLESSTIF__
+    XtSetArg(args[ac], XmNbuttonRenderTable, font.GetFontTypeC(dpy)); ac++;
+    XtSetArg(args[ac], XmNlabelRenderTable, font.GetFontTypeC(dpy)); ac++;
+    XtSetArg(args[ac], XmNtextRenderTable, font.GetFontTypeC(dpy)); ac++;
+#else
+    XtSetArg(args[ac], XmNbuttonFontList, font.GetFontTypeC(dpy)); ac++;
+    XtSetArg(args[ac], XmNlabelFontList, font.GetFontTypeC(dpy)); ac++;
+    XtSetArg(args[ac], XmNtextFontList, font.GetFontTypeC(dpy)); ac++;
+#endif
+
     // do create message box
 
     // do create message box
 
-    Widget wMsgBox = (*dialogCreateFunction)(wParent, "", args, ac);
+    Widget wMsgBox = (*dialogCreateFunction)(wParent, wxMOTIF_STR(""), args, ac);
 
     wxCHECK_MSG( wMsgBox, wxID_CANCEL, "msg box creation failed" );
 
 
     wxCHECK_MSG( wMsgBox, wxID_CANCEL, "msg box creation failed" );
 
@@ -169,11 +201,11 @@ int wxMessageDialog::ShowModal()
     Widget wBtnHelp = XmMessageBoxGetChild(wMsgBox, XmDIALOG_HELP_BUTTON);
     Widget wBtnCancel = XmMessageBoxGetChild(wMsgBox, XmDIALOG_CANCEL_BUTTON);
 
     Widget wBtnHelp = XmMessageBoxGetChild(wMsgBox, XmDIALOG_HELP_BUTTON);
     Widget wBtnCancel = XmMessageBoxGetChild(wMsgBox, XmDIALOG_CANCEL_BUTTON);
 
-    if ( m_dialogStyle & wxYES_NO )
+    if ( style & wxYES_NO )
     {
     {
-        wxXmString yes(_("Yes")), no(_("No")), cancel(_("Cancel"));            
+        wxXmString yes(_("Yes")), no(_("No")), cancel(_("Cancel"));
 
 
-        if ( m_dialogStyle & wxCANCEL )
+        if ( style & wxCANCEL )
         {
             // use the cancel button for No and the help button for
             // Cancel  Yuk :-)  MB
         {
             // use the cancel button for No and the help button for
             // Cancel  Yuk :-)  MB
@@ -197,7 +229,7 @@ int wxMessageDialog::ShowModal()
         // requested)
         //
         XtUnmanageChild(wBtnHelp);
         // requested)
         //
         XtUnmanageChild(wBtnHelp);
-        if ( !(m_dialogStyle & wxCANCEL ) ) XtUnmanageChild(wBtnCancel);
+        if ( !(style & wxCANCEL ) ) XtUnmanageChild(wBtnCancel);
     }
 
     // set the callbacks for the message box buttons
     }
 
     // set the callbacks for the message box buttons
@@ -227,7 +259,7 @@ int wxMessageDialog::ShowModal()
     }
 
     // translate the result if necessary
     }
 
     // translate the result if necessary
-    if ( m_dialogStyle & wxYES_NO )
+    if ( style & wxYES_NO )
     {
         if ( m_result == wxID_OK )
             m_result = wxID_YES;
     {
         if ( m_result == wxID_OK )
             m_result = wxID_YES;