]>
git.saurik.com Git - wxWidgets.git/blob - src/osx/artmac.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/osx/artmac.cpp
3 // Purpose: wxArtProvider instance with native Mac stock icons
7 // Copyright: (c) wxWindows team
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
11 // ---------------------------------------------------------------------------
13 // ---------------------------------------------------------------------------
15 // For compilers that support precompilation, includes "wx.h".
16 #include "wx/wxprec.h"
18 #if defined(__BORLANDC__)
22 #include "wx/artprov.h"
30 // ----------------------------------------------------------------------------
32 // ----------------------------------------------------------------------------
34 class wxMacArtProvider
: public wxArtProvider
37 virtual wxBitmap
CreateBitmap(const wxArtID
& id
, const wxArtClient
& client
,
39 virtual wxIconBundle
CreateIconBundle(const wxArtID
& id
,
40 const wxArtClient
& client
);
43 /* static */ void wxArtProvider::InitNativeProvider()
45 wxArtProvider::Push(new wxMacArtProvider
);
48 // ----------------------------------------------------------------------------
50 // ----------------------------------------------------------------------------
52 #define CREATE_STD_ICON(iconId, xpmRc) \
54 wxIconBundle icon(_T(iconId), wxBITMAP_TYPE_ICON_RESOURCE); \
58 // Macro used in CreateBitmap to get wxICON_FOO icons:
59 #define ART_MSGBOX(artId, iconId, xpmRc) \
62 CREATE_STD_ICON(#iconId, xpmRc) \
65 static wxIconBundle
wxMacArtProvider_CreateIconBundle(const wxArtID
& id
)
67 ART_MSGBOX(wxART_ERROR
, wxICON_ERROR
, error
)
68 ART_MSGBOX(wxART_INFORMATION
, wxICON_INFORMATION
, info
)
69 ART_MSGBOX(wxART_WARNING
, wxICON_WARNING
, warning
)
70 ART_MSGBOX(wxART_QUESTION
, wxICON_QUESTION
, question
)
72 ART_MSGBOX(wxART_FOLDER
, wxICON_FOLDER
, folder
)
73 ART_MSGBOX(wxART_FOLDER_OPEN
, wxICON_FOLDER_OPEN
, folder_open
)
74 ART_MSGBOX(wxART_NORMAL_FILE
, wxICON_NORMAL_FILE
, deffile
)
76 return wxNullIconBundle
;
79 // ----------------------------------------------------------------------------
81 // ----------------------------------------------------------------------------
83 wxIconBundle
wxMacArtProvider::CreateIconBundle(const wxArtID
& id
, const wxArtClient
& client
)
85 // On the Mac folders in lists are always drawn closed, so if an open
86 // folder icon is asked for we will ask for a closed one in its place
87 if ( client
== wxART_LIST
&& id
== wxART_FOLDER_OPEN
)
88 return wxMacArtProvider_CreateIconBundle(wxART_FOLDER
);
90 return wxMacArtProvider_CreateIconBundle(id
);
93 // ----------------------------------------------------------------------------
95 // ----------------------------------------------------------------------------
97 wxBitmap
wxMacArtProvider::CreateBitmap(const wxArtID
& id
,
98 const wxArtClient
& client
,
99 const wxSize
& reqSize
)
101 wxIconBundle
ic(CreateIconBundle(id
, client
));
104 wxIcon
theIcon(ic
.GetIcon(reqSize
));
105 return wxBitmap(theIcon
);
112 // ----------------------------------------------------------------------------
113 // wxArtProvider::GetNativeSizeHint()
114 // ----------------------------------------------------------------------------
117 wxSize
wxArtProvider::GetNativeSizeHint(const wxArtClient
& client
)
119 if ( client
== wxART_TOOLBAR
)
121 // See http://developer.apple.com/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIcons/chapter_15_section_9.html:
122 // "32 x 32 pixels is the recommended size"
123 return wxSize(32, 32);
126 return wxDefaultSize
;
129 #endif // wxOSX_USE_CARBON