]> git.saurik.com Git - wxWidgets.git/blame - wxPython/src/_artprov.i
Add flush() to PyOnDemandOutputWindow
[wxWidgets.git] / wxPython / src / _artprov.i
CommitLineData
d14a1e28
RD
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_OTHER);
34
35// Art IDs
36MAKE_CONST_WXSTRING(ART_ADD_BOOKMARK);
37MAKE_CONST_WXSTRING(ART_DEL_BOOKMARK);
38MAKE_CONST_WXSTRING(ART_HELP_SIDE_PANEL);
39MAKE_CONST_WXSTRING(ART_HELP_SETTINGS);
40MAKE_CONST_WXSTRING(ART_HELP_BOOK);
41MAKE_CONST_WXSTRING(ART_HELP_FOLDER);
42MAKE_CONST_WXSTRING(ART_HELP_PAGE);
43MAKE_CONST_WXSTRING(ART_GO_BACK);
44MAKE_CONST_WXSTRING(ART_GO_FORWARD);
45MAKE_CONST_WXSTRING(ART_GO_UP);
46MAKE_CONST_WXSTRING(ART_GO_DOWN);
47MAKE_CONST_WXSTRING(ART_GO_TO_PARENT);
48MAKE_CONST_WXSTRING(ART_GO_HOME);
49MAKE_CONST_WXSTRING(ART_FILE_OPEN);
50MAKE_CONST_WXSTRING(ART_PRINT);
51MAKE_CONST_WXSTRING(ART_HELP);
52MAKE_CONST_WXSTRING(ART_TIP);
53MAKE_CONST_WXSTRING(ART_REPORT_VIEW);
54MAKE_CONST_WXSTRING(ART_LIST_VIEW);
55MAKE_CONST_WXSTRING(ART_NEW_DIR);
56MAKE_CONST_WXSTRING(ART_FOLDER);
57MAKE_CONST_WXSTRING(ART_GO_DIR_UP);
58MAKE_CONST_WXSTRING(ART_EXECUTABLE_FILE);
59MAKE_CONST_WXSTRING(ART_NORMAL_FILE);
60MAKE_CONST_WXSTRING(ART_TICK_MARK);
61MAKE_CONST_WXSTRING(ART_CROSS_MARK);
62MAKE_CONST_WXSTRING(ART_ERROR);
63MAKE_CONST_WXSTRING(ART_QUESTION);
64MAKE_CONST_WXSTRING(ART_WARNING);
65MAKE_CONST_WXSTRING(ART_INFORMATION);
66MAKE_CONST_WXSTRING(ART_MISSING_IMAGE);
67
68//---------------------------------------------------------------------------
69
70%{ // Python aware wxArtProvider
71class wxPyArtProvider : public wxArtProvider {
72public:
73
74 virtual wxBitmap CreateBitmap(const wxArtID& id,
75 const wxArtClient& client,
76 const wxSize& size) {
77 wxBitmap rval = wxNullBitmap;
da32eb53 78 bool blocked = wxPyBeginBlockThreads();
d14a1e28
RD
79 if ((wxPyCBH_findCallback(m_myInst, "CreateBitmap"))) {
80 PyObject* so = wxPyConstructObject((void*)&size, wxT("wxSize"), 0);
81 PyObject* ro;
82 wxBitmap* ptr;
83 PyObject* s1, *s2;
84 s1 = wx2PyString(id);
85 s2 = wx2PyString(client);
86 ro = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("(OOO)", s1, s2, so));
87 Py_DECREF(so);
88 Py_DECREF(s1);
89 Py_DECREF(s2);
90 if (ro) {
91 if (wxPyConvertSwigPtr(ro, (void**)&ptr, wxT("wxBitmap")))
92 rval = *ptr;
93 Py_DECREF(ro);
94 }
95 }
da32eb53 96 wxPyEndBlockThreads(blocked);
d14a1e28
RD
97 return rval;
98 }
99
100 PYPRIVATE;
101};
102%}
103
104// The one for SWIG to see
dce2bd22
RD
105
106
107
108DocStr(wxPyArtProvider,
109"The wx.ArtProvider class is used to customize the look of wxWidgets
110application. When wxWidgets needs to display an icon or a bitmap (e.g.
111in the standard file dialog), it does not use hard-coded resource but
112asks wx.ArtProvider for it instead. This way the users can plug in
113their own wx.ArtProvider class and easily replace standard art with
114his/her own version. It is easy thing to do: all that is needed is
115to derive a class from wx.ArtProvider, override it's CreateBitmap
116method and register the provider with wx.ArtProvider.PushProvider::
117
118 class MyArtProvider(wx.ArtProvider):
119 def __init__(self):
120 wx.ArtProvider.__init__(self)
121
122 def CreateBitmap(self, artid, client, size):
123 ...
124 return bmp
d07d2bc9 125", "
dce2bd22
RD
126
127Identifying art resources
128-------------------------
129
130Every bitmap is known to wx.ArtProvider under an unique ID that is
131used when requesting a resource from it. The IDs can have one of these
132predefined values:
133
134 * wx.ART_ADD_BOOKMARK
135 * wx.ART_DEL_BOOKMARK
136 * wx.ART_HELP_SIDE_PANEL
137 * wx.ART_HELP_SETTINGS
138 * wx.ART_HELP_BOOK
139 * wx.ART_HELP_FOLDER
140 * wx.ART_HELP_PAGE
141 * wx.ART_GO_BACK
142 * wx.ART_GO_FORWARD
143 * wx.ART_GO_UP
144 * wx.ART_GO_DOWN
145 * wx.ART_GO_TO_PARENT
146 * wx.ART_GO_HOME
147 * wx.ART_FILE_OPEN
148 * wx.ART_PRINT
149 * wx.ART_HELP
150 * wx.ART_TIP
151 * wx.ART_REPORT_VIEW
152 * wx.ART_LIST_VIEW
153 * wx.ART_NEW_DIR
154 * wx.ART_FOLDER
155 * wx.ART_GO_DIR_UP
156 * wx.ART_EXECUTABLE_FILE
157 * wx.ART_NORMAL_FILE
158 * wx.ART_TICK_MARK
159 * wx.ART_CROSS_MARK
160 * wx.ART_ERROR
161 * wx.ART_QUESTION
162 * wx.ART_WARNING
163 * wx.ART_INFORMATION
164 * wx.ART_MISSING_IMAGE
165
166
167Clients
168-------
169
170The Client is the entity that calls wx.ArtProvider's `GetBitmap` or
171`GetIcon` function. Client IDs server as a hint to wx.ArtProvider
172that is supposed to help it to choose the best looking bitmap. For
173example it is often desirable to use slightly different icons in menus
174and toolbars even though they represent the same action (e.g.
175wx.ART_FILE_OPEN). Remember that this is really only a hint for
176wx.ArtProvider -- it is common that `wx.ArtProvider.GetBitmap` returns
177identical bitmap for different client values!
178
179 * wx.ART_TOOLBAR
180 * wx.ART_MENU
181 * wx.ART_FRAME_ICON
182 * wx.ART_CMN_DIALOG
183 * wx.ART_HELP_BROWSER
184 * wx.ART_MESSAGE_BOX
185 * wx.ART_OTHER (used for all requests that don't fit into any
186 of the categories above)
187");
188
ab1f7d2a
RD
189MustHaveApp(wxPyArtProvider);
190MustHaveApp(wxPyArtProvider::GetBitmap);
191MustHaveApp(wxPyArtProvider::GetIcon);
192
d14a1e28
RD
193%name(ArtProvider) class wxPyArtProvider /*: public wxObject*/
194{
195public:
196
2b9048c5 197 %pythonAppend wxPyArtProvider "self._setCallbackInfo(self, ArtProvider)"
d14a1e28 198 wxPyArtProvider();
d14a1e28
RD
199
200 void _setCallbackInfo(PyObject* self, PyObject* _class);
201
dce2bd22
RD
202 DocDeclStr(
203 static void , PushProvider(wxPyArtProvider *provider),
d07d2bc9 204 "Add new provider to the top of providers stack.", "");
dce2bd22 205
d14a1e28 206
dce2bd22
RD
207 DocDeclStr(
208 static bool , PopProvider(),
d07d2bc9 209 "Remove latest added provider and delete it.", "");
dce2bd22 210
d14a1e28 211
dce2bd22
RD
212 DocDeclStr(
213 static bool , RemoveProvider(wxPyArtProvider *provider),
214 "Remove provider. The provider must have been added previously! The
d07d2bc9 215provider is _not_ deleted.", "");
dce2bd22 216
d14a1e28 217
dce2bd22
RD
218 DocDeclStr(
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
d07d2bc9 223wx.NullBitmap if no provider provides it.", "");
dce2bd22 224
d14a1e28 225
dce2bd22
RD
226 DocDeclStr(
227 static wxIcon , GetIcon(const wxString& id,
d14a1e28 228 const wxString& client = wxPyART_OTHER,
dce2bd22
RD
229 const wxSize& size = wxDefaultSize),
230 "Query the providers for icon with given ID and return it. Return
d07d2bc9 231wx.NullIcon if no provider provides it.", "");
dce2bd22 232
d14a1e28 233
1e0c8722 234 %extend { void Destroy() { delete self; }}
d14a1e28
RD
235};
236
237
238
239//---------------------------------------------------------------------------
240%init %{
241 wxPyPtrTypeMap_Add("wxArtProvider", "wxPyArtProvider");
242%}
243//---------------------------------------------------------------------------