]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/wx/artprov.tex
corrected typo in the creation date
[wxWidgets.git] / docs / latex / wx / artprov.tex
CommitLineData
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 8wxArtProvider class is used to customize the look of wxWidgets application.
25057aba
JS
9When wxWidgets needs to display an icon or a bitmap (e.g. in the standard file
10dialog), it does not use a hard-coded resource but asks wxArtProvider for it
11instead. This way users can plug in their own wxArtProvider class and easily
12replace standard art with their own version. All
52734360
VZ
13that is needed is to derive a class from wxArtProvider, override either its
14\helpref{CreateBitmap}{wxartprovidercreatebitmap} and/or its
15\helpref{CreateIconBundle}{wxartprovidercreateiconbundle} methods
16and 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
36If you need bitmap images (of the same artwork) that should be displayed at different sizes
37you should probably consider overriding \helpref{CreateIconBundle()}{wxartprovidercreateiconbundle}
38and supplying icon bundles that contain different bitmap sizes.
39
e7300ec6 40There's another way of taking advantage of this class: you can use it in your code and use
dceb1c09 41platform native icons as provided by \helpref{wxArtProvider::GetBitmap}{wxartprovidergetbitmap} or
e7300ec6 42\helpref{wxArtProvider::GetIcon}{wxartprovidergeticon} (NB: this is not yet really
fc2171bd 43possible as of wxWidgets 2.3.3, the set of wxArtProvider bitmaps is too
e7300ec6
VS
44small).
45
571d2e0f 46
f510b7b2 47\membersection{Identifying art resources}\label{artprovideridentifying}
e7300ec6 48
52734360 49Every bitmap and icon bundle are known to wxArtProvider under an unique ID that is used when
e7300ec6
VS
50requesting a resource from it. The ID is represented by wxArtID type and can
51have one of these predefined values (you can see bitmaps represented by these
52constants 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
106Additionally, any string recognized by custom art providers registered using
107\helpref{Push}{wxartproviderpush} may be used.
b5ab476a
VS
108
109\wxheading{GTK+ Note}
110
111When running under GTK+ 2, GTK+ stock item IDs (e.g. {\tt "gtk-cdrom"}) may
112be used as well. Additionally, if wxGTK was compiled against GTK+ >= 2.4, then
113it is also possible to load icons from current icon theme by specifying their
114name (without extension and directory components). Icon themes recognized
115by 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
117icons, so wxArtProvider may return {\tt wxNullBitmap} or {\tt wxNullIcon}.
118Default theme is typically installed in {\tt /usr/share/icons/hicolor}.
7bebedd8 119
571d2e0f 120
f510b7b2 121\membersection{Clients}\label{artproviderclients}
e7300ec6
VS
122
123Client is the entity that calls wxArtProvider's GetBitmap or GetIcon
124function. It is represented by wxClientID type and can have one of these
125values:
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}
136Client ID servers as a hint to wxArtProvider that is supposed to help it to
137choose the best looking bitmap. For example it is often desirable to use
138slightly different icons in menus and toolbars even though they represent the
139same action (e.g. {\tt wx\_ART\_FILE\_OPEN}). Remember that this is really
140only a hint for wxArtProvider -- it is common that
141\helpref{wxArtProvider::GetBitmap}{wxartprovidergetbitmap}
142returns identical bitmap for different {\it client} values!
143
144\wxheading{See also}
145
146See 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
163The destructor automatically removes the provider from the provider stack used
164by \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
52734360
VZ
171Derived art provider classes must override this method or the CreateIconBundle() method
172to create requested art resource. Note that returned bitmaps are cached by wxArtProvider
173and it is therefore not necessary to optimize CreateBitmap() for speed (e.g. you may create
174wxBitmap 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).
181This only servers as a hint.}
182
dbd94b75 183\docparam{size}{Preferred size of the bitmap. The function may return a bitmap of different
e7300ec6 184dimensions, it will be automatically rescaled to meet client's request.}
f4fcc291 185
e7300ec6 186\wxheading{Note}
f4fcc291 187
e7300ec6
VS
188This 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}
192to query wxArtProvider for a resource.
f4fcc291 193
571d2e0f 194
52734360
VZ
195\func{wxIconBundle}{CreateIconBundle}{\param{const wxArtID\& }{id}, \param{const wxArtClient\& }{client}}
196
197Derived art provider classes must override this method or the CreateIconBundle method
198to create requested art resource. Note that returned icon bundles are cached by wxArtProvider
199and it is therefore not necessary to optimize CreateIconBundle for speed (e.g. you may create icon bundles
200from artwork resources here).
201
202\wxheading{Parameters}
203
204\docparam{id}{wxArtID unique identifier of the icon bundle.}
205
206\docparam{client}{wxArtClient identifier of the client (i.e. who is asking for the icon bundle).
207This only servers as a hint.}
208
209\wxheading{Note}
210
211This is {\bf not} part of wxArtProvider's public API, use
212\helpref{wxArtProvider::GetBitmap}{wxartprovidergetbitmap} or
213\helpref{wxArtProvider::GetIconBundle}{wxartprovidergeticonbundle} or
214\helpref{wxArtProvider::GetIcon}{wxartprovidergeticon}
215to query wxArtProvider for a resource.
216
571d2e0f
VZ
217\membersection{wxArtProvider::Delete}\label{wxartproviderdelete}
218
219\func{static bool}{Delete}{\param{wxArtProvider* }{provider}}
220
221Delete the given \arg{provider}.
222
223
f4fcc291
JS
224\membersection{wxArtProvider::GetBitmap}\label{wxartprovidergetbitmap}
225
e7300ec6
VS
226\func{static wxBitmap}{GetBitmap}{\param{const wxArtID\& }{id}, \param{const wxArtClient\& }{client = wxART\_OTHER}, \param{const wxSize\& }{size = wxDefaultSize}}
227
228Query registered providers for bitmap with given ID.
229
230\wxheading{Parameters}
231
232\docparam{id}{wxArtID unique identifier of the bitmap.}
233
234\docparam{client}{wxArtClient identifier of the client (i.e. who is asking for the bitmap).}
235
236\docparam{size}{Size of the returned bitmap or {\tt wxDefaultSize} if size doesn't matter.}
237
238\wxheading{Return value}
f4fcc291 239
e7300ec6 240The bitmap if one of registered providers recognizes the ID or wxNullBitmap otherwise.
f4fcc291 241
571d2e0f 242
52734360
VZ
243\membersection{wxArtProvider::GetIconBundle}\label{wxartprovidergeticonbundle}
244
245\func{static wxIconBundle}{GetIconBundle}{\param{const wxArtID\& }{id}, \param{const wxArtClient\& }{client = wxART\_OTHER}}
246
247Query registered providers for icon bundle with given ID.
248
249\wxheading{Parameters}
250
251\docparam{id}{wxArtID unique identifier of the icon bundle.}
252
253\docparam{client}{wxArtClient identifier of the client (i.e. who is asking for the icon bundle).}
254
255\wxheading{Return value}
256
257The icon bundle if one of registered providers recognizes the ID or wxNullIconBundle otherwise.
258
259
f4fcc291
JS
260\membersection{wxArtProvider::GetIcon}\label{wxartprovidergeticon}
261
e7300ec6 262\func{static wxIcon}{GetIcon}{\param{const wxArtID\& }{id}, \param{const wxArtClient\& }{client = wxART\_OTHER}, \param{const wxSize\& }{size = wxDefaultSize}}
f4fcc291 263
e7300ec6
VS
264Same as \helpref{wxArtProvider::GetBitmap}{wxartprovidergetbitmap}, but
265return a wxIcon object (or wxNullIcon on failure).
f4fcc291 266
40ca9449 267\func{static wxSize}{GetSizeHint}{\param{const wxArtClient\& }{client}, \param{bool }{platform\_default = false}}
b737ad10 268
e53a95bc 269Returns a suitable size hint for the given {\it wxArtClient}. If
40ca9449 270{\it platform\_default} is \true, return a size based on the current platform,
e53a95bc 271otherwise return the size from the topmost wxArtProvider. {\it wxDefaultSize} may be
40ca9449 272returned if the client doesn't have a specified size, like wxART\_OTHER for example.
b737ad10 273
dd7d379e 274
571d2e0f
VZ
275\membersection{wxArtProvider::Insert}\label{wxartproviderinsert}
276
277\func{static void}{Insert}{\param{wxArtProvider* }{provider}}
dd7d379e
VS
278
279Register new art provider and add it to the bottom of providers stack (i.e.
280it will be queried as the last one).
281
282\wxheading{See also}
283
571d2e0f
VZ
284\helpref{Push}{wxartproviderpush}
285
dd7d379e 286
571d2e0f 287\membersection{wxArtProvider::Pop}\label{wxartproviderctor}
f4fcc291 288
571d2e0f 289\func{static bool}{Pop}{\void}
f4fcc291
JS
290
291Remove latest added provider and delete it.
292
f4fcc291 293
571d2e0f
VZ
294\membersection{wxArtProvider::Push}\label{wxartproviderpush}
295
296\func{static void}{Push}{\param{wxArtProvider* }{provider}}
f4fcc291 297
dd7d379e
VS
298Register new art provider and add it to the top of providers stack (i.e. it
299will be queried as the first provider).
300
301\wxheading{See also}
302
571d2e0f
VZ
303\helpref{Insert}{wxartproviderinsert}
304
f4fcc291 305
571d2e0f 306\membersection{wxArtProvider::Remove}\label{wxartproviderremove}
f4fcc291 307
571d2e0f 308\func{static bool}{Remove}{\param{wxArtProvider* }{provider}}
f4fcc291 309
571d2e0f
VZ
310Remove a provider from the stack if it is on it. The provider is {\emph not}
311deleted, unlike when using \helpref{Delete()}{wxartproviderdelete}.
f4fcc291 312