Make the main message of wxGenericMessageDialog stand out.
Use larger bold font for the main message in wxGenericMessageDialog if the extended message is also given to make it stand out similarly to how it happens in the native GTK and MSW dialogs. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65363 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
9a3551d3f4
commit
c79510ca12
@ -22,6 +22,7 @@ class WXDLLIMPEXP_FWD_CORE wxDialogLayoutAdapter;
|
||||
class WXDLLIMPEXP_FWD_CORE wxDialog;
|
||||
class WXDLLIMPEXP_FWD_CORE wxButton;
|
||||
class WXDLLIMPEXP_FWD_CORE wxScrolledWindow;
|
||||
class wxTextSizerWrapper;
|
||||
|
||||
// Also see the bit summary table in wx/toplevel.h.
|
||||
|
||||
@ -115,9 +116,14 @@ public:
|
||||
}
|
||||
|
||||
#if wxUSE_STATTEXT // && wxUSE_TEXTCTRL
|
||||
// splits text up at newlines and places the
|
||||
// lines into a vertical wxBoxSizer
|
||||
wxSizer *CreateTextSizer( const wxString &message );
|
||||
// splits text up at newlines and places the lines into a vertical
|
||||
// wxBoxSizer
|
||||
wxSizer *CreateTextSizer( const wxString& message );
|
||||
|
||||
// same as above but uses a customized wxTextSizerWrapper to create
|
||||
// non-standard controls for the lines
|
||||
wxSizer *CreateTextSizer( const wxString& message,
|
||||
wxTextSizerWrapper& wrapper );
|
||||
#endif // wxUSE_STATTEXT // && wxUSE_TEXTCTRL
|
||||
|
||||
// returns a horizontal wxBoxSizer containing the given buttons
|
||||
|
@ -66,5 +66,63 @@ private:
|
||||
wxDECLARE_NO_COPY_CLASS(wxTextWrapper);
|
||||
};
|
||||
|
||||
#if wxUSE_STATTEXT
|
||||
|
||||
#include "wx/sizer.h"
|
||||
#include "wx/stattext.h"
|
||||
|
||||
// A class creating a sizer with one static text per line of text. Creation of
|
||||
// the controls used for each line can be customized by overriding
|
||||
// OnCreateLine() function.
|
||||
//
|
||||
// This class is currently private to wxWidgets and used only by wxDialog
|
||||
// itself. We may make it public later if there is sufficient interest.
|
||||
class wxTextSizerWrapper : public wxTextWrapper
|
||||
{
|
||||
public:
|
||||
wxTextSizerWrapper(wxWindow *win)
|
||||
{
|
||||
m_win = win;
|
||||
m_hLine = 0;
|
||||
}
|
||||
|
||||
wxSizer *CreateSizer(const wxString& text, int widthMax)
|
||||
{
|
||||
m_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
Wrap(m_win, text, widthMax);
|
||||
return m_sizer;
|
||||
}
|
||||
|
||||
wxWindow *GetParent() const { return m_win; }
|
||||
|
||||
protected:
|
||||
virtual wxWindow *OnCreateLine(const wxString& line)
|
||||
{
|
||||
return new wxStaticText(m_win, wxID_ANY, line);
|
||||
}
|
||||
|
||||
virtual void OnOutputLine(const wxString& line)
|
||||
{
|
||||
if ( !line.empty() )
|
||||
{
|
||||
m_sizer->Add(OnCreateLine(line));
|
||||
}
|
||||
else // empty line, no need to create a control for it
|
||||
{
|
||||
if ( !m_hLine )
|
||||
m_hLine = m_win->GetCharHeight();
|
||||
|
||||
m_sizer->Add(5, m_hLine);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
wxWindow *m_win;
|
||||
wxSizer *m_sizer;
|
||||
int m_hLine;
|
||||
};
|
||||
|
||||
#endif // wxUSE_STATTEXT
|
||||
|
||||
#endif // _WX_TEXTWRAPPER_H_
|
||||
|
||||
|
@ -143,45 +143,15 @@ wxDialogBase::GetParentForModalDialog(wxWindow *parent, long style) const
|
||||
|
||||
#if wxUSE_STATTEXT
|
||||
|
||||
class wxTextSizerWrapper : public wxTextWrapper
|
||||
{
|
||||
public:
|
||||
wxTextSizerWrapper(wxWindow *win)
|
||||
{
|
||||
m_win = win;
|
||||
m_hLine = 0;
|
||||
}
|
||||
|
||||
wxSizer *CreateSizer(const wxString& text, int widthMax)
|
||||
{
|
||||
m_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
Wrap(m_win, text, widthMax);
|
||||
return m_sizer;
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual void OnOutputLine(const wxString& line)
|
||||
{
|
||||
if ( !line.empty() )
|
||||
{
|
||||
m_sizer->Add(new wxStaticText(m_win, wxID_ANY, line));
|
||||
}
|
||||
else // empty line, no need to create a control for it
|
||||
{
|
||||
if ( !m_hLine )
|
||||
m_hLine = m_win->GetCharHeight();
|
||||
|
||||
m_sizer->Add(5, m_hLine);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
wxWindow *m_win;
|
||||
wxSizer *m_sizer;
|
||||
int m_hLine;
|
||||
};
|
||||
|
||||
wxSizer *wxDialogBase::CreateTextSizer(const wxString& message)
|
||||
{
|
||||
wxTextSizerWrapper wrapper(this);
|
||||
|
||||
return CreateTextSizer(message, wrapper);
|
||||
}
|
||||
|
||||
wxSizer *wxDialogBase::CreateTextSizer(const wxString& message,
|
||||
wxTextSizerWrapper& wrapper)
|
||||
{
|
||||
// I admit that this is complete bogus, but it makes
|
||||
// message boxes work for pda screens temporarily..
|
||||
@ -198,8 +168,6 @@ wxSizer *wxDialogBase::CreateTextSizer(const wxString& message)
|
||||
wxString text(message);
|
||||
text.Replace(wxT("&"), wxT("&&"));
|
||||
|
||||
wxTextSizerWrapper wrapper(this);
|
||||
|
||||
return wrapper.CreateSizer(text, widthMax);
|
||||
}
|
||||
|
||||
|
@ -38,11 +38,35 @@
|
||||
#define __WX_COMPILING_MSGDLGG_CPP__ 1
|
||||
#include "wx/msgdlg.h"
|
||||
#include "wx/artprov.h"
|
||||
#include "wx/textwrapper.h"
|
||||
|
||||
#if wxUSE_STATLINE
|
||||
#include "wx/statline.h"
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxTitleTextWrapper: simple class to create wrapped text in "title font"
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxTitleTextWrapper : public wxTextSizerWrapper
|
||||
{
|
||||
public:
|
||||
wxTitleTextWrapper(wxWindow *win)
|
||||
: wxTextSizerWrapper(win)
|
||||
{
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual wxWindow *OnCreateLine(const wxString& s)
|
||||
{
|
||||
wxWindow * const win = wxTextSizerWrapper::OnCreateLine(s);
|
||||
|
||||
win->SetFont(win->GetFont().Larger().MakeBold());
|
||||
|
||||
return win;
|
||||
}
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// icons
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -98,8 +122,29 @@ void wxGenericMessageDialog::DoCreateMsgdialog()
|
||||
|
||||
#if wxUSE_STATTEXT
|
||||
// 2) text
|
||||
icon_text->Add( CreateTextSizer( GetFullMessage() ), 0, wxALIGN_CENTER | wxLEFT, 10 );
|
||||
|
||||
wxBoxSizer * const textsizer = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
// We want to show the main message in a different font to make it stand
|
||||
// out if the extended message is used as well. This looks better and is
|
||||
// more consistent with the native dialogs under MSW and GTK.
|
||||
wxString lowerMessage;
|
||||
if ( !m_extendedMessage.empty() )
|
||||
{
|
||||
wxTitleTextWrapper titleWrapper(this);
|
||||
textsizer->Add(CreateTextSizer(GetMessage(), titleWrapper),
|
||||
wxSizerFlags().Border(wxBOTTOM, 20));
|
||||
|
||||
lowerMessage = GetExtendedMessage();
|
||||
}
|
||||
else // no extended message
|
||||
{
|
||||
lowerMessage = GetMessage();
|
||||
}
|
||||
|
||||
textsizer->Add(CreateTextSizer(lowerMessage));
|
||||
|
||||
icon_text->Add(textsizer, 0, wxALIGN_CENTER, 10);
|
||||
topsizer->Add( icon_text, 1, wxCENTER | wxLEFT|wxRIGHT|wxTOP, 10 );
|
||||
#endif // wxUSE_STATTEXT
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user