]>
git.saurik.com Git - wxWidgets.git/blob - src/generic/msgdlgg.cpp
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxGenericMessageDialog
4 // Author: Julian Smart
8 // Copyright: (c) Julian Smart and Markus Holzem
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
13 #pragma implementation "msgdlgg.h"
16 // For compilers that support precompilation, includes "wx.h".
17 #include "wx/wxprec.h"
25 #include "wx/dialog.h"
26 #include "wx/listbox.h"
27 #include "wx/button.h"
28 #include "wx/stattext.h"
29 #include "wx/layout.h"
36 #include "wx/generic/msgdlgg.h"
38 ///////////////////////////////////////////////////////////////////
39 // New dialog box implementations
41 // Split message, using constraints to position controls
42 void wxSplitMessage2(const char *message
, wxList
*messageList
, wxWindow
*parent
, wxRowColSizer
*sizer
)
44 char *copyMessage
= copystring(message
);
46 size_t len
= strlen(copyMessage
);
47 char *currentMessage
= copyMessage
;
49 // wxWindow *lastWindow = parent;
52 while ((i
< len
) && (copyMessage
[i
] != '\n')) i
++;
53 if (i
< len
) copyMessage
[i
] = 0;
54 wxStaticText
*mess
= new wxStaticText(parent
, -1, currentMessage
);
57 wxLayoutConstraints *c = new wxLayoutConstraints;
58 c->left.SameAs (parent, wxLeft, 10);
59 c->top.SameAs (lastWindow, wxBottom, 5);
63 mess->SetConstraints(c);
65 sizer
->AddSizerChild(mess
);
67 messageList
->Append(mess
);
69 currentMessage
= copyMessage
+ i
+ 1;
74 #if !USE_SHARED_LIBRARY
75 BEGIN_EVENT_TABLE(wxGenericMessageDialog
, wxDialog
)
76 EVT_BUTTON(wxID_YES
, wxGenericMessageDialog::OnYes
)
77 EVT_BUTTON(wxID_NO
, wxGenericMessageDialog::OnNo
)
78 EVT_BUTTON(wxID_CANCEL
, wxGenericMessageDialog::OnCancel
)
81 IMPLEMENT_CLASS(wxGenericMessageDialog
, wxDialog
)
84 wxGenericMessageDialog::wxGenericMessageDialog(wxWindow
*parent
, const wxString
& message
, const wxString
& caption
,
85 long style
, const wxPoint
& pos
):
86 wxDialog(parent
, -1, caption
, pos
, wxDefaultSize
, wxDEFAULT_DIALOG_STYLE
|wxDIALOG_MODAL
)
88 m_dialogStyle
= style
;
92 wxSizer
*topSizer
= new wxSizer(this, wxSizerShrink
);
93 topSizer
->SetBorder(10, 10);
95 wxRowColSizer
*messageSizer
= new wxRowColSizer(topSizer
, wxSIZER_COLS
, 100);
96 messageSizer
->SetName("messageSizer");
98 // bool centre = ((style & wxCENTRE) == wxCENTRE);
101 wxSplitMessage2(message
, &messageList
, this, messageSizer
);
104 wxSpacingSizer
*spacingSizer
= new wxSpacingSizer(topSizer
, wxBelow
, messageSizer
, 20);
106 wxRowColSizer
*buttonSizer
= new wxRowColSizer(topSizer
, wxSIZER_ROWS
);
107 buttonSizer
->SetName("buttonSizer");
109 // Specify constraints for the button sizer
110 wxLayoutConstraints
*c
= new wxLayoutConstraints
;
113 c
->top
.Below (spacingSizer
);
114 c
->centreX
.SameAs (spacingSizer
, wxCentreX
);
115 buttonSizer
->SetConstraints(c
);
118 wxButton
*cancel
= NULL
;
119 wxButton
*yes
= NULL
;
122 if (style
& wxYES_NO
) {
123 yes
= new wxButton(this, wxID_YES
, _("Yes"));
124 no
= new wxButton(this, wxID_NO
, _("No"));
126 buttonSizer
->AddSizerChild(yes
);
127 buttonSizer
->AddSizerChild(no
);
131 ok
= new wxButton(this, wxID_OK
, _("OK"));
132 buttonSizer
->AddSizerChild(ok
);
135 if (style
& wxCANCEL
) {
136 cancel
= new wxButton(this, wxID_CANCEL
, _("Cancel"));
137 buttonSizer
->AddSizerChild(cancel
);
157 void wxGenericMessageDialog::OnYes(wxCommandEvent
& WXUNUSED(event
))
162 void wxGenericMessageDialog::OnNo(wxCommandEvent
& WXUNUSED(event
))
167 void wxGenericMessageDialog::OnCancel(wxCommandEvent
& WXUNUSED(event
))
169 // Allow cancellation via ESC/Close button except if
170 // only YES and NO are specified.
171 if ( (m_dialogStyle
& wxYES_NO
) != wxYES_NO
|| (m_dialogStyle
& wxCANCEL
) )
172 EndModal(wxID_CANCEL
);
176 int wxMessageBox(const wxString
& message
, const wxString
& caption
, long style
,
177 wxWindow
*parent
, int WXUNUSED(x
), int WXUNUSED(y
) )
179 wxMessageDialog
dialog(parent
, message
, caption
, style
);
181 int ans
= dialog
.ShowModal();