]>
Commit | Line | Data |
---|---|---|
b7c75283 RD |
1 | # This file was created automatically by SWIG. |
2 | # Don't modify this file, modify the SWIG interface instead. | |
3 | ||
4 | import _activex | |
5 | ||
d55e5bfc RD |
6 | import _core |
7 | wx = _core | |
a95a7133 | 8 | __docfilter__ = wx.__docfilter__ |
b7c75283 RD |
9 | #--------------------------------------------------------------------------- |
10 | ||
11 | class CLSID(object): | |
12 | """ | |
13 | This class wraps the Windows CLSID structure and is used to | |
14 | specify the class of the ActiveX object that is to be created. A | |
15 | CLSID can be constructed from either a ProgID string, (such as | |
16 | 'WordPad.Document.1') or a classID string, (such as | |
17 | '{CA8A9783-280D-11CF-A24D-444553540000}'). | |
18 | """ | |
19 | def __repr__(self): | |
20 | return "<%s.%s; proxy of C++ CLSID instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,) | |
21 | def __init__(self, *args, **kwargs): | |
22 | """ | |
a95a7133 | 23 | __init__(self, String id) -> CLSID |
b7c75283 RD |
24 | |
25 | This class wraps the Windows CLSID structure and is used to | |
26 | specify the class of the ActiveX object that is to be created. A | |
27 | CLSID can be constructed from either a ProgID string, (such as | |
28 | 'WordPad.Document.1') or a classID string, (such as | |
29 | '{CA8A9783-280D-11CF-A24D-444553540000}'). | |
30 | """ | |
31 | newobj = _activex.new_CLSID(*args, **kwargs) | |
32 | self.this = newobj.this | |
33 | self.thisown = 1 | |
34 | del newobj.thisown | |
35 | def __del__(self, destroy=_activex.delete_CLSID): | |
a95a7133 | 36 | """__del__(self)""" |
b7c75283 RD |
37 | try: |
38 | if self.thisown: destroy(self) | |
39 | except: pass | |
40 | ||
41 | def GetCLSIDString(*args, **kwargs): | |
a95a7133 | 42 | """GetCLSIDString(self) -> String""" |
b7c75283 RD |
43 | return _activex.CLSID_GetCLSIDString(*args, **kwargs) |
44 | ||
45 | def GetProgIDString(*args, **kwargs): | |
a95a7133 | 46 | """GetProgIDString(self) -> String""" |
b7c75283 RD |
47 | return _activex.CLSID_GetProgIDString(*args, **kwargs) |
48 | ||
49 | def __str__(self): return self.GetCLSIDString() | |
50 | ||
51 | class CLSIDPtr(CLSID): | |
52 | def __init__(self, this): | |
53 | self.this = this | |
54 | if not hasattr(self,"thisown"): self.thisown = 0 | |
55 | self.__class__ = CLSID | |
56 | _activex.CLSID_swigregister(CLSIDPtr) | |
57 | ||
58 | #--------------------------------------------------------------------------- | |
59 | ||
60 | class ParamX(object): | |
61 | def __init__(self): raise RuntimeError, "No constructor defined" | |
62 | def __repr__(self): | |
63 | return "<%s.%s; proxy of C++ wxParamX instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,) | |
64 | flags = property(_activex.ParamX_flags_get) | |
65 | isPtr = property(_activex.ParamX_isPtr_get) | |
66 | isSafeArray = property(_activex.ParamX_isSafeArray_get) | |
67 | isOptional = property(_activex.ParamX_isOptional_get) | |
68 | vt = property(_activex.ParamX_vt_get) | |
69 | name = property(_activex.ParamX_name_get) | |
70 | vt_type = property(_activex.ParamX_vt_type_get) | |
71 | ||
72 | isIn = property(_activex.ParamX_IsIn) | |
73 | ||
74 | isOut = property(_activex.ParamX_IsOut) | |
75 | ||
76 | isRetVal = property(_activex.ParamX_IsRetVal) | |
77 | ||
78 | ||
79 | class ParamXPtr(ParamX): | |
80 | def __init__(self, this): | |
81 | self.this = this | |
82 | if not hasattr(self,"thisown"): self.thisown = 0 | |
83 | self.__class__ = ParamX | |
84 | _activex.ParamX_swigregister(ParamXPtr) | |
85 | ||
86 | class FuncX(object): | |
87 | def __init__(self): raise RuntimeError, "No constructor defined" | |
88 | def __repr__(self): | |
89 | return "<%s.%s; proxy of C++ wxFuncX instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,) | |
90 | name = property(_activex.FuncX_name_get) | |
91 | memid = property(_activex.FuncX_memid_get) | |
92 | hasOut = property(_activex.FuncX_hasOut_get) | |
93 | retType = property(_activex.FuncX_retType_get) | |
94 | params = property(_activex.FuncX_params_get) | |
95 | ||
96 | class FuncXPtr(FuncX): | |
97 | def __init__(self, this): | |
98 | self.this = this | |
99 | if not hasattr(self,"thisown"): self.thisown = 0 | |
100 | self.__class__ = FuncX | |
101 | _activex.FuncX_swigregister(FuncXPtr) | |
102 | ||
103 | class PropX(object): | |
104 | def __init__(self): raise RuntimeError, "No constructor defined" | |
105 | def __repr__(self): | |
106 | return "<%s.%s; proxy of C++ wxPropX instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,) | |
107 | name = property(_activex.PropX_name_get) | |
108 | memid = property(_activex.PropX_memid_get) | |
109 | type = property(_activex.PropX_type_get) | |
110 | arg = property(_activex.PropX_arg_get) | |
111 | putByRef = property(_activex.PropX_putByRef_get) | |
112 | canGet = property(_activex.PropX_CanGet) | |
113 | ||
114 | canSet = property(_activex.PropX_CanSet) | |
115 | ||
116 | ||
117 | class PropXPtr(PropX): | |
118 | def __init__(self, this): | |
119 | self.this = this | |
120 | if not hasattr(self,"thisown"): self.thisown = 0 | |
121 | self.__class__ = PropX | |
122 | _activex.PropX_swigregister(PropXPtr) | |
123 | ||
124 | class ParamXArray(object): | |
125 | def __init__(self): raise RuntimeError, "No constructor defined" | |
126 | def __repr__(self): | |
127 | return "<%s.%s; proxy of C++ wxParamXArray instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,) | |
128 | def __nonzero__(*args, **kwargs): | |
a95a7133 | 129 | """__nonzero__(self) -> bool""" |
b7c75283 RD |
130 | return _activex.ParamXArray___nonzero__(*args, **kwargs) |
131 | ||
132 | def __len__(*args, **kwargs): | |
a95a7133 | 133 | """__len__(self) -> int""" |
b7c75283 RD |
134 | return _activex.ParamXArray___len__(*args, **kwargs) |
135 | ||
136 | def __getitem__(*args, **kwargs): | |
a95a7133 | 137 | """__getitem__(self, int idx) -> ParamX""" |
b7c75283 RD |
138 | return _activex.ParamXArray___getitem__(*args, **kwargs) |
139 | ||
140 | ||
141 | class ParamXArrayPtr(ParamXArray): | |
142 | def __init__(self, this): | |
143 | self.this = this | |
144 | if not hasattr(self,"thisown"): self.thisown = 0 | |
145 | self.__class__ = ParamXArray | |
146 | _activex.ParamXArray_swigregister(ParamXArrayPtr) | |
147 | ||
148 | class FuncXArray(object): | |
149 | def __init__(self): raise RuntimeError, "No constructor defined" | |
150 | def __repr__(self): | |
151 | return "<%s.%s; proxy of C++ wxFuncXArray instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,) | |
152 | def __nonzero__(*args, **kwargs): | |
a95a7133 | 153 | """__nonzero__(self) -> bool""" |
b7c75283 RD |
154 | return _activex.FuncXArray___nonzero__(*args, **kwargs) |
155 | ||
156 | def __len__(*args, **kwargs): | |
a95a7133 | 157 | """__len__(self) -> int""" |
b7c75283 RD |
158 | return _activex.FuncXArray___len__(*args, **kwargs) |
159 | ||
160 | def __getitem__(*args, **kwargs): | |
a95a7133 | 161 | """__getitem__(self, int idx) -> FuncX""" |
b7c75283 RD |
162 | return _activex.FuncXArray___getitem__(*args, **kwargs) |
163 | ||
164 | ||
165 | class FuncXArrayPtr(FuncXArray): | |
166 | def __init__(self, this): | |
167 | self.this = this | |
168 | if not hasattr(self,"thisown"): self.thisown = 0 | |
169 | self.__class__ = FuncXArray | |
170 | _activex.FuncXArray_swigregister(FuncXArrayPtr) | |
171 | ||
172 | class PropXArray(object): | |
173 | def __init__(self): raise RuntimeError, "No constructor defined" | |
174 | def __repr__(self): | |
175 | return "<%s.%s; proxy of C++ wxPropXArray instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,) | |
176 | def __nonzero__(*args, **kwargs): | |
a95a7133 | 177 | """__nonzero__(self) -> bool""" |
b7c75283 RD |
178 | return _activex.PropXArray___nonzero__(*args, **kwargs) |
179 | ||
180 | def __len__(*args, **kwargs): | |
a95a7133 | 181 | """__len__(self) -> int""" |
b7c75283 RD |
182 | return _activex.PropXArray___len__(*args, **kwargs) |
183 | ||
184 | def __getitem__(*args, **kwargs): | |
a95a7133 | 185 | """__getitem__(self, int idx) -> PropX""" |
b7c75283 RD |
186 | return _activex.PropXArray___getitem__(*args, **kwargs) |
187 | ||
188 | ||
189 | class PropXArrayPtr(PropXArray): | |
190 | def __init__(self, this): | |
191 | self.this = this | |
192 | if not hasattr(self,"thisown"): self.thisown = 0 | |
193 | self.__class__ = PropXArray | |
194 | _activex.PropXArray_swigregister(PropXArrayPtr) | |
195 | ||
196 | #--------------------------------------------------------------------------- | |
197 | ||
d55e5bfc | 198 | class ActiveXWindow(_core.Window): |
b7c75283 RD |
199 | """ |
200 | ActiveXWindow derives from wxWindow and the constructor accepts a | |
201 | CLSID for the ActiveX Control that should be created. The | |
202 | ActiveXWindow class simply adds methods that allow you to query | |
203 | some of the TypeInfo exposed by the ActiveX object, and also to | |
204 | get/set properties or call methods by name. The Python | |
205 | implementation automatically handles converting parameters and | |
206 | return values to/from the types expected by the ActiveX code as | |
207 | specified by the TypeInfo. | |
208 | ||
209 | """ | |
210 | def __repr__(self): | |
211 | return "<%s.%s; proxy of C++ wxActiveXWindow instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,) | |
212 | def __init__(self, *args, **kwargs): | |
213 | """ | |
a95a7133 | 214 | __init__(self, Window parent, CLSID clsId, int id=-1, Point pos=DefaultPosition, |
b7c75283 RD |
215 | Size size=DefaultSize, long style=0, |
216 | String name=PanelNameStr) -> ActiveXWindow | |
217 | ||
218 | Creates an ActiveX control from the clsID given and makes it act | |
219 | as much like a regular wx.Window as possible. | |
220 | """ | |
221 | newobj = _activex.new_ActiveXWindow(*args, **kwargs) | |
222 | self.this = newobj.this | |
223 | self.thisown = 1 | |
224 | del newobj.thisown | |
225 | self._setOORInfo(self) | |
226 | ||
227 | def GetCLSID(*args, **kwargs): | |
228 | """ | |
a95a7133 | 229 | GetCLSID(self) -> CLSID |
b7c75283 RD |
230 | |
231 | Return the CLSID used to construct this ActiveX window | |
232 | """ | |
233 | return _activex.ActiveXWindow_GetCLSID(*args, **kwargs) | |
234 | ||
235 | def GetAXEventCount(*args, **kwargs): | |
236 | """ | |
a95a7133 | 237 | GetAXEventCount(self) -> int |
b7c75283 RD |
238 | |
239 | Number of events defined for this control | |
240 | """ | |
241 | return _activex.ActiveXWindow_GetAXEventCount(*args, **kwargs) | |
242 | ||
243 | def GetAXEventDesc(*args, **kwargs): | |
244 | """ | |
a95a7133 | 245 | GetAXEventDesc(self, int idx) -> FuncX |
b7c75283 RD |
246 | |
247 | Returns event description by index | |
248 | """ | |
249 | return _activex.ActiveXWindow_GetAXEventDesc(*args, **kwargs) | |
250 | ||
251 | def GetAXPropCount(*args, **kwargs): | |
252 | """ | |
a95a7133 | 253 | GetAXPropCount(self) -> int |
b7c75283 RD |
254 | |
255 | Number of properties defined for this control | |
256 | """ | |
257 | return _activex.ActiveXWindow_GetAXPropCount(*args, **kwargs) | |
258 | ||
259 | def GetAXPropDesc(*args): | |
260 | """ | |
a95a7133 RD |
261 | GetAXPropDesc(self, int idx) -> PropX |
262 | GetAXPropDesc(self, String name) -> PropX | |
b7c75283 RD |
263 | """ |
264 | return _activex.ActiveXWindow_GetAXPropDesc(*args) | |
265 | ||
266 | def GetAXMethodCount(*args, **kwargs): | |
267 | """ | |
a95a7133 | 268 | GetAXMethodCount(self) -> int |
b7c75283 RD |
269 | |
270 | Number of methods defined for this control | |
271 | """ | |
272 | return _activex.ActiveXWindow_GetAXMethodCount(*args, **kwargs) | |
273 | ||
274 | def GetAXMethodDesc(*args): | |
275 | """ | |
a95a7133 RD |
276 | GetAXMethodDesc(self, int idx) -> FuncX |
277 | GetAXMethodDesc(self, String name) -> FuncX | |
b7c75283 RD |
278 | """ |
279 | return _activex.ActiveXWindow_GetAXMethodDesc(*args) | |
280 | ||
281 | def GetAXEvents(*args, **kwargs): | |
282 | """ | |
a95a7133 | 283 | GetAXEvents(self) -> FuncXArray |
b7c75283 RD |
284 | |
285 | Returns a sequence of FuncX objects describing the events | |
286 | available for this ActiveX object. | |
287 | """ | |
288 | return _activex.ActiveXWindow_GetAXEvents(*args, **kwargs) | |
289 | ||
290 | def GetAXMethods(*args, **kwargs): | |
291 | """ | |
a95a7133 | 292 | GetAXMethods(self) -> FuncXArray |
b7c75283 RD |
293 | |
294 | Returns a sequence of FuncX objects describing the methods | |
295 | available for this ActiveX object. | |
296 | """ | |
297 | return _activex.ActiveXWindow_GetAXMethods(*args, **kwargs) | |
298 | ||
299 | def GetAXProperties(*args, **kwargs): | |
300 | """ | |
a95a7133 | 301 | GetAXProperties(self) -> PropXArray |
b7c75283 RD |
302 | |
303 | Returns a sequence of PropX objects describing the properties | |
304 | available for this ActiveX object. | |
305 | """ | |
306 | return _activex.ActiveXWindow_GetAXProperties(*args, **kwargs) | |
307 | ||
308 | def SetAXProp(*args, **kwargs): | |
309 | """ | |
a95a7133 | 310 | SetAXProp(self, String name, PyObject value) |
b7c75283 RD |
311 | |
312 | Set a property of the ActiveX object by name. | |
313 | """ | |
314 | return _activex.ActiveXWindow_SetAXProp(*args, **kwargs) | |
315 | ||
316 | def GetAXProp(*args, **kwargs): | |
317 | """ | |
a95a7133 | 318 | GetAXProp(self, String name) -> PyObject |
b7c75283 RD |
319 | |
320 | Get the value of an ActiveX property by name. | |
321 | """ | |
322 | return _activex.ActiveXWindow_GetAXProp(*args, **kwargs) | |
323 | ||
324 | def _CallAXMethod(*args): | |
325 | """ | |
a95a7133 | 326 | _CallAXMethod(self, String name, PyObject args) -> PyObject |
b7c75283 RD |
327 | |
328 | The implementation for CallMethod. Calls an ActiveX method, by | |
329 | name passing the parameters given in args. | |
330 | """ | |
331 | return _activex.ActiveXWindow__CallAXMethod(*args) | |
332 | ||
333 | def CallAXMethod(self, name, *args): | |
334 | """ | |
335 | Front-end for _CallMethod. Simply passes all positional args | |
336 | after the name as a single tuple to _CallMethod. | |
337 | """ | |
338 | return self._CallAXMethod(name, args) | |
339 | ||
340 | ||
341 | class ActiveXWindowPtr(ActiveXWindow): | |
342 | def __init__(self, this): | |
343 | self.this = this | |
344 | if not hasattr(self,"thisown"): self.thisown = 0 | |
345 | self.__class__ = ActiveXWindow | |
346 | _activex.ActiveXWindow_swigregister(ActiveXWindowPtr) | |
347 | ||
348 | #--------------------------------------------------------------------------- | |
349 | ||
350 | ||
351 | def RegisterActiveXEvent(*args, **kwargs): | |
352 | """ | |
353 | RegisterActiveXEvent(String eventName) -> wxEventType | |
354 | ||
355 | Creates a standard wx event ID for the given eventName. | |
356 | """ | |
357 | return _activex.RegisterActiveXEvent(*args, **kwargs) | |
d55e5bfc | 358 | class ActiveXEvent(_core.CommandEvent): |
b7c75283 RD |
359 | """ |
360 | An instance of ActiveXEvent is sent to the handler for all bound | |
361 | ActiveX events. Any event parameters from the ActiveX cntrol are | |
362 | turned into attributes of the Python proxy for this event object. | |
363 | Additionally, there is a property called eventName that will | |
364 | return (suprizingly <wink>) the name of the ActiveX event. | |
365 | """ | |
366 | def __init__(self): raise RuntimeError, "No constructor defined" | |
367 | def __repr__(self): | |
368 | return "<%s.%s; proxy of C++ wxActiveXEvent instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,) | |
369 | eventName = property(_activex.ActiveXEvent_EventName) | |
370 | ||
0dabb2a2 | 371 | def _preCallInit(*args, **kwargs): |
a95a7133 | 372 | """_preCallInit(self, PyObject pyself)""" |
0dabb2a2 | 373 | return _activex.ActiveXEvent__preCallInit(*args, **kwargs) |
b7c75283 | 374 | |
0dabb2a2 | 375 | def _postCallCleanup(*args, **kwargs): |
a95a7133 | 376 | """_postCallCleanup(self, PyObject pyself)""" |
0dabb2a2 | 377 | return _activex.ActiveXEvent__postCallCleanup(*args, **kwargs) |
b7c75283 RD |
378 | |
379 | ||
380 | class ActiveXEventPtr(ActiveXEvent): | |
381 | def __init__(self, this): | |
382 | self.this = this | |
383 | if not hasattr(self,"thisown"): self.thisown = 0 | |
384 | self.__class__ = ActiveXEvent | |
385 | _activex.ActiveXEvent_swigregister(ActiveXEventPtr) | |
386 | ||
387 | #--------------------------------------------------------------------------- | |
388 | ||
389 | class IEHtmlWindowBase(ActiveXWindow): | |
390 | def __repr__(self): | |
391 | return "<%s.%s; proxy of C++ wxIEHtmlWindowBase instance at %s>" % (self.__class__.__module__, self.__class__.__name__, self.this,) | |
392 | def __init__(self, *args, **kwargs): | |
393 | newobj = _activex.new_IEHtmlWindowBase(*args, **kwargs) | |
394 | self.this = newobj.this | |
395 | self.thisown = 1 | |
396 | del newobj.thisown | |
397 | def SetCharset(*args, **kwargs): return _activex.IEHtmlWindowBase_SetCharset(*args, **kwargs) | |
398 | def LoadString(*args, **kwargs): return _activex.IEHtmlWindowBase_LoadString(*args, **kwargs) | |
399 | def LoadStream(*args, **kwargs): return _activex.IEHtmlWindowBase_LoadStream(*args, **kwargs) | |
400 | def GetStringSelection(*args, **kwargs): return _activex.IEHtmlWindowBase_GetStringSelection(*args, **kwargs) | |
401 | def GetText(*args, **kwargs): return _activex.IEHtmlWindowBase_GetText(*args, **kwargs) | |
402 | ||
403 | class IEHtmlWindowBasePtr(IEHtmlWindowBase): | |
404 | def __init__(self, this): | |
405 | self.this = this | |
406 | if not hasattr(self,"thisown"): self.thisown = 0 | |
407 | self.__class__ = IEHtmlWindowBase | |
408 | _activex.IEHtmlWindowBase_swigregister(IEHtmlWindowBasePtr) | |
409 | ||
410 | #--------------------------------------------------------------------------- | |
411 | # Some helper and utility functions for ActiveX | |
412 | ||
413 | ||
414 | t4 = " " * 4 | |
415 | t8 = " " * 8 | |
416 | ||
417 | def GetAXInfo(ax): | |
418 | """ | |
419 | Returns a printable summary of the TypeInfo from the ActiveX instance | |
420 | passed in. | |
421 | """ | |
422 | ||
423 | def ProcessFuncX(f, out, name): | |
424 | out.append(name) | |
425 | out.append(t4 + "retType: %s" % f.retType.vt_type) | |
426 | if f.params: | |
427 | out.append(t4 + "params:") | |
428 | for p in f.params: | |
429 | out.append(t8 + p.name) | |
430 | out.append(t8+t4+ "in:%s out:%s optional:%s type:%s" % (p.isIn, p.isOut, p.isOptional, p.vt_type)) | |
431 | out.append('') | |
432 | ||
433 | def ProcessPropX(p, out): | |
434 | out.append(GernerateAXModule.trimPropName(p.name)) | |
435 | out.append(t4+ "type:%s arg:%s canGet:%s canSet:%s" % (p.type.vt_type, p.arg.vt_type, p.canGet, p.canSet)) | |
436 | out.append('') | |
437 | ||
438 | out = [] | |
439 | ||
440 | out.append("PROPERTIES") | |
441 | out.append("-"*20) | |
442 | for p in ax.GetAXProperties(): | |
443 | ProcessPropX(p, out) | |
444 | out.append('\n\n') | |
445 | ||
446 | out.append("METHODS") | |
447 | out.append("-"*20) | |
448 | for m in ax.GetAXMethods(): | |
449 | ProcessFuncX(m, out, GernerateAXModule.trimMethodName(m.name)) | |
450 | out.append('\n\n') | |
451 | ||
452 | out.append("EVENTS") | |
453 | out.append("-"*20) | |
454 | for e in ax.GetAXEvents(): | |
455 | ProcessFuncX(e, out, GernerateAXModule.trimEventName(e.name)) | |
456 | out.append('\n\n') | |
457 | ||
458 | return "\n".join(out) | |
459 | ||
460 | ||
461 | ||
462 | class GernerateAXModule: | |
463 | def __init__(self, ax, className, modulePath, moduleName=None, verbose=False): | |
464 | """ | |
465 | Make a Python module file with a class that has been specialized | |
466 | for the AcitveX object. | |
467 | ||
468 | ax An instance of the ActiveXWindow class | |
469 | className The name to use for the new class | |
470 | modulePath The path where the new module should be written to | |
471 | moduleName The name of the .py file to create. If not given | |
472 | then the className will be used. | |
473 | """ | |
474 | import os | |
475 | if moduleName is None: | |
476 | moduleName = className + '.py' | |
477 | filename = os.path.join(modulePath, moduleName) | |
478 | if verbose: | |
479 | print "Creating module in:", filename | |
480 | print " ProgID: ", ax.GetCLSID().GetProgIDString() | |
481 | print " CLSID: ", ax.GetCLSID().GetCLSIDString() | |
482 | ||
483 | self.mf = file(filename, "w") | |
484 | self.WriteFileHeader(ax) | |
485 | self.WriteEvents(ax) | |
486 | self.WriteClassHeader(ax, className) | |
487 | self.WriteMethods(ax) | |
488 | self.WriteProperties(ax) | |
489 | self.WriteDocs(ax) | |
490 | self.mf.close() | |
491 | del self.mf | |
492 | ||
493 | ||
494 | def WriteFileHeader(self, ax): | |
495 | self.write("# This module was generated by the wx.activex.GernerateAXModule class\n" | |
496 | "# (See also the genaxmodule script.)\n") | |
497 | self.write("import wx") | |
498 | self.write("import wx.activex\n") | |
499 | self.write("clsID = '%s'\nprogID = '%s'\n" | |
500 | % (ax.GetCLSID().GetCLSIDString(), ax.GetCLSID().GetProgIDString())) | |
501 | self.write("\n") | |
502 | ||
503 | ||
504 | def WriteEvents(self, ax): | |
505 | events = ax.GetAXEvents() | |
506 | if events: | |
507 | self.write("# Create eventTypes and event binders") | |
508 | for e in events: | |
509 | self.write("wxEVT_%s = wx.activex.RegisterActiveXEvent('%s')" | |
510 | % (self.trimEventName(e.name), e.name)) | |
511 | self.write() | |
512 | for e in events: | |
513 | n = self.trimEventName(e.name) | |
514 | self.write("EVT_%s = wx.PyEventBinder(wxEVT_%s, 1)" % (n,n)) | |
515 | self.write("\n") | |
516 | ||
517 | ||
518 | def WriteClassHeader(self, ax, className): | |
519 | self.write("# Derive a new class from ActiveXWindow") | |
520 | self.write("""\ | |
521 | class %s(wx.activex.ActiveXWindow): | |
522 | def __init__(self, parent, ID=-1, pos=wx.DefaultPosition, | |
523 | size=wx.DefaultSize, style=0, name='%s'): | |
524 | wx.activex.ActiveXWindow.__init__(self, parent, | |
525 | wx.activex.CLSID('%s'), | |
526 | ID, pos, size, style, name) | |
527 | """ % (className, className, ax.GetCLSID().GetCLSIDString()) ) | |
528 | ||
529 | ||
530 | def WriteMethods(self, ax): | |
531 | methods = ax.GetAXMethods() | |
532 | if methods: | |
533 | self.write(t4, "# Methods exported by the ActiveX object") | |
534 | for m in methods: | |
535 | name = self.trimMethodName(m.name) | |
536 | self.write(t4, "def %s(self%s):" % (name, self.getParameters(m, True))) | |
537 | self.write(t8, "return self.CallAXMethod('%s'%s)" % (m.name, self.getParameters(m, False))) | |
538 | self.write() | |
539 | ||
540 | ||
541 | def WriteProperties(self, ax): | |
542 | props = ax.GetAXProperties() | |
543 | if props: | |
544 | self.write(t4, "# Getters, Setters and properties") | |
545 | for p in props: | |
546 | getterName = setterName = "None" | |
547 | if p.canGet: | |
548 | getterName = "_get_" + p.name | |
549 | self.write(t4, "def %s(self):" % getterName) | |
550 | self.write(t8, "return self.GetAXProp('%s')" % p.name) | |
551 | if p.canSet: | |
552 | setterName = "_set_" + p.name | |
553 | self.write(t4, "def %s(self, %s):" % (setterName, p.arg.name)) | |
554 | self.write(t8, "self.SetAXProp('%s', %s)" % (p.name, p.arg.name)) | |
555 | ||
556 | self.write(t4, "%s = property(%s, %s)" % | |
557 | (self.trimPropName(p.name), getterName, setterName)) | |
558 | self.write() | |
559 | ||
560 | ||
561 | def WriteDocs(self, ax): | |
562 | self.write() | |
563 | doc = GetAXInfo(ax) | |
564 | for line in doc.split('\n'): | |
565 | self.write("# ", line) | |
566 | ||
567 | ||
568 | ||
569 | def write(self, *args): | |
570 | for a in args: | |
571 | self.mf.write(a) | |
572 | self.mf.write("\n") | |
573 | ||
574 | ||
575 | def trimEventName(name): | |
576 | if name.startswith("On"): | |
577 | name = name[2:] | |
578 | return name | |
579 | trimEventName = staticmethod(trimEventName) | |
580 | ||
581 | ||
582 | def trimPropName(name): | |
583 | #name = name[0].lower() + name[1:] | |
584 | name = name.lower() | |
585 | import keyword | |
586 | if name in keyword.kwlist: name += '_' | |
587 | return name | |
588 | trimPropName = staticmethod(trimPropName) | |
589 | ||
590 | ||
591 | def trimMethodName(name): | |
592 | import keyword | |
593 | if name in keyword.kwlist: name += '_' | |
594 | return name | |
595 | trimMethodName = staticmethod(trimMethodName) | |
596 | ||
597 | ||
598 | def getParameters(self, m, withDefaults): | |
599 | import keyword | |
600 | st = "" | |
601 | # collect the input parameters, if both isIn and isOut are | |
602 | # False then assume it is an input paramater | |
603 | params = [] | |
604 | for p in m.params: | |
605 | if p.isIn or (not p.isIn and not p.isOut): | |
606 | params.append(p) | |
607 | # did we get any? | |
608 | for p in params: | |
609 | name = p.name | |
610 | if name in keyword.kwlist: name += '_' | |
611 | st += ", " | |
612 | st += name | |
613 | if withDefaults and p.isOptional: | |
614 | st += '=None' | |
615 | return st | |
616 | ||
617 | ||
618 | #--------------------------------------------------------------------------- | |
619 | ||
620 |