]>
Commit | Line | Data |
---|---|---|
f4fcc291 JS |
1 | % |
2 | % automatically generated by HelpGen $Revision$ from | |
3 | % artprov.h at 08/Apr/02 17:44:57 | |
4 | % | |
5 | ||
6 | \section{\class{wxArtProvider}}\label{wxartprovider} | |
7 | ||
fc2171bd | 8 | wxArtProvider class is used to customize the look of wxWidgets application. |
25057aba JS |
9 | When wxWidgets needs to display an icon or a bitmap (e.g. in the standard file |
10 | dialog), it does not use a hard-coded resource but asks wxArtProvider for it | |
11 | instead. This way users can plug in their own wxArtProvider class and easily | |
12 | replace standard art with their own version. All | |
52734360 VZ |
13 | that is needed is to derive a class from wxArtProvider, override either its |
14 | \helpref{CreateBitmap}{wxartprovidercreatebitmap} and/or its | |
15 | \helpref{CreateIconBundle}{wxartprovidercreateiconbundle} methods | |
16 | and register the provider with | |
571d2e0f | 17 | \helpref{wxArtProvider::Push}{wxartproviderpush}: |
e7300ec6 VS |
18 | |
19 | \begin{verbatim} | |
20 | class MyProvider : public wxArtProvider | |
21 | { | |
22 | protected: | |
23 | wxBitmap CreateBitmap(const wxArtID& id, | |
24 | const wxArtClient& client, | |
25 | const wxSize size) | |
52734360 VZ |
26 | |
27 | // optionally override this one as well | |
28 | wxIconBundle CreateIconBundle(const wxArtID& id, | |
29 | const wxArtClient& client) | |
e7300ec6 VS |
30 | { ... } |
31 | }; | |
32 | ... | |
571d2e0f | 33 | wxArtProvider::Push(new MyProvider); |
e7300ec6 VS |
34 | \end{verbatim} |
35 | ||
52734360 VZ |
36 | If you need bitmap images (of the same artwork) that should be displayed at different sizes |
37 | you should probably consider overriding \helpref{CreateIconBundle()}{wxartprovidercreateiconbundle} | |
38 | and supplying icon bundles that contain different bitmap sizes. | |
39 | ||
e7300ec6 | 40 | There's another way of taking advantage of this class: you can use it in your code and use |
dceb1c09 | 41 | platform native icons as provided by \helpref{wxArtProvider::GetBitmap}{wxartprovidergetbitmap} or |
e7300ec6 | 42 | \helpref{wxArtProvider::GetIcon}{wxartprovidergeticon} (NB: this is not yet really |
fc2171bd | 43 | possible as of wxWidgets 2.3.3, the set of wxArtProvider bitmaps is too |
e7300ec6 VS |
44 | small). |
45 | ||
571d2e0f | 46 | |
f510b7b2 | 47 | \membersection{Identifying art resources}\label{artprovideridentifying} |
e7300ec6 | 48 | |
52734360 | 49 | Every bitmap and icon bundle are known to wxArtProvider under an unique ID that is used when |
e7300ec6 VS |
50 | requesting a resource from it. The ID is represented by wxArtID type and can |
51 | have one of these predefined values (you can see bitmaps represented by these | |
52 | constants in the \helpref{artprov}{sampleartprovider} sample): | |
53 | \begin{itemize}\itemsep=0pt | |
d6b7a928 VZ |
54 | |
55 | \item wxART\_ERROR | |
56 | \item wxART\_QUESTION | |
57 | \item wxART\_WARNING | |
58 | \item wxART\_INFORMATION | |
59 | \item wxART\_ADD\_BOOKMARK | |
60 | \item wxART\_DEL\_BOOKMARK | |
61 | \item wxART\_HELP\_SIDE\_PANEL | |
62 | \item wxART\_HELP\_SETTINGS | |
63 | \item wxART\_HELP\_BOOK | |
64 | \item wxART\_HELP\_FOLDER | |
65 | \item wxART\_HELP\_PAGE | |
66 | \item wxART\_GO\_BACK | |
67 | \item wxART\_GO\_FORWARD | |
68 | \item wxART\_GO\_UP | |
69 | \item wxART\_GO\_DOWN | |
70 | \item wxART\_GO\_TO\_PARENT | |
71 | \item wxART\_GO\_HOME | |
72 | \item wxART\_PRINT | |
73 | \item wxART\_HELP | |
74 | \item wxART\_TIP | |
75 | \item wxART\_REPORT\_VIEW | |
76 | \item wxART\_LIST\_VIEW | |
77 | \item wxART\_NEW\_DIR | |
78 | \item wxART\_FOLDER | |
79 | \item wxART\_FOLDER\_OPEN | |
80 | \item wxART\_GO\_DIR\_UP | |
81 | \item wxART\_EXECUTABLE\_FILE | |
82 | \item wxART\_NORMAL\_FILE | |
83 | \item wxART\_TICK\_MARK | |
84 | \item wxART\_CROSS\_MARK | |
85 | \item wxART\_MISSING\_IMAGE | |
86 | \item wxART\_NEW | |
87 | \item wxART\_FILE\_OPEN | |
88 | \item wxART\_FILE\_SAVE | |
89 | \item wxART\_FILE\_SAVE\_AS | |
90 | \item wxART\_DELETE | |
91 | \item wxART\_COPY | |
92 | \item wxART\_CUT | |
93 | \item wxART\_PASTE | |
94 | \item wxART\_UNDO | |
95 | \item wxART\_REDO | |
96 | \item wxART\_QUIT | |
97 | \item wxART\_FIND | |
98 | \item wxART\_FIND\_AND\_REPLACE | |
99 | \item wxART\_HARDDISK | |
100 | \item wxART\_FLOPPY | |
101 | \item wxART\_CDROM | |
102 | \item wxART\_REMOVABLE | |
103 | ||
e7300ec6 VS |
104 | \end{itemize} |
105 | ||
571d2e0f VZ |
106 | Additionally, any string recognized by custom art providers registered using |
107 | \helpref{Push}{wxartproviderpush} may be used. | |
b5ab476a VS |
108 | |
109 | \wxheading{GTK+ Note} | |
110 | ||
111 | When running under GTK+ 2, GTK+ stock item IDs (e.g. {\tt "gtk-cdrom"}) may | |
112 | be used as well. Additionally, if wxGTK was compiled against GTK+ >= 2.4, then | |
113 | it is also possible to load icons from current icon theme by specifying their | |
114 | name (without extension and directory components). Icon themes recognized | |
115 | by GTK+ follow the | |
116 | \urlref{freedesktop.org Icon Themes specification}{http://freedesktop.org/Standards/icon-theme-spec}. Note that themes are not guaranteed to contain all | |
117 | icons, so wxArtProvider may return {\tt wxNullBitmap} or {\tt wxNullIcon}. | |
118 | Default theme is typically installed in {\tt /usr/share/icons/hicolor}. | |
7bebedd8 | 119 | |
571d2e0f | 120 | |
f510b7b2 | 121 | \membersection{Clients}\label{artproviderclients} |
e7300ec6 VS |
122 | |
123 | Client is the entity that calls wxArtProvider's GetBitmap or GetIcon | |
124 | function. It is represented by wxClientID type and can have one of these | |
125 | values: | |
126 | \begin{itemize}\itemsep=0pt | |
127 | \item wxART\_TOOLBAR | |
128 | \item wxART\_MENU | |
b5cf8234 | 129 | \item wxART\_BUTTON |
e7300ec6 VS |
130 | \item wxART\_FRAME\_ICON |
131 | \item wxART\_CMN\_DIALOG | |
132 | \item wxART\_HELP\_BROWSER | |
133 | \item wxART\_MESSAGE\_BOX | |
134 | \item wxART\_OTHER (used for all requests that don't fit into any of the categories above) | |
135 | \end{itemize} | |
136 | Client ID servers as a hint to wxArtProvider that is supposed to help it to | |
137 | choose the best looking bitmap. For example it is often desirable to use | |
138 | slightly different icons in menus and toolbars even though they represent the | |
139 | same action (e.g. {\tt wx\_ART\_FILE\_OPEN}). Remember that this is really | |
140 | only a hint for wxArtProvider -- it is common that | |
141 | \helpref{wxArtProvider::GetBitmap}{wxartprovidergetbitmap} | |
142 | returns identical bitmap for different {\it client} values! | |
143 | ||
144 | \wxheading{See also} | |
145 | ||
146 | See the \helpref{artprov}{sampleartprovider} sample for an example of wxArtProvider usage. | |
f4fcc291 JS |
147 | |
148 | \wxheading{Derived from} | |
149 | ||
150 | \helpref{wxObject}{wxobject} | |
151 | ||
152 | \wxheading{Include files} | |
153 | ||
154 | <wx/artprov.h> | |
155 | ||
e7300ec6 | 156 | \latexignore{\rtfignore{\wxheading{Members}}} |
f4fcc291 | 157 | |
571d2e0f VZ |
158 | |
159 | \membersection{wxArtProvider::\destruct{wxArtProvider}}\label{wxartproviderdtor} | |
160 | ||
161 | \func{}{\destruct{wxArtProvider}}{\void} | |
162 | ||
163 | The destructor automatically removes the provider from the provider stack used | |
164 | by \helpref{GetBitmap}{wxartprovidergetbitmap}. | |
165 | ||
166 | ||
e7300ec6 | 167 | \membersection{wxArtProvider::CreateBitmap}\label{wxartprovidercreatebitmap} |
f4fcc291 | 168 | |
e7300ec6 | 169 | \func{wxBitmap}{CreateBitmap}{\param{const wxArtID\& }{id}, \param{const wxArtClient\& }{client}, \param{const wxSize\& }{size}} |
f4fcc291 | 170 | |
bafddbe8 VZ |
171 | Derived art provider classes must override this method to create requested art |
172 | resource. Note that returned bitmaps are cached by wxArtProvider and it is | |
173 | therefore not necessary to optimize CreateBitmap() for speed (e.g. you may | |
174 | create wxBitmap objects from XPMs here). | |
f4fcc291 | 175 | |
e7300ec6 | 176 | \wxheading{Parameters} |
f4fcc291 | 177 | |
e7300ec6 | 178 | \docparam{id}{wxArtID unique identifier of the bitmap.} |
f4fcc291 | 179 | |
e7300ec6 VS |
180 | \docparam{client}{wxArtClient identifier of the client (i.e. who is asking for the bitmap). |
181 | This only servers as a hint.} | |
182 | ||
dbd94b75 | 183 | \docparam{size}{Preferred size of the bitmap. The function may return a bitmap of different |
e7300ec6 | 184 | dimensions, it will be automatically rescaled to meet client's request.} |
f4fcc291 | 185 | |
e7300ec6 | 186 | \wxheading{Note} |
f4fcc291 | 187 | |
e7300ec6 VS |
188 | This is {\bf not} part of wxArtProvider's public API, use |
189 | \helpref{wxArtProvider::GetBitmap}{wxartprovidergetbitmap} or | |
52734360 | 190 | \helpref{wxArtProvider::GetIconBundle}{wxartprovidergeticonbundle} or |
e7300ec6 VS |
191 | \helpref{wxArtProvider::GetIcon}{wxartprovidergeticon} |
192 | to query wxArtProvider for a resource. | |
f4fcc291 | 193 | |
bafddbe8 | 194 | \wxheading{See also} |
571d2e0f | 195 | |
bafddbe8 | 196 | \helpref{CreateIconBundle}{wxartprovidercreateiconbundle} |
52734360 | 197 | |
52734360 | 198 | |
bafddbe8 | 199 | \membersection{wxArtProvider::CreateIconBundle}\label{wxartprovidercreateiconbundle} |
52734360 | 200 | |
bafddbe8 | 201 | \func{wxIconBundle}{CreateIconBundle}{\param{const wxArtID\& }{id}, \param{const wxArtClient\& }{client}} |
52734360 | 202 | |
bafddbe8 VZ |
203 | This method is similar to \helpref{CreateBitmap}{wxartprovidercreatebitmap} but |
204 | can be used when a bitmap (or an icon) exists in several sizes. | |
52734360 | 205 | |
52734360 | 206 | |
52734360 | 207 | |
571d2e0f VZ |
208 | \membersection{wxArtProvider::Delete}\label{wxartproviderdelete} |
209 | ||
210 | \func{static bool}{Delete}{\param{wxArtProvider* }{provider}} | |
211 | ||
212 | Delete the given \arg{provider}. | |
213 | ||
214 | ||
f4fcc291 JS |
215 | \membersection{wxArtProvider::GetBitmap}\label{wxartprovidergetbitmap} |
216 | ||
e7300ec6 VS |
217 | \func{static wxBitmap}{GetBitmap}{\param{const wxArtID\& }{id}, \param{const wxArtClient\& }{client = wxART\_OTHER}, \param{const wxSize\& }{size = wxDefaultSize}} |
218 | ||
219 | Query registered providers for bitmap with given ID. | |
220 | ||
221 | \wxheading{Parameters} | |
222 | ||
223 | \docparam{id}{wxArtID unique identifier of the bitmap.} | |
224 | ||
225 | \docparam{client}{wxArtClient identifier of the client (i.e. who is asking for the bitmap).} | |
226 | ||
227 | \docparam{size}{Size of the returned bitmap or {\tt wxDefaultSize} if size doesn't matter.} | |
228 | ||
229 | \wxheading{Return value} | |
f4fcc291 | 230 | |
e7300ec6 | 231 | The bitmap if one of registered providers recognizes the ID or wxNullBitmap otherwise. |
f4fcc291 | 232 | |
571d2e0f | 233 | |
52734360 VZ |
234 | \membersection{wxArtProvider::GetIconBundle}\label{wxartprovidergeticonbundle} |
235 | ||
236 | \func{static wxIconBundle}{GetIconBundle}{\param{const wxArtID\& }{id}, \param{const wxArtClient\& }{client = wxART\_OTHER}} | |
237 | ||
238 | Query registered providers for icon bundle with given ID. | |
239 | ||
240 | \wxheading{Parameters} | |
241 | ||
242 | \docparam{id}{wxArtID unique identifier of the icon bundle.} | |
243 | ||
244 | \docparam{client}{wxArtClient identifier of the client (i.e. who is asking for the icon bundle).} | |
245 | ||
246 | \wxheading{Return value} | |
247 | ||
248 | The icon bundle if one of registered providers recognizes the ID or wxNullIconBundle otherwise. | |
249 | ||
250 | ||
f4fcc291 JS |
251 | \membersection{wxArtProvider::GetIcon}\label{wxartprovidergeticon} |
252 | ||
e7300ec6 | 253 | \func{static wxIcon}{GetIcon}{\param{const wxArtID\& }{id}, \param{const wxArtClient\& }{client = wxART\_OTHER}, \param{const wxSize\& }{size = wxDefaultSize}} |
f4fcc291 | 254 | |
e7300ec6 VS |
255 | Same as \helpref{wxArtProvider::GetBitmap}{wxartprovidergetbitmap}, but |
256 | return a wxIcon object (or wxNullIcon on failure). | |
f4fcc291 | 257 | |
40ca9449 | 258 | \func{static wxSize}{GetSizeHint}{\param{const wxArtClient\& }{client}, \param{bool }{platform\_default = false}} |
b737ad10 | 259 | |
e53a95bc | 260 | Returns a suitable size hint for the given {\it wxArtClient}. If |
40ca9449 | 261 | {\it platform\_default} is \true, return a size based on the current platform, |
e53a95bc | 262 | otherwise return the size from the topmost wxArtProvider. {\it wxDefaultSize} may be |
40ca9449 | 263 | returned if the client doesn't have a specified size, like wxART\_OTHER for example. |
b737ad10 | 264 | |
dd7d379e | 265 | |
571d2e0f VZ |
266 | \membersection{wxArtProvider::Insert}\label{wxartproviderinsert} |
267 | ||
268 | \func{static void}{Insert}{\param{wxArtProvider* }{provider}} | |
dd7d379e VS |
269 | |
270 | Register new art provider and add it to the bottom of providers stack (i.e. | |
271 | it will be queried as the last one). | |
272 | ||
273 | \wxheading{See also} | |
274 | ||
571d2e0f VZ |
275 | \helpref{Push}{wxartproviderpush} |
276 | ||
dd7d379e | 277 | |
571d2e0f | 278 | \membersection{wxArtProvider::Pop}\label{wxartproviderctor} |
f4fcc291 | 279 | |
571d2e0f | 280 | \func{static bool}{Pop}{\void} |
f4fcc291 JS |
281 | |
282 | Remove latest added provider and delete it. | |
283 | ||
f4fcc291 | 284 | |
571d2e0f VZ |
285 | \membersection{wxArtProvider::Push}\label{wxartproviderpush} |
286 | ||
287 | \func{static void}{Push}{\param{wxArtProvider* }{provider}} | |
f4fcc291 | 288 | |
dd7d379e VS |
289 | Register new art provider and add it to the top of providers stack (i.e. it |
290 | will be queried as the first provider). | |
291 | ||
292 | \wxheading{See also} | |
293 | ||
571d2e0f VZ |
294 | \helpref{Insert}{wxartproviderinsert} |
295 | ||
f4fcc291 | 296 | |
571d2e0f | 297 | \membersection{wxArtProvider::Remove}\label{wxartproviderremove} |
f4fcc291 | 298 | |
571d2e0f | 299 | \func{static bool}{Remove}{\param{wxArtProvider* }{provider}} |
f4fcc291 | 300 | |
571d2e0f VZ |
301 | Remove a provider from the stack if it is on it. The provider is {\emph not} |
302 | deleted, unlike when using \helpref{Delete()}{wxartproviderdelete}. | |
f4fcc291 | 303 |