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_BUTTON);
34 MAKE_CONST_WXSTRING(ART_OTHER);
37 MAKE_CONST_WXSTRING(ART_ADD_BOOKMARK);
38 MAKE_CONST_WXSTRING(ART_DEL_BOOKMARK);
39 MAKE_CONST_WXSTRING(ART_HELP_SIDE_PANEL);
40 MAKE_CONST_WXSTRING(ART_HELP_SETTINGS);
41 MAKE_CONST_WXSTRING(ART_HELP_BOOK);
42 MAKE_CONST_WXSTRING(ART_HELP_FOLDER);
43 MAKE_CONST_WXSTRING(ART_HELP_PAGE);
44 MAKE_CONST_WXSTRING(ART_GO_BACK);
45 MAKE_CONST_WXSTRING(ART_GO_FORWARD);
46 MAKE_CONST_WXSTRING(ART_GO_UP);
47 MAKE_CONST_WXSTRING(ART_GO_DOWN);
48 MAKE_CONST_WXSTRING(ART_GO_TO_PARENT);
49 MAKE_CONST_WXSTRING(ART_GO_HOME);
50 MAKE_CONST_WXSTRING(ART_FILE_OPEN);
51 MAKE_CONST_WXSTRING(ART_PRINT);
52 MAKE_CONST_WXSTRING(ART_HELP);
53 MAKE_CONST_WXSTRING(ART_TIP);
54 MAKE_CONST_WXSTRING(ART_REPORT_VIEW);
55 MAKE_CONST_WXSTRING(ART_LIST_VIEW);
56 MAKE_CONST_WXSTRING(ART_NEW_DIR);
57 MAKE_CONST_WXSTRING(ART_HARDDISK);
58 MAKE_CONST_WXSTRING(ART_FLOPPY);
59 MAKE_CONST_WXSTRING(ART_CDROM);
60 MAKE_CONST_WXSTRING(ART_REMOVABLE);
61 MAKE_CONST_WXSTRING(ART_FOLDER);
62 MAKE_CONST_WXSTRING(ART_FOLDER_OPEN);
63 MAKE_CONST_WXSTRING(ART_GO_DIR_UP);
64 MAKE_CONST_WXSTRING(ART_EXECUTABLE_FILE);
65 MAKE_CONST_WXSTRING(ART_NORMAL_FILE);
66 MAKE_CONST_WXSTRING(ART_TICK_MARK);
67 MAKE_CONST_WXSTRING(ART_CROSS_MARK);
68 MAKE_CONST_WXSTRING(ART_ERROR);
69 MAKE_CONST_WXSTRING(ART_QUESTION);
70 MAKE_CONST_WXSTRING(ART_WARNING);
71 MAKE_CONST_WXSTRING(ART_INFORMATION);
72 MAKE_CONST_WXSTRING(ART_MISSING_IMAGE);
74 //---------------------------------------------------------------------------
76 %{ // Python aware wxArtProvider
77 class wxPyArtProvider : public wxArtProvider {
80 virtual wxBitmap CreateBitmap(const wxArtID& id,
81 const wxArtClient& client,
83 wxBitmap rval = wxNullBitmap;
84 bool blocked = wxPyBeginBlockThreads();
85 if ((wxPyCBH_findCallback(m_myInst, "CreateBitmap"))) {
86 PyObject* so = wxPyConstructObject((void*)&size, wxT("wxSize"), 0);
91 s2 = wx2PyString(client);
92 ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(OOO)", s1, s2, so));
97 if (wxPyConvertSwigPtr(ro, (void**)&ptr, wxT("wxBitmap")))
102 wxPyEndBlockThreads(blocked);
110 // The one for SWIG to see
114 DocStr(wxPyArtProvider,
115 "The wx.ArtProvider class is used to customize the look of wxWidgets
116 application. When wxWidgets needs to display an icon or a bitmap (e.g.
117 in the standard file dialog), it does not use hard-coded resource but
118 asks wx.ArtProvider for it instead. This way the users can plug in
119 their own wx.ArtProvider class and easily replace standard art with
120 his/her own version. It is easy thing to do: all that is needed is
121 to derive a class from wx.ArtProvider, override it's CreateBitmap
122 method and register the provider with wx.ArtProvider.PushProvider::
124 class MyArtProvider(wx.ArtProvider):
126 wx.ArtProvider.__init__(self)
128 def CreateBitmap(self, artid, client, size):
133 Identifying art resources
134 -------------------------
136 Every bitmap is known to wx.ArtProvider under an unique ID that is
137 used when requesting a resource from it. The IDs can have one of the
138 following predefined values. Additionally, any string recognized by
139 custom art providers registered using `PushProvider` may be used.
144 When running under GTK+ 2, GTK+ stock item IDs (e.g. 'gtk-cdrom') may be used
145 as well. Additionally, if wxGTK was compiled against GTK+ >= 2.4, then it is
146 also possible to load icons from current icon theme by specifying their name
147 without the extension and directory components. Icon themes recognized by GTK+
148 follow the freedesktop.org Icon Themes specification. Note that themes are
149 not guaranteed to contain all icons, so wx.ArtProvider may return wx.NullBitmap
150 or wx.NullIcon. The default theme is typically installed in /usr/share/icons/hicolor.
153 * wx.ART_ADD_BOOKMARK
154 * wx.ART_DEL_BOOKMARK
155 * wx.ART_HELP_SIDE_PANEL
156 * wx.ART_HELP_SETTINGS
164 * wx.ART_GO_TO_PARENT
175 * wx.ART_EXECUTABLE_FILE
183 * wx.ART_MISSING_IMAGE
189 The Client is the entity that calls wx.ArtProvider's `GetBitmap` or
190 `GetIcon` function. Client IDs serve as a hint to wx.ArtProvider
191 that is supposed to help it to choose the best looking bitmap. For
192 example it is often desirable to use slightly different icons in menus
193 and toolbars even though they represent the same action (e.g.
194 wx.ART_FILE_OPEN). Remember that this is really only a hint for
195 wx.ArtProvider -- it is common that `wx.ArtProvider.GetBitmap` returns
196 identical bitmap for different client values!
202 * wx.ART_HELP_BROWSER
205 * wx.ART_OTHER (used for all requests that don't fit into any
206 of the categories above)
209 MustHaveApp(wxPyArtProvider);
210 MustHaveApp(wxPyArtProvider::GetBitmap);
211 MustHaveApp(wxPyArtProvider::GetIcon);
213 %rename(ArtProvider) wxPyArtProvider;
214 class wxPyArtProvider /*: public wxObject*/
218 %pythonAppend wxPyArtProvider "self._setCallbackInfo(self, ArtProvider)"
221 void _setCallbackInfo(PyObject* self, PyObject* _class);
224 static void , PushProvider(wxPyArtProvider *provider),
225 "Add new provider to the top of providers stack.", "");
229 static bool , PopProvider(),
230 "Remove latest added provider and delete it.", "");
234 static bool , RemoveProvider(wxPyArtProvider *provider),
235 "Remove provider. The provider must have been added previously! The
236 provider is _not_ deleted.", "");
240 static wxBitmap , GetBitmap(const wxString& id,
241 const wxString& client = wxPyART_OTHER,
242 const wxSize& size = wxDefaultSize),
243 "Query the providers for bitmap with given ID and return it. Return
244 wx.NullBitmap if no provider provides it.", "");
248 static wxIcon , GetIcon(const wxString& id,
249 const wxString& client = wxPyART_OTHER,
250 const wxSize& size = wxDefaultSize),
251 "Query the providers for icon with given ID and return it. Return
252 wx.NullIcon if no provider provides it.", "");
255 %extend { void Destroy() { delete self; }}
260 //---------------------------------------------------------------------------
262 wxPyPtrTypeMap_Add("wxArtProvider", "wxPyArtProvider");
264 //---------------------------------------------------------------------------