+/* 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);
+#endif // defined(__WXGTK20__) && !defined(__WXUNIVERSAL__)
+
+/*static*/ wxSize wxArtProvider::GetSizeHint(const wxArtClient& client,
+ bool platform_dependent)
+{
+ if (!platform_dependent)
+ {
+ wxArtProvidersList::compatibility_iterator node = sm_providers->GetFirst();
+ if (node)
+ return node->GetData()->DoGetSizeHint(client);
+ }
+
+ // else return platform dependent size
+
+#if defined(__WXGTK20__) && !defined(__WXUNIVERSAL__)
+ // Gtk has specific sizes for each client, see artgtk.cpp
+ GtkIconSize gtk_size = wxArtClientToIconSize(client);
+ // no size hints for this client
+ if (gtk_size == GTK_ICON_SIZE_INVALID)
+ return wxDefaultSize;
+ gint width, height;
+ gtk_icon_size_lookup( gtk_size, &width, &height);
+ return wxSize(width, height);
+#else // !GTK+ 2
+ // NB: These size hints may have to be adjusted per platform
+ if (client == wxART_TOOLBAR)
+ return wxSize(16, 15);
+ else if (client == wxART_MENU)
+ return wxSize(16, 15);
+ else if (client == wxART_FRAME_ICON)
+ return wxSize(16, 15);
+ else if (client == wxART_CMN_DIALOG || client == wxART_MESSAGE_BOX)
+ return wxSize(32, 32);
+ else if (client == wxART_HELP_BROWSER)
+ return wxSize(16, 15);
+ else if (client == wxART_BUTTON)
+ return wxSize(16, 15);
+ else // wxART_OTHER or perhaps a user's client, no specified size
+ return wxDefaultSize;
+#endif // GTK+ 2/else
+}
+
+// ----------------------------------------------------------------------------
+// deprecated wxArtProvider methods
+// ----------------------------------------------------------------------------
+
+#if WXWIN_COMPATIBILITY_2_6
+
+/* static */ void wxArtProvider::PushProvider(wxArtProvider *provider)
+{
+ Push(provider);
+}
+
+/* static */ void wxArtProvider::InsertProvider(wxArtProvider *provider)
+{
+ Insert(provider);
+}
+
+/* static */ bool wxArtProvider::PopProvider()
+{
+ return Pop();
+}
+
+/* static */ bool wxArtProvider::RemoveProvider(wxArtProvider *provider)
+{
+ // RemoveProvider() used to delete the provider being removed so this is
+ // not a typo, we must call Delete() and not Remove() here
+ return Delete(provider);
+}
+
+#endif // WXWIN_COMPATIBILITY_2_6
+
+// ============================================================================
+// wxArtProviderModule
+// ============================================================================