added wxArtProvider::GetMessageBoxIcon() to avoid duplicating the same code in generic message and log dialogs (and soon notification message too)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50433 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2007-12-02 19:39:59 +00:00
parent faeaa9db1c
commit 1970409e33
4 changed files with 50 additions and 54 deletions

View File

@@ -148,6 +148,11 @@ public:
const wxArtClient& client = wxART_OTHER,
const wxSize& size = wxDefaultSize);
// Helper used by several generic classes: return the icon corresponding to
// the standard wxICON_INFORMATION/WARNING/ERROR/QUESTION flags (only one
// can be set)
static wxIcon GetMessageBoxIcon(int flags);
// Query the providers for iconbundle with given ID and return it. Return
// wxNullIconBundle if no provider provides it.
static wxIconBundle GetIconBundle(const wxArtID& id,

View File

@@ -303,6 +303,36 @@ wxArtProvider::~wxArtProvider()
return icon;
}
/* static */
wxIcon wxArtProvider::GetMessageBoxIcon(int flags)
{
wxIcon icon;
switch ( flags & wxICON_MASK )
{
default:
wxFAIL_MSG(_T("incorrect message box icon flags"));
// fall through
case wxICON_ERROR:
icon = wxArtProvider::GetIcon(wxART_ERROR, wxART_MESSAGE_BOX);
break;
case wxICON_INFORMATION:
icon = wxArtProvider::GetIcon(wxART_INFORMATION, wxART_MESSAGE_BOX);
break;
case wxICON_WARNING:
icon = wxArtProvider::GetIcon(wxART_WARNING, wxART_MESSAGE_BOX);
break;
case wxICON_QUESTION:
icon = wxArtProvider::GetIcon(wxART_QUESTION, wxART_MESSAGE_BOX);
break;
}
return icon;
}
#if defined(__WXGTK20__) && !defined(__WXUNIVERSAL__)
#include <gtk/gtk.h>
extern GtkIconSize wxArtClientToIconSize(const wxArtClient& client);

View File

@@ -793,37 +793,16 @@ wxLogDialog::wxLogDialog(wxWindow *parent,
wxBoxSizer *sizerTop = new wxBoxSizer(wxVERTICAL);
wxBoxSizer *sizerAll = new wxBoxSizer(isPda ? wxVERTICAL : wxHORIZONTAL);
wxBitmap bitmap;
switch ( style & wxICON_MASK )
{
case wxICON_ERROR:
bitmap = wxArtProvider::GetBitmap(wxART_ERROR, wxART_MESSAGE_BOX);
#ifdef __WXPM__
bitmap.SetId(wxICON_SMALL_ERROR);
#endif
break;
case wxICON_INFORMATION:
bitmap = wxArtProvider::GetBitmap(wxART_INFORMATION, wxART_MESSAGE_BOX);
#ifdef __WXPM__
bitmap.SetId(wxICON_SMALL_INFO);
#endif
break;
case wxICON_WARNING:
bitmap = wxArtProvider::GetBitmap(wxART_WARNING, wxART_MESSAGE_BOX);
#ifdef __WXPM__
bitmap.SetId(wxICON_SMALL_WARNING);
#endif
break;
default:
wxFAIL_MSG(_T("incorrect log style"));
}
if (!isPda)
sizerAll->Add(new wxStaticBitmap(this, wxID_ANY, bitmap), 0,
wxALIGN_CENTRE_VERTICAL);
{
wxStaticBitmap *icon = new wxStaticBitmap
(
this,
wxID_ANY,
wxArtProvider::GetMessageBoxIcon(style)
);
sizerAll->Add(icon, 0, wxALIGN_CENTRE_VERTICAL);
}
// create the text sizer with a minimal size so that we are sure it won't be too small
wxString message = EllipsizeString(messages.Last());

View File

@@ -83,30 +83,12 @@ void wxGenericMessageDialog::DoCreateMsgdialog()
// 1) icon
if (m_dialogStyle & wxICON_MASK)
{
wxBitmap bitmap;
switch ( m_dialogStyle & wxICON_MASK )
{
default:
wxFAIL_MSG(_T("incorrect log style"));
// fall through
case wxICON_ERROR:
bitmap = wxArtProvider::GetIcon(wxART_ERROR, wxART_MESSAGE_BOX);
break;
case wxICON_INFORMATION:
bitmap = wxArtProvider::GetIcon(wxART_INFORMATION, wxART_MESSAGE_BOX);
break;
case wxICON_WARNING:
bitmap = wxArtProvider::GetIcon(wxART_WARNING, wxART_MESSAGE_BOX);
break;
case wxICON_QUESTION:
bitmap = wxArtProvider::GetIcon(wxART_QUESTION, wxART_MESSAGE_BOX);
break;
}
wxStaticBitmap *icon = new wxStaticBitmap(this, wxID_ANY, bitmap);
wxStaticBitmap *icon = new wxStaticBitmap
(
this,
wxID_ANY,
wxArtProvider::GetMessageBoxIcon(m_dialogStyle)
);
if (is_pda)
topsizer->Add( icon, 0, wxTOP|wxLEFT|wxRIGHT | wxALIGN_LEFT, 10 );
else