show all available information in the dialog (somewhat modified patch 1592306)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43372 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2006-11-12 21:43:27 +00:00
parent 56eebcdac2
commit b9993189cc
2 changed files with 39 additions and 15 deletions

View File

@@ -64,6 +64,9 @@ protected:
// add the text, if it's not empty, to the text sizer contents // add the text, if it's not empty, to the text sizer contents
void AddText(const wxString& text); void AddText(const wxString& text);
// add a wxCollapsiblePane containing the given text
void AddCollapsiblePane(const wxString& title, const wxString& text);
private: private:
// common part of all ctors // common part of all ctors
void Init() { m_sizerText = NULL; } void Init() { m_sizerText = NULL; }

View File

@@ -42,16 +42,13 @@
// implementation // implementation
// ============================================================================ // ============================================================================
// ----------------------------------------------------------------------------
// wxAboutDialogInfo
// ----------------------------------------------------------------------------
// helper function: returns all array elements in a single comma-separated and // helper function: returns all array elements in a single comma-separated and
// newline-terminated string // newline-terminated string
static wxString AllAsString(const wxArrayString& a) static wxString AllAsString(const wxArrayString& a)
{ {
wxString s; wxString s;
const size_t count = a.size(); const size_t count = a.size();
s.reserve(20*count);
for ( size_t n = 0; n < count; n++ ) for ( size_t n = 0; n < count; n++ )
{ {
s << a[n] << (n == count - 1 ? _T("\n") : _T(", ")); s << a[n] << (n == count - 1 ? _T("\n") : _T(", "));
@@ -60,6 +57,10 @@ static wxString AllAsString(const wxArrayString& a)
return s; return s;
} }
// ----------------------------------------------------------------------------
// wxAboutDialogInfo
// ----------------------------------------------------------------------------
wxString wxAboutDialogInfo::GetDescriptionAndCredits() const wxString wxAboutDialogInfo::GetDescriptionAndCredits() const
{ {
wxString s = GetDescription(); wxString s = GetDescription();
@@ -134,22 +135,26 @@ bool wxGenericAboutDialog::Create(const wxAboutDialogInfo& info)
} }
#if wxUSE_COLLPANE #if wxUSE_COLLPANE
// add licence
if ( info.HasLicence() ) if ( info.HasLicence() )
{ AddCollapsiblePane(wxT("License"), info.GetLicence());
wxCollapsiblePane *
licensepnl = new wxCollapsiblePane(this, wxID_ANY, wxT("License"));
new wxStaticText(licensepnl->GetPane(), wxID_ANY, info.GetLicence(), if ( info.HasDevelopers() )
wxDefaultPosition, wxDefaultSize, AddCollapsiblePane(wxT("Developers"),
wxALIGN_CENTRE); AllAsString(info.GetDevelopers()));
m_sizerText->Add(licensepnl, wxSizerFlags(1).Expand().Border(wxBOTTOM)); if ( info.HasDocWriters() )
} AddCollapsiblePane(wxT("Documentation writers"),
AllAsString(info.GetDocWriters()));
if ( info.HasArtists() )
AddCollapsiblePane(wxT("Artists"),
AllAsString(info.GetArtists()));
if ( info.HasTranslators() )
AddCollapsiblePane(wxT("Translators"),
AllAsString(info.GetTranslators()));
#endif // wxUSE_COLLPANE #endif // wxUSE_COLLPANE
// TODO: add credits (developers, artists, doc writers, translators)
DoAddCustomControls(); DoAddCustomControls();
@@ -199,6 +204,22 @@ void wxGenericAboutDialog::AddText(const wxString& text)
AddControl(new wxStaticText(this, wxID_ANY, text)); AddControl(new wxStaticText(this, wxID_ANY, text));
} }
void wxGenericAboutDialog::AddCollapsiblePane(const wxString& title,
const wxString& text)
{
wxCollapsiblePane *pane = new wxCollapsiblePane(this, wxID_ANY, title);
wxStaticText *txt = new wxStaticText(pane->GetPane(), wxID_ANY, text,
wxDefaultPosition, wxDefaultSize,
wxALIGN_CENTRE);
// don't make the text unreasonably wide
static const int maxWidth = wxGetDisplaySize().x/3;
txt->Wrap(maxWidth);
// NB: all the wxCollapsiblePanes must be added with a null proportion value
m_sizerText->Add(pane, wxSizerFlags(0).Expand().Border(wxBOTTOM));
}
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// public functions // public functions
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------