]>
git.saurik.com Git - wxWidgets.git/blob - src/generic/msgdlgg.cpp
d2339efb44526dff2404daf985f003cf5adc250f
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxGenericMessageDialog
4 // Author: Julian Smart, Robert Roebling
8 // Copyright: (c) Julian Smart, Markus Holzem, Robert Roebling
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 wxSize
wxSplitMessage2( const wxString
&message
, wxWindow
*parent
)
46 wxString
line( _T("") );
47 for (uint pos
= 0; pos
< message
.Len(); pos
++)
49 if (message
[pos
] == _T('\n'))
53 wxStaticText
*s1
= new wxStaticText( parent
, -1, line
, wxPoint(15,y
) );
54 wxSize
size1( s1
->GetSize() );
55 if (size1
.x
> w
) w
= size1
.x
;
68 wxStaticText
*s2
= new wxStaticText( parent
, -1, line
, wxPoint(15,y
) );
69 wxSize
size2( s2
->GetSize() );
70 if (size2
.x
> w
) w
= size2
.x
;
75 return wxSize(w
+30,y
);
78 #if !USE_SHARED_LIBRARY
79 BEGIN_EVENT_TABLE(wxGenericMessageDialog
, wxDialog
)
80 EVT_BUTTON(wxID_YES
, wxGenericMessageDialog::OnYes
)
81 EVT_BUTTON(wxID_NO
, wxGenericMessageDialog::OnNo
)
82 EVT_BUTTON(wxID_CANCEL
, wxGenericMessageDialog::OnCancel
)
85 IMPLEMENT_CLASS(wxGenericMessageDialog
, wxDialog
)
88 wxGenericMessageDialog::wxGenericMessageDialog( wxWindow
*parent
, const wxString
& message
,
89 const wxString
& caption
, long style
, const wxPoint
& pos
) :
90 wxDialog( parent
, -1, caption
, pos
, wxDefaultSize
)
92 m_dialogStyle
= style
;
94 wxSize
message_size( wxSplitMessage2( message
, this ) );
96 wxButton
*ok
= (wxButton
*) NULL
;
97 wxButton
*cancel
= (wxButton
*) NULL
;
98 wxButton
*yes
= (wxButton
*) NULL
;
99 wxButton
*no
= (wxButton
*) NULL
;
101 int y
= message_size
.y
+ 30;
103 if (style
& wxYES_NO
)
105 yes
= new wxButton( this, wxID_YES
, _("Yes"), wxPoint(-1,y
), wxSize(80,-1) );
106 m_buttons
.Append( yes
);
107 no
= new wxButton( this, wxID_NO
, _("No"), wxPoint(-1,y
), wxSize(80,-1) );
108 m_buttons
.Append( no
);
113 ok
= new wxButton( this, wxID_OK
, _("OK"), wxPoint(-1,y
), wxSize(80,-1) );
114 m_buttons
.Append( ok
);
117 if (style
& wxCANCEL
)
119 cancel
= new wxButton( this, wxID_CANCEL
, _("Cancel"), wxPoint(-1,y
), wxSize(80,-1) );
120 m_buttons
.Append( cancel
);
134 int w
= m_buttons
.GetCount() * 100;
135 if (message_size
.x
> w
) w
= message_size
.x
;
136 int space
= w
/ (m_buttons
.GetCount()*2);
139 wxNode
*node
= m_buttons
.First();
142 wxWindow
*win
= (wxWindow
*)node
->Data();
143 int x
= (n
*2+1)*space
- 40 + 15;
149 SetSize( w
+30, y
+40 );
154 void wxGenericMessageDialog::OnYes(wxCommandEvent
& WXUNUSED(event
))
156 EndModal( wxID_YES
);
159 void wxGenericMessageDialog::OnNo(wxCommandEvent
& WXUNUSED(event
))
164 void wxGenericMessageDialog::OnCancel(wxCommandEvent
& WXUNUSED(event
))
166 /* Allow cancellation via ESC/Close button except if
167 only YES and NO are specified. */
168 if ( (m_dialogStyle
& wxYES_NO
) != wxYES_NO
|| (m_dialogStyle
& wxCANCEL
) )
170 EndModal( wxID_CANCEL
);