#ifndef _WX_GENERIC_MSGDLGG_H_
#define _WX_GENERIC_MSGDLGG_H_
+class WXDLLIMPEXP_FWD_CORE wxSizer;
+
class WXDLLIMPEXP_CORE wxGenericMessageDialog : public wxMessageDialogBase
{
public:
virtual void AddMessageDialogDetails(wxSizer *WXUNUSED(sizer)) { }
private:
+ // Creates and returns a standard button sizer using the style of this
+ // dialog and the custom labels, if any.
+ //
+ // May return NULL on smart phone platforms not using buttons at all.
+ wxSizer *CreateMsgDlgButtonSizer();
+
wxPoint m_pos;
bool m_created;
var = label.GetAsString();
}
+ // these functions return the custom label or empty string and should be
+ // used only in specific circumstances such as creating the buttons with
+ // these labels (in which case it makes sense to only use a custom label if
+ // it was really given and fall back on stock label otherwise), use the
+ // Get{Yes,No,OK,Cancel}Label() methods above otherwise
+ const wxString& GetCustomYesLabel() const { return m_yes; }
+ const wxString& GetCustomNoLabel() const { return m_no; }
+ const wxString& GetCustomOKLabel() const { return m_ok; }
+ const wxString& GetCustomCancelLabel() const { return m_cancel; }
+
private:
// these functions may be overridden to provide different defaults for the
// default button labels (this is used by wxGTK)
m_created = false;
}
+wxSizer *wxGenericMessageDialog::CreateMsgDlgButtonSizer()
+{
+#ifndef __SMARTPHONE__
+ if ( HasCustomLabels() )
+ {
+ wxStdDialogButtonSizer * const sizerStd = new wxStdDialogButtonSizer;
+
+ wxButton *btnDef = NULL;
+
+ if ( m_dialogStyle & wxOK )
+ {
+ btnDef = new wxButton(this, wxID_OK, GetCustomOKLabel());
+ sizerStd->AddButton(btnDef);
+ }
+
+ if ( m_dialogStyle & wxCANCEL )
+ {
+ wxButton * const
+ cancel = new wxButton(this, wxID_CANCEL, GetCustomCancelLabel());
+ sizerStd->AddButton(cancel);
+
+ if ( m_dialogStyle & wxCANCEL_DEFAULT )
+ btnDef = cancel;
+ }
+
+ if ( m_dialogStyle & wxYES_NO )
+ {
+ wxButton * const
+ yes = new wxButton(this, wxID_YES, GetCustomYesLabel());
+ sizerStd->AddButton(yes);
+
+ wxButton * const
+ no = new wxButton(this, wxID_NO, GetCustomNoLabel());
+ sizerStd->AddButton(no);
+ if ( m_dialogStyle & wxNO_DEFAULT )
+ btnDef = no;
+ else if ( !btnDef )
+ btnDef = yes;
+ }
+
+ if ( btnDef )
+ {
+ btnDef->SetDefault();
+ btnDef->SetFocus();
+ }
+
+ sizerStd->Realize();
+
+ return CreateSeparatedSizer(sizerStd);
+ }
+#endif // !__SMARTPHONE__
+
+ // Use standard labels for all buttons
+ return CreateSeparatedButtonSizer
+ (
+ m_dialogStyle & (wxOK | wxCANCEL | wxYES_NO |
+ wxNO_DEFAULT | wxCANCEL_DEFAULT)
+ );
+}
+
void wxGenericMessageDialog::DoCreateMsgdialog()
{
wxDialog::Create(m_parent, wxID_ANY, m_caption, m_pos, wxDefaultSize, wxDEFAULT_DIALOG_STYLE);
int center_flag = wxEXPAND;
if (m_dialogStyle & wxYES_NO)
center_flag = wxALIGN_CENTRE;
- wxSizer *sizerBtn = CreateSeparatedButtonSizer
- (
- m_dialogStyle & (wxOK | wxCANCEL | wxYES_NO |
- wxNO_DEFAULT | wxCANCEL_DEFAULT)
- );
+ wxSizer *sizerBtn = CreateMsgDlgButtonSizer();
if ( sizerBtn )
topsizer->Add(sizerBtn, 0, center_flag | wxALL, 10 );