]>
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
6 // Copyright: (c) wxWindows team
7 // Licence: wxWindows licence
8 /////////////////////////////////////////////////////////////////////////////
10 // ---------------------------------------------------------------------------
12 // ---------------------------------------------------------------------------
14 // For compilers that support precompilation, includes "wx.h".
15 #include "wx/wxprec.h"
17 #if defined(__BORLANDC__)
21 #include "wx/artprov.h"
27 #include "wx/osx/private.h"
29 // ----------------------------------------------------------------------------
31 // ----------------------------------------------------------------------------
33 class wxMacArtProvider
: public wxArtProvider
36 #if wxOSX_USE_COCOA_OR_CARBON
37 virtual wxIconBundle
CreateIconBundle(const wxArtID
& id
,
38 const wxArtClient
& client
);
40 #if wxOSX_USE_COCOA_OR_IPHONE
41 virtual wxBitmap
CreateBitmap(const wxArtID
& id
,
42 const wxArtClient
& client
,
45 return wxOSXCreateSystemBitmap(id
, client
, size
);
50 /* static */ void wxArtProvider::InitNativeProvider()
52 PushBack(new wxMacArtProvider
);
55 #if wxOSX_USE_COCOA_OR_CARBON
57 // ----------------------------------------------------------------------------
59 // ----------------------------------------------------------------------------
61 #define CREATE_STD_ICON(iconId, xpmRc) \
63 wxIconBundle icon(wxT(iconId), wxBITMAP_TYPE_ICON_RESOURCE); \
67 // Macro used in CreateBitmap to get wxICON_FOO icons:
68 #define ART_MSGBOX(artId, iconId, xpmRc) \
71 CREATE_STD_ICON(#iconId, xpmRc) \
74 static wxIconBundle
wxMacArtProvider_CreateIconBundle(const wxArtID
& id
)
76 ART_MSGBOX(wxART_ERROR
, wxICON_ERROR
, error
)
77 ART_MSGBOX(wxART_INFORMATION
, wxICON_INFORMATION
, info
)
78 ART_MSGBOX(wxART_WARNING
, wxICON_WARNING
, warning
)
79 ART_MSGBOX(wxART_QUESTION
, wxICON_QUESTION
, question
)
81 ART_MSGBOX(wxART_FOLDER
, wxICON_FOLDER
, folder
)
82 ART_MSGBOX(wxART_FOLDER_OPEN
, wxICON_FOLDER_OPEN
, folder_open
)
83 ART_MSGBOX(wxART_NORMAL_FILE
, wxICON_NORMAL_FILE
, deffile
)
84 ART_MSGBOX(wxART_EXECUTABLE_FILE
, wxICON_EXECUTABLE_FILE
, exefile
)
86 ART_MSGBOX(wxART_CDROM
, wxICON_CDROM
, cdrom
)
87 ART_MSGBOX(wxART_FLOPPY
, wxICON_FLOPPY
, floppy
)
88 ART_MSGBOX(wxART_HARDDISK
, wxICON_HARDDISK
, harddisk
)
89 ART_MSGBOX(wxART_REMOVABLE
, wxICON_REMOVABLE
, removable
)
91 ART_MSGBOX(wxART_DELETE
, wxICON_DELETE
, delete)
93 ART_MSGBOX(wxART_GO_BACK
, wxICON_GO_BACK
, back
)
94 ART_MSGBOX(wxART_GO_FORWARD
, wxICON_GO_FORWARD
, forward
)
95 ART_MSGBOX(wxART_GO_HOME
, wxICON_GO_HOME
, home
)
97 ART_MSGBOX(wxART_HELP_SETTINGS
, wxICON_HELP_SETTINGS
, htmoptns
)
98 ART_MSGBOX(wxART_HELP_PAGE
, wxICON_HELP_PAGE
, htmpage
)
100 return wxNullIconBundle
;
103 // ----------------------------------------------------------------------------
105 // ----------------------------------------------------------------------------
107 wxIconBundle
wxMacArtProvider::CreateIconBundle(const wxArtID
& id
, const wxArtClient
& client
)
109 // On the Mac folders in lists are always drawn closed, so if an open
110 // folder icon is asked for we will ask for a closed one in its place
111 if ( client
== wxART_LIST
&& id
== wxART_FOLDER_OPEN
)
112 return wxMacArtProvider_CreateIconBundle(wxART_FOLDER
);
114 return wxMacArtProvider_CreateIconBundle(id
);
119 // ----------------------------------------------------------------------------
120 // wxArtProvider::GetNativeSizeHint()
121 // ----------------------------------------------------------------------------
124 wxSize
wxArtProvider::GetNativeSizeHint(const wxArtClient
& client
)
126 if ( client
== wxART_TOOLBAR
)
128 // See http://developer.apple.com/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIcons/chapter_15_section_9.html:
129 // "32 x 32 pixels is the recommended size"
130 return wxSize(32, 32);
132 else if ( client
== wxART_BUTTON
|| client
== wxART_MENU
)
134 // Mac UI doesn't use any images in neither buttons nor menus in
135 // general but the code using wxArtProvider can use wxART_BUTTON to
136 // find the icons of a roughly appropriate size for the buttons and
137 // 16x16 seems to be the best choice for this kind of use
138 return wxSize(16, 16);
141 return wxDefaultSize
;