Move LabelWrapper, TextSizerWrapper classes out of function body to accommodate some older compilers.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35301 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Michael Wetherell
2005-08-24 14:59:36 +00:00
parent 4f66d445e1
commit cfd1ac216d

View File

@@ -177,6 +177,44 @@ void wxTextWrapper::Wrap(wxWindow *win, const wxString& text, int widthMax)
} }
} }
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) wxSizer *wxDialogBase::CreateTextSizer(const wxString& message)
{ {
// I admit that this is complete bogus, but it makes // I admit that this is complete bogus, but it makes
@@ -194,61 +232,14 @@ wxSizer *wxDialogBase::CreateTextSizer(const wxString& message)
wxString text(message); wxString text(message);
text.Replace(_T("&"), _T("&&")); text.Replace(_T("&"), _T("&&"));
wxTextSizerWrapper wrapper(this);
class TextSizerWrapper : public wxTextWrapper
{
public:
TextSizerWrapper(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;
};
TextSizerWrapper wrapper(this);
return wrapper.CreateSizer(text, widthMax); return wrapper.CreateSizer(text, widthMax);
} }
void class wxLabelWrapper : public wxTextWrapper
#if defined(__WXGTK__) && !defined(__WXUNIVERSAL__)
wxStaticText
#else
wxStaticTextBase
#endif
::Wrap(int width)
{ {
class LabelWrapper : public wxTextWrapper public:
{
public:
void WrapLabel(wxWindow *text, int widthMax) void WrapLabel(wxWindow *text, int widthMax)
{ {
m_text.clear(); m_text.clear();
@@ -256,7 +247,7 @@ wxStaticTextBase
text->SetLabel(m_text); text->SetLabel(m_text);
} }
protected: protected:
virtual void OnOutputLine(const wxString& line) virtual void OnOutputLine(const wxString& line)
{ {
m_text += line; m_text += line;
@@ -267,11 +258,19 @@ wxStaticTextBase
m_text += _T('\n'); m_text += _T('\n');
} }
private: private:
wxString m_text; wxString m_text;
}; };
LabelWrapper wrapper; void
#if defined(__WXGTK__) && !defined(__WXUNIVERSAL__)
wxStaticText
#else
wxStaticTextBase
#endif
::Wrap(int width)
{
wxLabelWrapper wrapper;
wrapper.WrapLabel(this, width); wrapper.WrapLabel(this, width);
} }