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_FILE_SAVE);
52 MAKE_CONST_WXSTRING(ART_FILE_SAVE_AS);
53 MAKE_CONST_WXSTRING(ART_PRINT);
54 MAKE_CONST_WXSTRING(ART_HELP);
55 MAKE_CONST_WXSTRING(ART_TIP);
56 MAKE_CONST_WXSTRING(ART_REPORT_VIEW);
57 MAKE_CONST_WXSTRING(ART_LIST_VIEW);
58 MAKE_CONST_WXSTRING(ART_NEW_DIR);
59 MAKE_CONST_WXSTRING(ART_HARDDISK);
60 MAKE_CONST_WXSTRING(ART_FLOPPY);
61 MAKE_CONST_WXSTRING(ART_CDROM);
62 MAKE_CONST_WXSTRING(ART_REMOVABLE);
63 MAKE_CONST_WXSTRING(ART_FOLDER);
64 MAKE_CONST_WXSTRING(ART_FOLDER_OPEN);
65 MAKE_CONST_WXSTRING(ART_GO_DIR_UP);
66 MAKE_CONST_WXSTRING(ART_EXECUTABLE_FILE);
67 MAKE_CONST_WXSTRING(ART_NORMAL_FILE);
68 MAKE_CONST_WXSTRING(ART_TICK_MARK);
69 MAKE_CONST_WXSTRING(ART_CROSS_MARK);
70 MAKE_CONST_WXSTRING(ART_ERROR);
71 MAKE_CONST_WXSTRING(ART_QUESTION);
72 MAKE_CONST_WXSTRING(ART_WARNING);
73 MAKE_CONST_WXSTRING(ART_INFORMATION);
74 MAKE_CONST_WXSTRING(ART_MISSING_IMAGE);
75 MAKE_CONST_WXSTRING(ART_COPY);
76 MAKE_CONST_WXSTRING(ART_CUT);
77 MAKE_CONST_WXSTRING(ART_PASTE);
78 MAKE_CONST_WXSTRING(ART_DELETE);
79 MAKE_CONST_WXSTRING(ART_NEW);
80 MAKE_CONST_WXSTRING(ART_UNDO);
81 MAKE_CONST_WXSTRING(ART_REDO);
82 MAKE_CONST_WXSTRING(ART_QUIT);
83 MAKE_CONST_WXSTRING(ART_FIND);
84 MAKE_CONST_WXSTRING(ART_FIND_AND_REPLACE);
86 //---------------------------------------------------------------------------
88 %{ // Python aware wxArtProvider
89 class wxPyArtProvider : public wxArtProvider {
92 virtual wxBitmap CreateBitmap(const wxArtID& id,
93 const wxArtClient& client,
95 wxBitmap rval = wxNullBitmap;
96 wxPyBlock_t blocked = wxPyBeginBlockThreads();
97 if ((wxPyCBH_findCallback(m_myInst, "CreateBitmap"))) {
98 PyObject* so = wxPyConstructObject((void*)&size, wxT("wxSize"), 0);
102 s1 = wx2PyString(id);
103 s2 = wx2PyString(client);
104 ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(OOO)", s1, s2, so));
109 if (wxPyConvertSwigPtr(ro, (void**)&ptr, wxT("wxBitmap")))
114 wxPyEndBlockThreads(blocked);
122 // The one for SWIG to see
126 DocStr(wxPyArtProvider,
127 "The wx.ArtProvider class is used to customize the look of wxWidgets
128 application. When wxWidgets needs to display an icon or a bitmap (e.g.
129 in the standard file dialog), it does not use hard-coded resource but
130 asks wx.ArtProvider for it instead. This way the users can plug in
131 their own wx.ArtProvider class and easily replace standard art with
132 his/her own version. It is easy thing to do: all that is needed is
133 to derive a class from wx.ArtProvider, override it's CreateBitmap
134 method and register the provider with wx.ArtProvider.PushProvider::
136 class MyArtProvider(wx.ArtProvider):
138 wx.ArtProvider.__init__(self)
140 def CreateBitmap(self, artid, client, size):
145 Identifying art resources
146 -------------------------
148 Every bitmap is known to wx.ArtProvider under an unique ID that is
149 used when requesting a resource from it. The IDs can have one of the
150 following predefined values. Additionally, any string recognized by
151 custom art providers registered using `PushProvider` may be used.
156 When running under GTK+ 2, GTK+ stock item IDs (e.g. 'gtk-cdrom') may be used
157 as well. Additionally, if wxGTK was compiled against GTK+ >= 2.4, then it is
158 also possible to load icons from current icon theme by specifying their name
159 without the extension and directory components. Icon themes recognized by GTK+
160 follow the freedesktop.org Icon Themes specification. Note that themes are
161 not guaranteed to contain all icons, so wx.ArtProvider may return wx.NullBitmap
162 or wx.NullIcon. The default theme is typically installed in /usr/share/icons/hicolor.
164 * wx.ART_ADD_BOOKMARK
165 * wx.ART_DEL_BOOKMARK
166 * wx.ART_HELP_SIDE_PANEL
167 * wx.ART_HELP_SETTINGS
175 * wx.ART_GO_TO_PARENT
179 * wx.ART_FILE_SAVE_AS
193 * wx.ART_EXECUTABLE_FILE
201 * wx.ART_MISSING_IMAGE
211 * wx.ART_FIND_AND_REPLACE
217 The Client is the entity that calls wx.ArtProvider's `GetBitmap` or
218 `GetIcon` function. Client IDs serve as a hint to wx.ArtProvider
219 that is supposed to help it to choose the best looking bitmap. For
220 example it is often desirable to use slightly different icons in menus
221 and toolbars even though they represent the same action (e.g.
222 wx.ART_FILE_OPEN). Remember that this is really only a hint for
223 wx.ArtProvider -- it is common that `wx.ArtProvider.GetBitmap` returns
224 identical bitmap for different client values!
230 * wx.ART_HELP_BROWSER
233 * wx.ART_OTHER (used for all requests that don't fit into any
234 of the categories above)
237 MustHaveApp(wxPyArtProvider);
238 MustHaveApp(wxPyArtProvider::GetBitmap);
239 MustHaveApp(wxPyArtProvider::GetIcon);
241 %rename(ArtProvider) wxPyArtProvider;
242 class wxPyArtProvider /*: public wxObject*/
246 %pythonAppend wxPyArtProvider "self._setCallbackInfo(self, ArtProvider)"
250 void _setCallbackInfo(PyObject* self, PyObject* _class);
252 %disownarg( wxPyArtProvider *provider );
254 static void , PushProvider(wxPyArtProvider *provider),
255 "Add new provider to the top of providers stack.", "");
258 static void , InsertProvider(wxPyArtProvider *provider),
259 "Add new provider to the bottom of providers stack.", "");
260 %cleardisown( wxPyArtProvider *provider );
264 static bool , PopProvider(),
265 "Remove latest added provider and delete it.", "");
267 %pythonAppend RemoveProvider "args[1].thisown = 1";
269 static bool , RemoveProvider(wxPyArtProvider *provider),
270 "Remove provider. The provider must have been added previously! The
271 provider is _not_ deleted.", "");
275 static wxBitmap , GetBitmap(const wxString& id,
276 const wxString& client = wxPyART_OTHER,
277 const wxSize& size = wxDefaultSize),
278 "Query the providers for bitmap with given ID and return it. Return
279 wx.NullBitmap if no provider provides it.", "");
283 static wxIcon , GetIcon(const wxString& id,
284 const wxString& client = wxPyART_OTHER,
285 const wxSize& size = wxDefaultSize),
286 "Query the providers for icon with given ID and return it. Return
287 wx.NullIcon if no provider provides it.", "");
290 static wxSize , GetSizeHint(const wxString& client, bool platform_dependent = false),
291 "Get the size hint of an icon from a specific Art Client, queries the
292 topmost provider if platform_dependent = false", "");
296 %pythonAppend Destroy "args[0].thisown = 0"
297 %extend { void Destroy() { delete self; }}
302 //---------------------------------------------------------------------------
304 wxPyPtrTypeMap_Add("wxArtProvider", "wxPyArtProvider");
306 //---------------------------------------------------------------------------