From 1970409e33ce5aa182fa40ea499e532fdbf1982d Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 2 Dec 2007 19:39:59 +0000 Subject: [PATCH] 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 --- include/wx/artprov.h | 5 +++++ src/common/artprov.cpp | 30 ++++++++++++++++++++++++++++++ src/generic/logg.cpp | 37 ++++++++----------------------------- src/generic/msgdlgg.cpp | 30 ++++++------------------------ 4 files changed, 49 insertions(+), 53 deletions(-) diff --git a/include/wx/artprov.h b/include/wx/artprov.h index e841dba099..e49c3b36d5 100644 --- a/include/wx/artprov.h +++ b/include/wx/artprov.h @@ -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, diff --git a/src/common/artprov.cpp b/src/common/artprov.cpp index d871eea0ec..793718faab 100644 --- a/src/common/artprov.cpp +++ b/src/common/artprov.cpp @@ -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 extern GtkIconSize wxArtClientToIconSize(const wxArtClient& client); diff --git a/src/generic/logg.cpp b/src/generic/logg.cpp index 235e067769..cba360cc86 100644 --- a/src/generic/logg.cpp +++ b/src/generic/logg.cpp @@ -793,38 +793,17 @@ wxLogDialog::wxLogDialog(wxWindow *parent, wxBoxSizer *sizerTop = new wxBoxSizer(wxVERTICAL); wxBoxSizer *sizerAll = new wxBoxSizer(isPda ? wxVERTICAL : wxHORIZONTAL); - wxBitmap bitmap; - switch ( style & wxICON_MASK ) + if (!isPda) { - 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")); + wxStaticBitmap *icon = new wxStaticBitmap + ( + this, + wxID_ANY, + wxArtProvider::GetMessageBoxIcon(style) + ); + sizerAll->Add(icon, 0, wxALIGN_CENTRE_VERTICAL); } - if (!isPda) - sizerAll->Add(new wxStaticBitmap(this, wxID_ANY, bitmap), 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()); wxSizer *szText = CreateTextSizer(message); diff --git a/src/generic/msgdlgg.cpp b/src/generic/msgdlgg.cpp index c6f2e60f23..d479248158 100644 --- a/src/generic/msgdlgg.cpp +++ b/src/generic/msgdlgg.cpp @@ -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 -- 2.47.2