]> git.saurik.com Git - wxWidgets.git/blame_incremental - wxPython/src/_artprov.i
wxCheckListBox doesn't require wxUSE_OWNER_DRAWN when using WXUNIVERSAL
[wxWidgets.git] / wxPython / src / _artprov.i
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: _artprov.i
3// Purpose: SWIG interface stuff for wxArtProvider
4//
5// Author: Robin Dunn
6//
7// Created: 18-June-1999
8// RCS-ID: $Id$
9// Copyright: (c) 2003 by Total Control Software
10// Licence: wxWindows license
11/////////////////////////////////////////////////////////////////////////////
12
13// Not a %module
14
15
16//---------------------------------------------------------------------------
17%newgroup
18
19%{
20#include <wx/artprov.h>
21%}
22
23//---------------------------------------------------------------------------
24
25
26// Art clients
27MAKE_CONST_WXSTRING(ART_TOOLBAR);
28MAKE_CONST_WXSTRING(ART_MENU);
29MAKE_CONST_WXSTRING(ART_FRAME_ICON);
30MAKE_CONST_WXSTRING(ART_CMN_DIALOG);
31MAKE_CONST_WXSTRING(ART_HELP_BROWSER);
32MAKE_CONST_WXSTRING(ART_MESSAGE_BOX);
33MAKE_CONST_WXSTRING(ART_BUTTON);
34MAKE_CONST_WXSTRING(ART_OTHER);
35
36// Art IDs
37MAKE_CONST_WXSTRING(ART_ADD_BOOKMARK);
38MAKE_CONST_WXSTRING(ART_DEL_BOOKMARK);
39MAKE_CONST_WXSTRING(ART_HELP_SIDE_PANEL);
40MAKE_CONST_WXSTRING(ART_HELP_SETTINGS);
41MAKE_CONST_WXSTRING(ART_HELP_BOOK);
42MAKE_CONST_WXSTRING(ART_HELP_FOLDER);
43MAKE_CONST_WXSTRING(ART_HELP_PAGE);
44MAKE_CONST_WXSTRING(ART_GO_BACK);
45MAKE_CONST_WXSTRING(ART_GO_FORWARD);
46MAKE_CONST_WXSTRING(ART_GO_UP);
47MAKE_CONST_WXSTRING(ART_GO_DOWN);
48MAKE_CONST_WXSTRING(ART_GO_TO_PARENT);
49MAKE_CONST_WXSTRING(ART_GO_HOME);
50MAKE_CONST_WXSTRING(ART_FILE_OPEN);
51MAKE_CONST_WXSTRING(ART_FILE_SAVE);
52MAKE_CONST_WXSTRING(ART_FILE_SAVE_AS);
53MAKE_CONST_WXSTRING(ART_PRINT);
54MAKE_CONST_WXSTRING(ART_HELP);
55MAKE_CONST_WXSTRING(ART_TIP);
56MAKE_CONST_WXSTRING(ART_REPORT_VIEW);
57MAKE_CONST_WXSTRING(ART_LIST_VIEW);
58MAKE_CONST_WXSTRING(ART_NEW_DIR);
59MAKE_CONST_WXSTRING(ART_HARDDISK);
60MAKE_CONST_WXSTRING(ART_FLOPPY);
61MAKE_CONST_WXSTRING(ART_CDROM);
62MAKE_CONST_WXSTRING(ART_REMOVABLE);
63MAKE_CONST_WXSTRING(ART_FOLDER);
64MAKE_CONST_WXSTRING(ART_FOLDER_OPEN);
65MAKE_CONST_WXSTRING(ART_GO_DIR_UP);
66MAKE_CONST_WXSTRING(ART_EXECUTABLE_FILE);
67MAKE_CONST_WXSTRING(ART_NORMAL_FILE);
68MAKE_CONST_WXSTRING(ART_TICK_MARK);
69MAKE_CONST_WXSTRING(ART_CROSS_MARK);
70MAKE_CONST_WXSTRING(ART_ERROR);
71MAKE_CONST_WXSTRING(ART_QUESTION);
72MAKE_CONST_WXSTRING(ART_WARNING);
73MAKE_CONST_WXSTRING(ART_INFORMATION);
74MAKE_CONST_WXSTRING(ART_MISSING_IMAGE);
75MAKE_CONST_WXSTRING(ART_COPY);
76MAKE_CONST_WXSTRING(ART_CUT);
77MAKE_CONST_WXSTRING(ART_PASTE);
78MAKE_CONST_WXSTRING(ART_DELETE);
79MAKE_CONST_WXSTRING(ART_UNDO);
80MAKE_CONST_WXSTRING(ART_REDO);
81MAKE_CONST_WXSTRING(ART_QUIT);
82MAKE_CONST_WXSTRING(ART_FIND);
83MAKE_CONST_WXSTRING(ART_FIND_AND_REPLACE);
84
85//---------------------------------------------------------------------------
86
87%{ // Python aware wxArtProvider
88class wxPyArtProvider : public wxArtProvider {
89public:
90
91 virtual wxBitmap CreateBitmap(const wxArtID& id,
92 const wxArtClient& client,
93 const wxSize& size) {
94 wxBitmap rval = wxNullBitmap;
95 wxPyBlock_t blocked = wxPyBeginBlockThreads();
96 if ((wxPyCBH_findCallback(m_myInst, "CreateBitmap"))) {
97 PyObject* so = wxPyConstructObject((void*)&size, wxT("wxSize"), 0);
98 PyObject* ro;
99 wxBitmap* ptr;
100 PyObject* s1, *s2;
101 s1 = wx2PyString(id);
102 s2 = wx2PyString(client);
103 ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(OOO)", s1, s2, so));
104 Py_DECREF(so);
105 Py_DECREF(s1);
106 Py_DECREF(s2);
107 if (ro) {
108 if (wxPyConvertSwigPtr(ro, (void**)&ptr, wxT("wxBitmap")))
109 rval = *ptr;
110 Py_DECREF(ro);
111 }
112 }
113 wxPyEndBlockThreads(blocked);
114 return rval;
115 }
116
117 PYPRIVATE;
118};
119%}
120
121// The one for SWIG to see
122
123
124
125DocStr(wxPyArtProvider,
126"The wx.ArtProvider class is used to customize the look of wxWidgets
127application. When wxWidgets needs to display an icon or a bitmap (e.g.
128in the standard file dialog), it does not use hard-coded resource but
129asks wx.ArtProvider for it instead. This way the users can plug in
130their own wx.ArtProvider class and easily replace standard art with
131his/her own version. It is easy thing to do: all that is needed is
132to derive a class from wx.ArtProvider, override it's CreateBitmap
133method and register the provider with wx.ArtProvider.PushProvider::
134
135 class MyArtProvider(wx.ArtProvider):
136 def __init__(self):
137 wx.ArtProvider.__init__(self)
138
139 def CreateBitmap(self, artid, client, size):
140 ...
141 return bmp
142", "
143
144Identifying art resources
145-------------------------
146
147Every bitmap is known to wx.ArtProvider under an unique ID that is
148used when requesting a resource from it. The IDs can have one of the
149following predefined values. Additionally, any string recognized by
150custom art providers registered using `PushProvider` may be used.
151
152GTK+ Note
153---------
154
155When running under GTK+ 2, GTK+ stock item IDs (e.g. 'gtk-cdrom') may be used
156as well. Additionally, if wxGTK was compiled against GTK+ >= 2.4, then it is
157also possible to load icons from current icon theme by specifying their name
158without the extension and directory components. Icon themes recognized by GTK+
159follow the freedesktop.org Icon Themes specification. Note that themes are
160not guaranteed to contain all icons, so wx.ArtProvider may return wx.NullBitmap
161or wx.NullIcon. The default theme is typically installed in /usr/share/icons/hicolor.
162
163
164 * wx.ART_ADD_BOOKMARK
165 * wx.ART_DEL_BOOKMARK
166 * wx.ART_HELP_SIDE_PANEL
167 * wx.ART_HELP_SETTINGS
168 * wx.ART_HELP_BOOK
169 * wx.ART_HELP_FOLDER
170 * wx.ART_HELP_PAGE
171 * wx.ART_GO_BACK
172 * wx.ART_GO_FORWARD
173 * wx.ART_GO_UP
174 * wx.ART_GO_DOWN
175 * wx.ART_GO_TO_PARENT
176 * wx.ART_GO_HOME
177 * wx.ART_FILE_OPEN
178 * wx.ART_PRINT
179 * wx.ART_HELP
180 * wx.ART_TIP
181 * wx.ART_REPORT_VIEW
182 * wx.ART_LIST_VIEW
183 * wx.ART_NEW_DIR
184 * wx.ART_FOLDER
185 * wx.ART_GO_DIR_UP
186 * wx.ART_EXECUTABLE_FILE
187 * wx.ART_NORMAL_FILE
188 * wx.ART_TICK_MARK
189 * wx.ART_CROSS_MARK
190 * wx.ART_ERROR
191 * wx.ART_QUESTION
192 * wx.ART_WARNING
193 * wx.ART_INFORMATION
194 * wx.ART_MISSING_IMAGE
195
196
197Clients
198-------
199
200The Client is the entity that calls wx.ArtProvider's `GetBitmap` or
201`GetIcon` function. Client IDs serve as a hint to wx.ArtProvider
202that is supposed to help it to choose the best looking bitmap. For
203example it is often desirable to use slightly different icons in menus
204and toolbars even though they represent the same action (e.g.
205wx.ART_FILE_OPEN). Remember that this is really only a hint for
206wx.ArtProvider -- it is common that `wx.ArtProvider.GetBitmap` returns
207identical bitmap for different client values!
208
209 * wx.ART_TOOLBAR
210 * wx.ART_MENU
211 * wx.ART_FRAME_ICON
212 * wx.ART_CMN_DIALOG
213 * wx.ART_HELP_BROWSER
214 * wx.ART_MESSAGE_BOX
215 * wx.ART_BUTTON
216 * wx.ART_OTHER (used for all requests that don't fit into any
217 of the categories above)
218");
219
220MustHaveApp(wxPyArtProvider);
221MustHaveApp(wxPyArtProvider::GetBitmap);
222MustHaveApp(wxPyArtProvider::GetIcon);
223
224%rename(ArtProvider) wxPyArtProvider;
225class wxPyArtProvider /*: public wxObject*/
226{
227public:
228
229 %pythonAppend wxPyArtProvider "self._setCallbackInfo(self, ArtProvider)"
230 wxPyArtProvider();
231
232 void _setCallbackInfo(PyObject* self, PyObject* _class);
233
234 DocDeclStr(
235 static void , PushProvider(wxPyArtProvider *provider),
236 "Add new provider to the top of providers stack.", "");
237
238
239 DocDeclStr(
240 static bool , PopProvider(),
241 "Remove latest added provider and delete it.", "");
242
243
244 DocDeclStr(
245 static bool , RemoveProvider(wxPyArtProvider *provider),
246 "Remove provider. The provider must have been added previously! The
247provider is _not_ deleted.", "");
248
249
250 DocDeclStr(
251 static wxBitmap , GetBitmap(const wxString& id,
252 const wxString& client = wxPyART_OTHER,
253 const wxSize& size = wxDefaultSize),
254 "Query the providers for bitmap with given ID and return it. Return
255wx.NullBitmap if no provider provides it.", "");
256
257
258 DocDeclStr(
259 static wxIcon , GetIcon(const wxString& id,
260 const wxString& client = wxPyART_OTHER,
261 const wxSize& size = wxDefaultSize),
262 "Query the providers for icon with given ID and return it. Return
263wx.NullIcon if no provider provides it.", "");
264
265 DocDeclStr(
266 static wxSize , GetSizeHint(const wxString& client, bool platform_dependent = false),
267 "Get the size hint of an icon from a specific Art Client, queries the
268topmost provider if platform_dependent = false", "");
269
270
271
272 %extend { void Destroy() { delete self; }}
273};
274
275
276
277//---------------------------------------------------------------------------
278%init %{
279 wxPyPtrTypeMap_Add("wxArtProvider", "wxPyArtProvider");
280%}
281//---------------------------------------------------------------------------