1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: SWIG interface stuff for wxArtProvider
7 // Created: 18-June-1999
9 // Copyright: (c) 2003 by Total Control Software
10 // Licence: wxWindows license
11 /////////////////////////////////////////////////////////////////////////////
16 //---------------------------------------------------------------------------
20 #include <wx/artprov.h>
23 //---------------------------------------------------------------------------
27 MAKE_CONST_WXSTRING(ART_TOOLBAR);
28 MAKE_CONST_WXSTRING(ART_MENU);
29 MAKE_CONST_WXSTRING(ART_FRAME_ICON);
30 MAKE_CONST_WXSTRING(ART_CMN_DIALOG);
31 MAKE_CONST_WXSTRING(ART_HELP_BROWSER);
32 MAKE_CONST_WXSTRING(ART_MESSAGE_BOX);
33 MAKE_CONST_WXSTRING(ART_OTHER);
36 MAKE_CONST_WXSTRING(ART_ADD_BOOKMARK);
37 MAKE_CONST_WXSTRING(ART_DEL_BOOKMARK);
38 MAKE_CONST_WXSTRING(ART_HELP_SIDE_PANEL);
39 MAKE_CONST_WXSTRING(ART_HELP_SETTINGS);
40 MAKE_CONST_WXSTRING(ART_HELP_BOOK);
41 MAKE_CONST_WXSTRING(ART_HELP_FOLDER);
42 MAKE_CONST_WXSTRING(ART_HELP_PAGE);
43 MAKE_CONST_WXSTRING(ART_GO_BACK);
44 MAKE_CONST_WXSTRING(ART_GO_FORWARD);
45 MAKE_CONST_WXSTRING(ART_GO_UP);
46 MAKE_CONST_WXSTRING(ART_GO_DOWN);
47 MAKE_CONST_WXSTRING(ART_GO_TO_PARENT);
48 MAKE_CONST_WXSTRING(ART_GO_HOME);
49 MAKE_CONST_WXSTRING(ART_FILE_OPEN);
50 MAKE_CONST_WXSTRING(ART_PRINT);
51 MAKE_CONST_WXSTRING(ART_HELP);
52 MAKE_CONST_WXSTRING(ART_TIP);
53 MAKE_CONST_WXSTRING(ART_REPORT_VIEW);
54 MAKE_CONST_WXSTRING(ART_LIST_VIEW);
55 MAKE_CONST_WXSTRING(ART_NEW_DIR);
56 MAKE_CONST_WXSTRING(ART_FOLDER);
57 MAKE_CONST_WXSTRING(ART_GO_DIR_UP);
58 MAKE_CONST_WXSTRING(ART_EXECUTABLE_FILE);
59 MAKE_CONST_WXSTRING(ART_NORMAL_FILE);
60 MAKE_CONST_WXSTRING(ART_TICK_MARK);
61 MAKE_CONST_WXSTRING(ART_CROSS_MARK);
62 MAKE_CONST_WXSTRING(ART_ERROR);
63 MAKE_CONST_WXSTRING(ART_QUESTION);
64 MAKE_CONST_WXSTRING(ART_WARNING);
65 MAKE_CONST_WXSTRING(ART_INFORMATION);
66 MAKE_CONST_WXSTRING(ART_MISSING_IMAGE);
68 //---------------------------------------------------------------------------
70 %{ // Python aware wxArtProvider
71 class wxPyArtProvider : public wxArtProvider {
74 virtual wxBitmap CreateBitmap(const wxArtID& id,
75 const wxArtClient& client,
77 wxBitmap rval = wxNullBitmap;
78 bool blocked = wxPyBeginBlockThreads();
79 if ((wxPyCBH_findCallback(m_myInst, "CreateBitmap"))) {
80 PyObject* so = wxPyConstructObject((void*)&size, wxT("wxSize"), 0);
85 s2 = wx2PyString(client);
86 ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(OOO)", s1, s2, so));
91 if (wxPyConvertSwigPtr(ro, (void**)&ptr, wxT("wxBitmap")))
96 wxPyEndBlockThreads(blocked);
104 // The one for SWIG to see
108 DocStr(wxPyArtProvider,
109 "The wx.ArtProvider class is used to customize the look of wxWidgets
110 application. When wxWidgets needs to display an icon or a bitmap (e.g.
111 in the standard file dialog), it does not use hard-coded resource but
112 asks wx.ArtProvider for it instead. This way the users can plug in
113 their own wx.ArtProvider class and easily replace standard art with
114 his/her own version. It is easy thing to do: all that is needed is
115 to derive a class from wx.ArtProvider, override it's CreateBitmap
116 method and register the provider with wx.ArtProvider.PushProvider::
118 class MyArtProvider(wx.ArtProvider):
120 wx.ArtProvider.__init__(self)
122 def CreateBitmap(self, artid, client, size):
127 Identifying art resources
128 -------------------------
130 Every bitmap is known to wx.ArtProvider under an unique ID that is
131 used when requesting a resource from it. The IDs can have one of these
134 * wx.ART_ADD_BOOKMARK
135 * wx.ART_DEL_BOOKMARK
136 * wx.ART_HELP_SIDE_PANEL
137 * wx.ART_HELP_SETTINGS
145 * wx.ART_GO_TO_PARENT
156 * wx.ART_EXECUTABLE_FILE
164 * wx.ART_MISSING_IMAGE
170 The Client is the entity that calls wx.ArtProvider's `GetBitmap` or
171 `GetIcon` function. Client IDs server as a hint to wx.ArtProvider
172 that is supposed to help it to choose the best looking bitmap. For
173 example it is often desirable to use slightly different icons in menus
174 and toolbars even though they represent the same action (e.g.
175 wx.ART_FILE_OPEN). Remember that this is really only a hint for
176 wx.ArtProvider -- it is common that `wx.ArtProvider.GetBitmap` returns
177 identical bitmap for different client values!
183 * wx.ART_HELP_BROWSER
185 * wx.ART_OTHER (used for all requests that don't fit into any
186 of the categories above)
189 MustHaveApp(wxPyArtProvider);
190 MustHaveApp(wxPyArtProvider::GetBitmap);
191 MustHaveApp(wxPyArtProvider::GetIcon);
193 %name(ArtProvider) class wxPyArtProvider /*: public wxObject*/
197 %pythonAppend wxPyArtProvider "self._setCallbackInfo(self, ArtProvider)"
200 void _setCallbackInfo(PyObject* self, PyObject* _class);
203 static void , PushProvider(wxPyArtProvider *provider),
204 "Add new provider to the top of providers stack.", "");
208 static bool , PopProvider(),
209 "Remove latest added provider and delete it.", "");
213 static bool , RemoveProvider(wxPyArtProvider *provider),
214 "Remove provider. The provider must have been added previously! The
215 provider is _not_ deleted.", "");
219 static wxBitmap , GetBitmap(const wxString& id,
220 const wxString& client = wxPyART_OTHER,
221 const wxSize& size = wxDefaultSize),
222 "Query the providers for bitmap with given ID and return it. Return
223 wx.NullBitmap if no provider provides it.", "");
227 static wxIcon , GetIcon(const wxString& id,
228 const wxString& client = wxPyART_OTHER,
229 const wxSize& size = wxDefaultSize),
230 "Query the providers for icon with given ID and return it. Return
231 wx.NullIcon if no provider provides it.", "");
234 %extend { void Destroy() { delete self; }}
239 //---------------------------------------------------------------------------
241 wxPyPtrTypeMap_Add("wxArtProvider", "wxPyArtProvider");
243 //---------------------------------------------------------------------------