wxArtProvider cleanup: added artmsw.cpp accidentally missing from r56372
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56373 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
106
src/msw/artmsw.cpp
Normal file
106
src/msw/artmsw.cpp
Normal file
@@ -0,0 +1,106 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: src/msw/artmsw.cpp
|
||||
// Purpose: stock wxArtProvider instance with native MSW stock icons
|
||||
// Author: Vaclav Slavik
|
||||
// Modified by:
|
||||
// Created: 2008-10-15
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) Vaclav Slavik, 2008
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// headers
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
// For compilers that support precompilation, includes "wx.h".
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#if defined(__BORLANDC__)
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
#include "wx/artprov.h"
|
||||
#include "wx/msw/wrapwin.h"
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxWindowsArtProvider
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
class wxWindowsArtProvider : public wxArtProvider
|
||||
{
|
||||
protected:
|
||||
virtual wxBitmap CreateBitmap(const wxArtID& id, const wxArtClient& client,
|
||||
const wxSize& size);
|
||||
};
|
||||
|
||||
static wxBitmap CreateFromStdIcon(const char *iconName)
|
||||
{
|
||||
wxIcon icon(iconName);
|
||||
wxBitmap bmp;
|
||||
bmp.CopyFromIcon(icon);
|
||||
return bmp;
|
||||
}
|
||||
|
||||
wxBitmap wxWindowsArtProvider::CreateBitmap(const wxArtID& id,
|
||||
const wxArtClient& WXUNUSED(client),
|
||||
const wxSize& WXUNUSED(size))
|
||||
{
|
||||
// handle message box icons specially (wxIcon ctor treat these names
|
||||
// as special cases via wxICOResourceHandler::LoadIcon):
|
||||
if ( id == wxART_ERROR )
|
||||
return CreateFromStdIcon("wxICON_ERROR");
|
||||
else if ( id == wxART_INFORMATION )
|
||||
return CreateFromStdIcon("wxICON_INFORMATION");
|
||||
else if ( id == wxART_WARNING )
|
||||
return CreateFromStdIcon("wxICON_WARNING");
|
||||
else if ( id == wxART_QUESTION )
|
||||
return CreateFromStdIcon("wxICON_QUESTION");
|
||||
|
||||
// for anything else, fall back to generic provider:
|
||||
return wxNullBitmap;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxArtProvider::InitNativeProvider()
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
/*static*/ void wxArtProvider::InitNativeProvider()
|
||||
{
|
||||
Push(new wxWindowsArtProvider);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxArtProvider::GetNativeSizeHint()
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
/*static*/
|
||||
wxSize wxArtProvider::GetNativeSizeHint(const wxArtClient& client)
|
||||
{
|
||||
if ( client == wxART_TOOLBAR )
|
||||
{
|
||||
return wxSize(24, 24);
|
||||
}
|
||||
else if ( client == wxART_MENU )
|
||||
{
|
||||
return wxSize(16, 16);
|
||||
}
|
||||
else if ( client == wxART_FRAME_ICON )
|
||||
{
|
||||
return wxSize(::GetSystemMetrics(SM_CXSMICON),
|
||||
::GetSystemMetrics(SM_CYSMICON));
|
||||
}
|
||||
else if ( client == wxART_CMN_DIALOG ||
|
||||
client == wxART_MESSAGE_BOX )
|
||||
{
|
||||
return wxSize(::GetSystemMetrics(SM_CXICON),
|
||||
::GetSystemMetrics(SM_CYICON));
|
||||
}
|
||||
else if (client == wxART_BUTTON)
|
||||
{
|
||||
return wxSize(16, 16);
|
||||
}
|
||||
|
||||
return wxDefaultSize;
|
||||
}
|
Reference in New Issue
Block a user