diff --git a/wxPython/contrib/activex/wxie/doxydoc/annotated.html b/wxPython/contrib/activex/wxie/doxydoc/annotated.html deleted file mode 100644 index b479a7c944..0000000000 --- a/wxPython/contrib/activex/wxie/doxydoc/annotated.html +++ /dev/null @@ -1,22 +0,0 @@ - -
-NS_wxActiveX::less_wxStringI | STL utilty class |
wxActiveX | Main class for embedding a ActiveX control |
wxActiveX::FuncX | Type & Parameter info for Events and Methods |
wxActiveX::ParamX | General parameter and return type infoformation for Events, Properties and Methods |
wxActiveX::PropX | Type info for properties |
wxAutoOleInterface< I > | Template class for smart interface handling |
|
| wxActiveX::FuncX | wxActiveX::PropX | ||
less_wxStringI (NS_wxActiveX) | wxActiveX | wxActiveX::ParamX | wxAutoOleInterface |
#include <wxactivex.h>
--
-Use by itself or derive from it
new wxActiveX(parent, CLSID_WebBrowser, id, pos, size, style, name) -
new wxActiveX(parent, "ShockwaveFlash.ShockwaveFlash", id, pos, size, style, name) -
SetProp()
and set/retrieved using Prop()
SetProp(name, wxVariant(x)) -
wxString Prop("<name>") = x -
wxString result = Prop("<name>") -
flash_ctl.Prop("movie") = "file:///movies/test.swf"; -
flash_ctl.Prop("Playing") = false; -
wxString current_movie = flash_ctl.Prop("movie");
-
CallMethod()
wxVariant result = CallMethod("<name>", args, nargs = -1) -
wxVariant args[] = {0L, "file:///e:/dev/wxie/bug-zap.swf"}; - wxVariant result = X->CallMethod("LoadMovie", args); -
EVT_ACTIVEX(controlId, eventName, handler)
& EVT_ACTIVEX_DISPID(controlId, eventDispId, handler)
macros - BEGIN_EVENT_TABLE(wxIEFrame, wxFrame) - EVT_ACTIVEX_DISPID(ID_MSHTML, DISPID_STATUSTEXTCHANGE, OnMSHTMLStatusTextChangeX) - EVT_ACTIVEX(ID_MSHTML, "BeforeNavigate2", OnMSHTMLBeforeNavigate2X) - EVT_ACTIVEX(ID_MSHTML, "TitleChange", OnMSHTMLTitleChangeX) - EVT_ACTIVEX(ID_MSHTML, "NewWindow2", OnMSHTMLNewWindow2X) - EVT_ACTIVEX(ID_MSHTML, "ProgressChange", OnMSHTMLProgressChangeX) - END_EVENT_TABLE() -
- -
-Definition at line 329 of file wxactivex.h.
Public Member Functions | |
- | wxActiveX (wxWindow *parent, REFCLSID clsid, wxWindowID id=-1, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=0, const wxString &name=wxPanelNameStr) |
Create using clsid. | |
- | wxActiveX (wxWindow *parent, wxString progId, wxWindowID id=-1, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=0, const wxString &name=wxPanelNameStr) |
create using progid. | |
-int | GetEventCount () const |
Number of events defined for this control. | |
const FuncX & | GetEventDesc (int idx) const |
returns event description by index. | |
-int | GetPropCount () const |
Number of properties defined for this control. | |
const PropX & | GetPropDesc (int idx) const |
returns property description by index. | |
const PropX & | GetPropDesc (wxString name) const |
returns property description by name. | |
-int | GetMethodCount () const |
Number of methods defined for this control. | |
const FuncX & | GetMethodDesc (int idx) const |
returns method description by name. | |
const FuncX & | GetMethodDesc (wxString name) const |
returns method description by name. | |
-void | SetProp (MEMBERID name, VARIANTARG &value) |
Set property VARIANTARG value by MEMBERID. | |
-void | SetProp (const wxString &name, const wxVariant &value) |
Set property using wxVariant by name. | |
wxPropertySetter | Prop (wxString name) |
Generic Get/Set Property by name. Automatically handles most types. | |
wxVariant | CallMethod (wxString name, wxVariant args[], int nargs=-1) |
Call a method of the ActiveX control. Automatically handles most types. | |
Related Functions | |
(Note that these are not member functions.) | |
bool | MSWVariantToVariant (VARIANTARG &va, wxVariant &vx) |
Convert MSW VARIANTARG to wxVariant. Handles basic types, need to add:
| |
bool | VariantToMSWVariant (const wxVariant &vx, VARIANTARG &va) |
Convert wxVariant to MSW VARIANTARG. Handles basic types, need to add:
|
-
-
|
-
- - | -
-
- -returns event description by index. - -throws exception for invalid index |
-
-
-
|
-
- - | -
-
- -returns property description by index. - -throws exception for invalid index |
-
-
-
|
-
- - | -
-
- -returns property description by name. - -throws exception for invalid name |
-
-
-
|
-
- - | -
-
- -returns method description by name. - -throws exception for invalid index |
-
-
-
|
-
- - | -
-
- -returns method description by name. - -throws exception for invalid name |
-
-
-
|
-
- - | -
-
- -Generic Get/Set Property by name. Automatically handles most types. - -
-
-Definition at line 458 of file wxactivex.h. |
-
-
-
|
-
- - | -
-
- -Call a method of the ActiveX control. Automatically handles most types. - -
-
|
-
-
-
|
-
- - | -
-
- -Convert MSW VARIANTARG to wxVariant. Handles basic types, need to add:
-
|
-
-
-
|
-
- - | -
-
- -Convert wxVariant to MSW VARIANTARG. Handles basic types, need to add:
-
|
-
#include <wxactivex.h>
--
-refer to FUNCDESC in MSDN -
- -
-Definition at line 350 of file wxactivex.h.
#include <wxactivex.h>
--
-refer to ELEMDESC, IDLDESC in MSDN -
- -
-Definition at line 333 of file wxactivex.h.
#include <wxactivex.h>
--
- -
-Definition at line 362 of file wxactivex.h.
#include <wxactivex.h>
--
-
- -
-Definition at line 45 of file wxactivex.h.
Public Member Functions | |
- | wxAutoOleInterface (I *pInterface=NULL) |
takes ownership of an existing interface Assumed to already have a AddRef() applied | |
- | wxAutoOleInterface (REFIID riid, IUnknown *pUnk) |
queries for an interface | |
- | wxAutoOleInterface (REFIID riid, IDispatch *pDispatch) |
queries for an interface | |
- | wxAutoOleInterface (REFCLSID clsid, REFIID riid) |
Creates an Interface. | |
- | wxAutoOleInterface (const wxAutoOleInterface< I > &ti) |
copy constructor | |
-wxAutoOleInterface< I > & | operator= (const wxAutoOleInterface< I > &ti) |
assignment operator | |
-wxAutoOleInterface< I > & | operator= (I *&ti) |
takes ownership of an existing interface Assumed to already have a AddRef() applied | |
- | ~wxAutoOleInterface () |
invokes Free() | |
-void | Free () |
Releases interface (i.e decrements refCount). | |
-HRESULT | QueryInterface (REFIID riid, IUnknown *pUnk) |
queries for an interface | |
-HRESULT | CreateInstance (REFCLSID clsid, REFIID riid) |
Create a Interface instance. | |
- | operator I * () const |
returns the interface pointer | |
-I * | operator-> () |
returns the dereferenced interface pointer | |
-I ** | GetRef () |
returns a pointer to the interface pointer | |
-bool | Ok () const |
returns true if we have a valid interface pointer |
iehtmlwin.h [code] | Implements wxIEHtmlWin window class |
wxactivex.h [code] | Implements wxActiveX window class and OLE tools |
00001 -00004 #ifndef _IEHTMLWIN_H_ -00005 #define _IEHTMLWIN_H_ -00006 #pragma warning( disable : 4101 4786) -00007 #pragma warning( disable : 4786) -00008 -00009 -00010 #include <wx/setup.h> -00011 #include <wx/wx.h> -00012 #include <exdisp.h> -00013 #include <iostream> -00014 using namespace std; -00015 -00016 #include "wxactivex.h" -00017 -00018 -00019 enum wxIEHtmlRefreshLevel -00020 { -00021 wxIEHTML_REFRESH_NORMAL = 0, -00022 wxIEHTML_REFRESH_IFEXPIRED = 1, -00023 wxIEHTML_REFRESH_CONTINUE = 2, -00024 wxIEHTML_REFRESH_COMPLETELY = 3 -00025 }; -00026 -00027 class IStreamAdaptorBase; -00028 -00029 class wxIEHtmlWin : public wxActiveX -00030 { -00031 public: -00032 wxIEHtmlWin(wxWindow * parent, wxWindowID id = -1, -00033 const wxPoint& pos = wxDefaultPosition, -00034 const wxSize& size = wxDefaultSize, -00035 long style = 0, -00036 const wxString& name = wxPanelNameStr); -00037 virtual ~wxIEHtmlWin(); -00038 -00039 void LoadUrl(const wxString&); -00040 bool LoadString(wxString html); -00041 bool LoadStream(istream *strm); -00042 bool LoadStream(wxInputStream *is); -00043 -00044 void SetCharset(wxString charset); -00045 void SetEditMode(bool seton); -00046 bool GetEditMode(); -00047 wxString GetStringSelection(bool asHTML = false); -00048 wxString GetText(bool asHTML = false); -00049 -00050 bool GoBack(); -00051 bool GoForward(); -00052 bool GoHome(); -00053 bool GoSearch(); -00054 bool Refresh(wxIEHtmlRefreshLevel level); -00055 bool Stop(); -00056 -00057 DECLARE_EVENT_TABLE(); -00058 -00059 protected: -00060 void SetupBrowser(); -00061 bool LoadStream(IStreamAdaptorBase *pstrm); -00062 -00063 wxAutoOleInterface<IWebBrowser2> m_webBrowser; -00064 }; -00065 -00066 #endif /* _IEHTMLWIN_H_ */ -
- -
-Definition in file iehtmlwin.h. -
-#include <wx/setup.h>
-#include <wx/wx.h>
-#include <exdisp.h>
-#include <iostream>
-#include "wxactivex.h"
-
-
-Go to the source code of this file.
-
- -
-
Data Structures | |
struct | less_wxStringI |
STL utilty class. More... |
NS_wxActiveX | WxActiveX Namespace for stuff I want to keep out of other tools way |
#include <wxactivex.h>
--
-specific to wxActiveX, for creating case insenstive maps etc -
- -
-Definition at line 29 of file wxactivex.h.
00001 -00005 #ifndef WX_ACTIVE_X -00006 #define WX_ACTIVE_X -00007 #pragma warning( disable : 4101 4786) -00008 #pragma warning( disable : 4786) -00009 -00010 -00011 #include <wx/setup.h> -00012 #include <wx/wx.h> -00013 #include <wx/variant.h> -00014 #include <wx/datetime.h> -00015 #include <oleidl.h> -00016 #include <exdisp.h> -00017 #include <docobj.h> -00018 #include <iostream> -00019 #include <vector> -00020 #include <map> -00021 using namespace std; -00022 -00024 namespace NS_wxActiveX -00025 { -00029 struct less_wxStringI -00030 { -00031 bool operator()(const wxString& x, const wxString& y) const -00032 { -00033 return x.CmpNoCase(y) < 0; -00034 }; -00035 }; -00036 }; -00037 -00038 -00045 template <class I> class wxAutoOleInterface -00046 { -00047 protected: -00048 I *m_interface; -00049 -00050 public: -00053 explicit wxAutoOleInterface(I *pInterface = NULL) : m_interface(pInterface) {} -00054 -00056 wxAutoOleInterface(REFIID riid, IUnknown *pUnk) : m_interface(NULL) -00057 { -00058 QueryInterface(riid, pUnk); -00059 }; -00061 wxAutoOleInterface(REFIID riid, IDispatch *pDispatch) : m_interface(NULL) -00062 { -00063 QueryInterface(riid, pDispatch); -00064 }; -00065 -00067 wxAutoOleInterface(REFCLSID clsid, REFIID riid) : m_interface(NULL) -00068 { -00069 CreateInstance(clsid, riid); -00070 }; -00071 -00073 wxAutoOleInterface(const wxAutoOleInterface<I>& ti) : m_interface(NULL) -00074 { -00075 operator = (ti); -00076 } -00077 -00079 wxAutoOleInterface<I>& operator = (const wxAutoOleInterface<I>& ti) -00080 { -00081 if (ti.m_interface) -00082 ti.m_interface->AddRef(); -00083 Free(); -00084 m_interface = ti.m_interface; -00085 return *this; -00086 } -00087 -00090 wxAutoOleInterface<I>& operator = (I *&ti) -00091 { -00092 Free(); -00093 m_interface = ti; -00094 return *this; -00095 } -00096 -00098 ~wxAutoOleInterface() -00099 { -00100 Free(); -00101 }; -00102 -00103 -00105 inline void Free() -00106 { -00107 if (m_interface) -00108 m_interface->Release(); -00109 m_interface = NULL; -00110 }; -00111 -00113 HRESULT QueryInterface(REFIID riid, IUnknown *pUnk) -00114 { -00115 Free(); -00116 wxASSERT(pUnk != NULL); -00117 return pUnk->QueryInterface(riid, (void **) &m_interface); -00118 }; -00119 -00121 HRESULT CreateInstance(REFCLSID clsid, REFIID riid) -00122 { -00123 Free(); -00124 return CoCreateInstance(clsid, NULL, CLSCTX_ALL, riid, (void **) &m_interface); -00125 }; -00126 -00127 -00129 inline operator I *() const {return m_interface;} -00130 -00132 inline I* operator ->() {return m_interface;} -00134 inline I** GetRef() {return &m_interface;} -00136 inline bool Ok() const {return m_interface != NULL;} -00137 }; -00138 -00139 -00142 wxString OLEHResultToString(HRESULT hr); -00145 wxString GetIIDName(REFIID riid); -00146 -00147 //#define __WXOLEDEBUG -00148 -00149 -00150 #ifdef __WXOLEDEBUG -00151 #define WXOLE_TRACE(str) {OutputDebugString(str);OutputDebugString("\r\n");} -00152 #define WXOLE_TRACEOUT(stuff)\ -00153 {\ -00154 wxString os;\ -00155 os << stuff << "\r\n";\ -00156 WXOLE_TRACE(os.mb_str());\ -00157 } -00158 -00159 #define WXOLE_WARN(__hr,msg)\ -00160 {\ -00161 if (__hr != S_OK)\ -00162 {\ -00163 wxString s = "*** ";\ -00164 s += msg;\ -00165 s += " : "+ OLEHResultToString(__hr);\ -00166 WXOLE_TRACE(s.c_str());\ -00167 }\ -00168 } -00169 #else -00170 #define WXOLE_TRACE(str) -00171 #define WXOLE_TRACEOUT(stuff) -00172 #define WXOLE_WARN(_proc,msg) {_proc;} -00173 #endif -00174 -00175 class wxOleInit -00176 { -00177 public: -00178 static IMalloc *GetIMalloc(); -00179 -00180 wxOleInit(); -00181 ~wxOleInit(); -00182 }; -00183 -00184 #define DECLARE_OLE_UNKNOWN(cls)\ -00185 private:\ -00186 class TAutoInitInt\ -00187 {\ -00188 public:\ -00189 LONG l;\ -00190 TAutoInitInt() : l(0) {}\ -00191 };\ -00192 TAutoInitInt refCount, lockCount;\ -00193 wxOleInit oleInit;\ -00194 static void _GetInterface(cls *self, REFIID iid, void **_interface, const char *&desc);\ -00195 public:\ -00196 LONG GetRefCount();\ -00197 HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, void ** ppvObject);\ -00198 ULONG STDMETHODCALLTYPE AddRef();\ -00199 ULONG STDMETHODCALLTYPE Release();\ -00200 ULONG STDMETHODCALLTYPE AddLock();\ -00201 ULONG STDMETHODCALLTYPE ReleaseLock() -00202 -00203 #define DEFINE_OLE_TABLE(cls)\ -00204 LONG cls::GetRefCount() {return refCount.l;}\ -00205 HRESULT STDMETHODCALLTYPE cls::QueryInterface(REFIID iid, void ** ppvObject)\ -00206 {\ -00207 if (! ppvObject)\ -00208 {\ -00209 WXOLE_TRACE("*** NULL POINTER ***");\ -00210 return E_FAIL;\ -00211 };\ -00212 const char *desc = NULL;\ -00213 cls::_GetInterface(this, iid, ppvObject, desc);\ -00214 if (! *ppvObject)\ -00215 {\ -00216 WXOLE_TRACEOUT("<" << GetIIDName(iid).c_str() << "> Not Found");\ -00217 return E_NOINTERFACE;\ -00218 };\ -00219 WXOLE_TRACEOUT("QI : <" << desc <<">");\ -00220 ((IUnknown * )(*ppvObject))->AddRef();\ -00221 return S_OK;\ -00222 };\ -00223 ULONG STDMETHODCALLTYPE cls::AddRef()\ -00224 {\ -00225 WXOLE_TRACEOUT(# cls << "::Add ref(" << refCount.l << ")");\ -00226 InterlockedIncrement(&refCount.l);\ -00227 return refCount.l;\ -00228 };\ -00229 ULONG STDMETHODCALLTYPE cls::Release()\ -00230 {\ -00231 if (refCount.l > 0)\ -00232 {\ -00233 InterlockedDecrement(&refCount.l);\ -00234 WXOLE_TRACEOUT(# cls << "::Del ref(" << refCount.l << ")");\ -00235 if (refCount.l == 0)\ -00236 {\ -00237 delete this;\ -00238 return 0;\ -00239 };\ -00240 return refCount.l;\ -00241 }\ -00242 else\ -00243 return 0;\ -00244 }\ -00245 ULONG STDMETHODCALLTYPE cls::AddLock()\ -00246 {\ -00247 WXOLE_TRACEOUT(# cls << "::Add Lock(" << lockCount.l << ")");\ -00248 InterlockedIncrement(&lockCount.l);\ -00249 return lockCount.l;\ -00250 };\ -00251 ULONG STDMETHODCALLTYPE cls::ReleaseLock()\ -00252 {\ -00253 if (lockCount.l > 0)\ -00254 {\ -00255 InterlockedDecrement(&lockCount.l);\ -00256 WXOLE_TRACEOUT(# cls << "::Del Lock(" << lockCount.l << ")");\ -00257 return lockCount.l;\ -00258 }\ -00259 else\ -00260 return 0;\ -00261 }\ -00262 DEFINE_OLE_BASE(cls) -00263 -00264 #define DEFINE_OLE_BASE(cls)\ -00265 void cls::_GetInterface(cls *self, REFIID iid, void **_interface, const char *&desc)\ -00266 {\ -00267 *_interface = NULL;\ -00268 desc = NULL; -00269 -00270 #define OLE_INTERFACE(_iid, _type)\ -00271 if (IsEqualIID(iid, _iid))\ -00272 {\ -00273 WXOLE_TRACE("Found Interface <" # _type ">");\ -00274 *_interface = (IUnknown *) (_type *) self;\ -00275 desc = # _iid;\ -00276 return;\ -00277 } -00278 -00279 #define OLE_IINTERFACE(_face) OLE_INTERFACE(IID_##_face, _face) -00280 -00281 #define OLE_INTERFACE_CUSTOM(func)\ -00282 if (func(self, iid, _interface, desc))\ -00283 {\ -00284 return;\ -00285 } -00286 -00287 #define END_OLE_TABLE\ -00288 } -00289 -00290 -00328 -00329 class wxActiveX : public wxWindow { -00330 public: -00333 class ParamX -00334 { -00335 public: -00336 USHORT flags; -00337 bool isPtr, isSafeArray; -00338 VARTYPE vt; -00339 wxString name; -00340 -00341 ParamX() : vt(VT_EMPTY) {} -00342 inline bool IsIn() const {return (flags & IDLFLAG_FIN) != 0;} -00343 inline bool IsOut() const {return (flags & IDLFLAG_FOUT) != 0;} -00344 inline bool IsRetVal() const {return (flags & IDLFLAG_FRETVAL) != 0;} -00345 }; -00346 typedef vector<ParamX> ParamXArray; -00347 -00350 class FuncX -00351 { -00352 public: -00353 wxString name; -00354 MEMBERID memid; -00355 bool hasOut; -00356 -00357 ParamX retType; -00358 ParamXArray params; -00359 }; -00360 -00362 class PropX -00363 { -00364 public: -00365 wxString name; -00366 MEMBERID memid; -00367 ParamX type; -00368 ParamX arg; -00369 bool putByRef; -00370 -00371 PropX() : putByRef (false) {} -00372 inline bool CanGet() const {return type.vt != VT_EMPTY;} -00373 inline bool CanSet() const {return arg.vt != VT_EMPTY;} -00374 }; -00375 -00377 wxActiveX(wxWindow * parent, REFCLSID clsid, wxWindowID id = -1, -00378 const wxPoint& pos = wxDefaultPosition, -00379 const wxSize& size = wxDefaultSize, -00380 long style = 0, -00381 const wxString& name = wxPanelNameStr); -00383 wxActiveX(wxWindow * parent, wxString progId, wxWindowID id = -1, -00384 const wxPoint& pos = wxDefaultPosition, -00385 const wxSize& size = wxDefaultSize, -00386 long style = 0, -00387 const wxString& name = wxPanelNameStr); -00388 virtual ~wxActiveX(); -00389 -00391 inline int GetEventCount() const {return m_events.size();} -00394 const FuncX& GetEventDesc(int idx) const; -00395 -00397 inline int GetPropCount() const {return m_props.size();} -00400 const PropX& GetPropDesc(int idx) const; -00403 const PropX& GetPropDesc(wxString name) const; -00404 -00406 inline int GetMethodCount() const {return m_methods.size();} -00409 const FuncX& GetMethodDesc(int idx) const; -00412 const FuncX& GetMethodDesc(wxString name) const; -00413 -00415 void SetProp(MEMBERID name, VARIANTARG& value); -00417 void SetProp(const wxString &name, const wxVariant &value); -00418 -00419 class wxPropertySetter -00420 { -00421 public: -00422 wxActiveX *m_ctl; -00423 wxString m_propName; -00424 -00425 wxPropertySetter(wxActiveX *ctl, wxString propName) : -00426 m_ctl(ctl), m_propName(propName) {} -00427 -00428 inline const wxPropertySetter& operator = (wxVariant v) const -00429 { -00430 m_ctl->SetProp(m_propName, v); -00431 return *this; -00432 }; -00433 -00434 inline operator wxVariant() const {return m_ctl->GetPropAsWxVariant(m_propName);}; -00435 inline operator wxString() const {return m_ctl->GetPropAsString(m_propName);}; -00436 inline operator char() const {return m_ctl->GetPropAsChar(m_propName);}; -00437 inline operator long() const {return m_ctl->GetPropAsLong(m_propName);}; -00438 inline operator bool() const {return m_ctl->GetPropAsBool(m_propName);}; -00439 inline operator double() const {return m_ctl->GetPropAsDouble(m_propName);}; -00440 inline operator wxDateTime() const {return m_ctl->GetPropAsDateTime(m_propName);}; -00441 inline operator void *() const {return m_ctl->GetPropAsPointer(m_propName);}; -00442 }; -00443 -00458 inline wxPropertySetter Prop(wxString name) {return wxPropertySetter(this, name);} -00459 -00460 VARIANT GetPropAsVariant(MEMBERID name); -00461 VARIANT GetPropAsVariant(const wxString& name); -00462 wxVariant GetPropAsWxVariant(const wxString& name); -00463 wxString GetPropAsString(const wxString& name); -00464 char GetPropAsChar(const wxString& name); -00465 long GetPropAsLong(const wxString& name); -00466 bool GetPropAsBool(const wxString& name); -00467 double GetPropAsDouble(const wxString& name); -00468 wxDateTime GetPropAsDateTime(const wxString& name); -00469 void *GetPropAsPointer(const wxString& name); -00470 -00471 // methods -00472 // VARIANTARG form is passed straight to Invoke, -00473 // so args in *REVERSE* order -00474 VARIANT CallMethod(MEMBERID name, VARIANTARG args[], int argc); -00475 VARIANT CallMethod(wxString name, VARIANTARG args[] = NULL, int argc = -1); -00476 // args are in *NORMAL* order -00477 // args can be a single wxVariant or an array -00493 wxVariant CallMethod(wxString name, wxVariant args[], int nargs = -1); -00494 -00495 HRESULT ConnectAdvise(REFIID riid, IUnknown *eventSink); -00496 -00497 void OnSize(wxSizeEvent&); -00498 void OnPaint(wxPaintEvent& event); -00499 void OnMouse(wxMouseEvent& event); -00500 void OnSetFocus(wxFocusEvent&); -00501 void OnKillFocus(wxFocusEvent&); -00502 -00503 DECLARE_EVENT_TABLE(); -00504 -00505 protected: -00506 friend class FrameSite; -00507 friend class wxActiveXEvents; -00508 -00509 typedef map<MEMBERID, FuncX> FuncXMap; -00510 typedef map<wxString, FuncX, NS_wxActiveX::less_wxStringI> FuncXStringMap; -00511 typedef map<wxString, PropX, NS_wxActiveX::less_wxStringI> PropXMap; -00512 typedef wxAutoOleInterface<IConnectionPoint> wxOleConnectionPoint; -00513 typedef pair<wxOleConnectionPoint, DWORD> wxOleConnection; -00514 typedef vector<wxOleConnection> wxOleConnectionArray; -00515 -00516 wxAutoOleInterface<IDispatch> m_Dispatch; -00517 wxAutoOleInterface<IOleClientSite> m_clientSite; -00518 wxAutoOleInterface<IUnknown> m_ActiveX; -00519 wxAutoOleInterface<IOleObject> m_oleObject; -00520 wxAutoOleInterface<IOleInPlaceObject> m_oleInPlaceObject; -00521 wxAutoOleInterface<IOleInPlaceActiveObject> -00522 -00523 m_oleInPlaceActiveObject; -00524 wxAutoOleInterface<IOleDocumentView> m_docView; -00525 wxAutoOleInterface<IViewObject> m_viewObject; -00526 HWND m_oleObjectHWND; -00527 bool m_bAmbientUserMode; -00528 DWORD m_docAdviseCookie; -00529 wxOleConnectionArray m_connections; -00530 -00531 void CreateActiveX(REFCLSID clsid); -00532 void CreateActiveX(LPOLESTR progId); -00533 HRESULT AmbientPropertyChanged(DISPID dispid); -00534 -00535 void GetTypeInfo(); -00536 void GetTypeInfo(ITypeInfo *ti, bool defInterface, bool defEventSink); -00537 -00538 -00539 // events -00540 FuncXMap m_events; -00541 -00542 // properties -00543 PropXMap m_props; -00544 -00545 // Methods -00546 FuncXStringMap m_methods; -00547 -00548 long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); -00549 }; -00550 -00551 // events -00552 class wxActiveXEvent : public wxCommandEvent -00553 { -00554 private: -00555 friend class wxActiveXEvents; -00556 -00557 wxVariant m_params; -00558 -00559 public: -00560 -00561 virtual wxEvent *Clone() const { return new wxActiveXEvent(*this); } -00562 -00563 wxString EventName(); -00564 int ParamCount() const; -00565 wxString ParamType(int idx); -00566 wxString ParamName(int idx); -00567 wxVariant& operator[] (int idx); -00568 wxVariant& operator[] (wxString name); -00569 }; -00570 -00571 const wxEventType& RegisterActiveXEvent(const wxChar *eventName); -00572 const wxEventType& RegisterActiveXEvent(DISPID event); -00573 -00574 typedef void (wxEvtHandler::*wxActiveXEventFunction)(wxActiveXEvent&); -00575 -00578 #define EVT_ACTIVEX(id, eventName, fn) DECLARE_EVENT_TABLE_ENTRY(RegisterActiveXEvent(wxT(eventName)), id, -1, (wxObjectEventFunction) (wxEventFunction) (wxActiveXEventFunction) & fn, (wxObject *) NULL ), -00581 #define EVT_ACTIVEX_DISPID(id, eventDispId, fn) DECLARE_EVENT_TABLE_ENTRY(RegisterActiveXEvent(eventDispId), id, -1, (wxObjectEventFunction) (wxEventFunction) (wxActiveXEventFunction) & fn, (wxObject *) NULL ), -00582 -00583 //util -00584 bool wxDateTimeToVariant(wxDateTime dt, VARIANTARG& va); -00585 bool VariantToWxDateTime(VARIANTARG va, wxDateTime& dt); -00596 bool MSWVariantToVariant(VARIANTARG& va, wxVariant& vx); -00607 bool VariantToMSWVariant(const wxVariant& vx, VARIANTARG& va); -00608 -00609 #endif /* _IEHTMLWIN_H_ */ -
- -
-Definition in file wxactivex.h. -
-#include <wx/setup.h>
-#include <wx/wx.h>
-#include <wx/variant.h>
-#include <wx/datetime.h>
-#include <oleidl.h>
-#include <exdisp.h>
-#include <docobj.h>
-#include <iostream>
-#include <vector>
-#include <map>
-
-
-Go to the source code of this file.
Namespaces | |
namespace | NS_wxActiveX |
namespace | std |
Data Structures | |
class | wxAutoOleInterface |
Template class for smart interface handling. More... | |
class | wxActiveX |
Main class for embedding a ActiveX control. More... | |
class | ParamX |
General parameter and return type infoformation for Events, Properties and Methods. More... | |
class | FuncX |
Type & Parameter info for Events and Methods. More... | |
class | PropX |
Type info for properties. More... | |
Defines | |
-#define | EVT_ACTIVEX(id, eventName, fn) DECLARE_EVENT_TABLE_ENTRY(RegisterActiveXEvent(wxT(eventName)), id, -1, (wxObjectEventFunction) (wxEventFunction) (wxActiveXEventFunction) & fn, (wxObject *) NULL ), |
Event handle for events by name. | |
-#define | EVT_ACTIVEX_DISPID(id, eventDispId, fn) DECLARE_EVENT_TABLE_ENTRY(RegisterActiveXEvent(eventDispId), id, -1, (wxObjectEventFunction) (wxEventFunction) (wxActiveXEventFunction) & fn, (wxObject *) NULL ), |
Event handle for events by DISPID (dispath id). | |
Functions | |
-wxString | OLEHResultToString (HRESULT hr) |
Converts a std HRESULT to its error code. Hardcoded, by no means a definitive list. | |
-wxString | GetIIDName (REFIID riid) |
Returns the string description of a IID. Hardcoded, by no means a definitive list. |
-
-
|
-
- - | -
-
- -Value: private:\ - class TAutoInitInt\ - {\ - public:\ - LONG l;\ - TAutoInitInt() : l(0) {}\ - };\ - TAutoInitInt refCount, lockCount;\ - wxOleInit oleInit;\ - static void _GetInterface(cls *self, REFIID iid, void **_interface, const char *&desc);\ - public:\ - LONG GetRefCount();\ - HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, void ** ppvObject);\ - ULONG STDMETHODCALLTYPE AddRef();\ - ULONG STDMETHODCALLTYPE Release();\ - ULONG STDMETHODCALLTYPE AddLock();\ - ULONG STDMETHODCALLTYPE ReleaseLock() - -Definition at line 184 of file wxactivex.h. |
-
-
-
|
-
- - | -
-
- -Value: void cls::_GetInterface(cls *self, REFIID iid, void **_interface, const char *&desc)\ - {\ - *_interface = NULL;\ - desc = NULL; - -Definition at line 264 of file wxactivex.h. |
-
-
-
|
-
- - | -
-
- -Value: if (IsEqualIID(iid, _iid))\ - {\ - WXOLE_TRACE("Found Interface <" # _type ">");\ - *_interface = (IUnknown *) (_type *) self;\ - desc = # _iid;\ - return;\ - } - -Definition at line 270 of file wxactivex.h. |
-
-
-
|
-
- - | -
-
- -Value: if (func(self, iid, _interface, desc))\ - {\ - return;\ - } - -Definition at line 281 of file wxactivex.h. |
-
d\xd4md\xcdm\x9d\xd5\x96\x95Xg\xbb\ -\xe6P\xa2\xe7\r\x89\x11\xad\xf1 &\xb0\x9c\xb2\xba\x1fk\xcf\x0c\x96\xc8\xd1\ -\xef\xa5\x01\xc7\xe6\xe6\xfa\x19\x89\xa8EJ\x01I\xb4\xce\xbe\xbd7\x0e\x91\xf6\ -\xcc`\xfau\xb0}G.c\x1c\xf1\x16\x92\xae\xa1rv\xcf\xc8\xcb\xb6\x9e\xb1\xefM\ -\xbc\xcdb\xc3B\x02},I\xd3\xc3\x08\xd0v\xc2jM\xb9\xaf\xd1\xc1\x96\x11\xf7\xce\ -\xcd\x10\xb5\xb8\x90\x80g\xd0\xd2\xa5\x96r\xda\x87\r\x0e{Z\xa3s.:\xe7\x91\ -\xe2M\xa3\xacb\x83\xb7\xb2a\x7f\x8dt\xb3H-\xf4\x82\x00\xa95Y\xe4[Ef1\xb0\x19\ -H\xaaL\xb4\xc5\xda\x9b\xba?gt\xd6"d>\x84\x92l\x8c\xb78R\x9f\xb3\x06\xb6\x12\ -\x02Z\x8dQ:\x99\x8aQ\xe7Dy\xf1\x8c~@\xb3X\x1aVf\x06\xae4\xd8_?\xd3\x96\x05@\ -\xac\xe3I\xa2\xf3\xf2\xbat%\xb2u\xe5\x98\xce\xabV\x89\x016,^\xe2\xc3\xa9\xd7\ -\x16o\xd5\xc4y\x1e \xb5\xe8\xd9\x0b=\xd5\xc15H\xa7\x16\xab\xd8\xa29\xde>\x87\ -gk\xe4\xd0\xaa\x1a\xe3k\n\x97U\xb79[\r\xf2\xea\x9f\xc5\xb2+oMU\x00~\x86\xce\ -\x87\x1d\xb7]\xda\xe3\x9c\xd7\xea\xfa\xac\xbb\xe7\xfb;\xbc\x14\xe1=\xdf\x9a\ -\x19h\xa1^\x96\x12\x11CZV\xb3\x7fO\x9b\xe27\x0f+m\xddO\x8eJh\xf4D\x98\xbcT\ -\x12tn\xeb\xed\xee\xca.EP\x94\x92\xcc\xb4Uc/96\\.\xbb\x11I#\x8b\x8e\xb4\xcd\ -\xe2\xa2\xa7\xcdK\xa3\xad\x84}\xe4D\xea\xe9\xe4E\xf6\x12\xad\x15:\xa1\x94_E\ -\xd2Z\xf6\xae\xb6\xee!\xa7gcn\x10\xe4\xdf\xee\x7f\x15\xe9,$\xa1\x83\xb1\x8d\ -\xfe\x89\x87F\xf9:9\xbd\xca\xcau}\x82\xe8\xbc\x97\x85\xb7\xee\xb9\x87^\x97_\ -\xce\xde\x0c\xbc\xdf\x8f\xe8^_\x11\xc5C\x9f\x82o\xfd\x02\xec\x92\x0b\x06\xcc\ -\x90\x9aBC\x1b\xe7\xc9\xb9\xab5T]\xaa\x91qIT\xb9X\xe5\x99\xb4\xadi-p\x1a\x1a\ -v\xe2\x9a/\xb5\x95\xe5\x0b\x11\xf2,\xaf/\x08:\xae,\xbc$\xe3t\xdaLf\x05\xc9\ -\xeb\x8c\xd6\x98\xf9\x8e\x04/Z\xda\xf2}\xab\x19\x88)\x0f\xcd\x0c\xfc\x89\xb0\ -(q\xd5e]\x0c\x06I\x9f\xf5\xa5{\xbe\x9f[+\xd3S\xb9a\xc9\x86wn~\x0f97]nr\xb4:Z\ -O\xdc\xd3\xa8\xdb\xed\xe33c\n\xf3\xe4\x84\rr\x8c\x9cs\x9f0\xc8\x03\xf3@\xde\ -\xcb\xc3i\xad\xf9#\x11\xb2\xe9\x15\xfb\xfd\x08\xefWK\xc2\x044\xae\xc23\xca\ -\xbdi\x92aD\x13\xd2\x17\xd6\rr\xabq\x81\x17\xb0\xef\xbcZ\xe2\xe3_\x8a\xdb5\ -\xa9\x15ar\xd9\xdbz$;"\xc2[_\xec\x9d{\x17n\x93\xf3\xee\xa7\xf5I\xf8(W\xfeix\ -\xc8i\xe0!\xa7\x81\x87\x9c\x06\xbe-\xb7\xfa\x08|K\xfa\xf0\xe9\x88<\xae:\xffs\ -5g $y\x01\xc0\xef\xdf\xbf\xdf\xde\x96\xbf\t\x85\x8f\xeb\xbf\x14=\xffo\xe6B\ -\xf9?3\xaf_H\xcf\xbfp\xb2\xa0\x7f\xe1\xf4\x1f\xe9vm\xb6]^\xcd7\x00\x00\x00\ -\x00IEND\xaeB`\x82' - -def get_12h_Bitmap(): - return BitmapFromImage(get_12h_Image()) - -def get_12h_Image(): - stream = cStringIO.StringIO(get_12h_Data()) - return ImageFromStream(stream) - -#---------------------------------------------------------------------- -def get_13d_Data(): - return \ -'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00G\x00\x00\x00`\x08\x06\x00\ -\x00\x00O\x19o\x91\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x07\ -\\IDATx\x9c\xed]a\x93\xeb*\x08=v\xef\x0f\xcf\xfe\xf0W\xde\x87\xd4\x88\x08\ -\xa8h\xdb{\xa7=3\x9d\x98\xc4\x18=\x01\x04LvS\xba\xfd\x00\x00\xe8\xfe\x1f\xe1\ -\x0b\x00@\xba\xfd$\x00\xb8\x01\'1\xc7q\x80\x88>\xfew\x1cG%(t\x1c\x07}Qp\x1c\ -\x07\x01\xa0\x04\x80\x88\xbe\x1a%\x91R\xc2\x1f\xb6W\x9f%\xd2\x8f}\x10n\xef\ -\xee\xc0\xdf\x8cB\x0e\x97\n)!D\x1f\'5\x80\'9Y\xa5>\x90\x94\x0c\x9d\x9c/1\x00\ -<\xc9\xf9pb\x80\x11\xb5\xfa`\xfcQ\x8f\xe6i<\xa5F\x82\xd2?L\xda\xac?\xa7\x93s\ -\xb6d\x12\x14q\x1aSJ\x8d\xa6\xca\xa6\x95[\r\xb6\xdd\xefS\xe4\xa1\xfa~N\xbe\ -\xe1L\xc3F]"\xaaN\xe5\xb2\xb5\x1d\xbd\xad$&\xa5t\xfd\xf8\xb1\x08\n9^\xcfgz\ -\xea\xd4\xbd\x08J\x00\xa1\xfc\x9a\xfd\xc1.h\xc4\xe4\xdd|<\xa5\x84\xe8\xd4b\ -\xab\xd5,\xf4\x9e\xebU;MQB3 N\x96\x16\xd9hj\xbb\x8aB\x8e\xd6\xf2\xe8\xdd\x92\ -Q/\xd1#\xb6\xe5MRW\xcc\xe5\xd9\x86\xac\xcb\r{\xae\xbb\xb1.9\x89`\x9b\xae\x1b\ -\x90\xee\rA\x80=\xb0L\x1c\'\xb1\'i\\j\xb2\xaaU6\xa7s\xbd\x85\xb7\xfa9\xd2pf\ -\xe4\xc1\xcdJ\x06\xb7A\xf4h\'o#\xf0\xc3\x87\x1eA)\x99MT\xb7P\xda\xd1$\xc4\ -\xc25`\xb1\x95]\xd9\xadf\xed\xc8\xa4\xfd0\xed\xc9\xa4dU\xf5KZ\x12\xd83\xa8\ -\xd3H\xb7\xaa\xb4"\xff59\xaa\xfd\xb8\xe9\x04\xcd\x0e\x88O\xadO\xb2\xa3\rA\ -\xd9f-\xfb9\xdan\xef8\x11\x80{\xe7\x16wA\xcc~f\xb8\x83\x99\t\xaa$3\xd8\xae\ -\x18\xb55\xd0\x1e\x01\xe38\x8d\xb0}\x9e\x1b\xe3\x91\xed3Q\x93C\t-\x11\xfaT\ -\xec_\xa3_[\x9efq\xf1WE\x9f\xb7\xbd\x9b\xabV_$\x11\x1e1\xbd:\xce\xb5\\\xec%1\ -Q\xe9\xe1\x04\xed\x90*?e1c\x1f\xa4O\xef\\\xcb\x07e\xd9\xa0Y\x82v\xce|\x19~\ -\xcab\x16\x83\xa4z\x86YJ\xc2;\xb1\x14>\xa8\x03\x19\x1c\x90F\x90<\xf6\xac\xd9\ -m\x14arz\xba\xaf\xd5\xe7\xe7\xbcA\xf7T\xeeUXZ\xd4\xb3t^\x1aC~\xbe\'\r\xd2G\ -\x99\xb17\xbb1\xbdV\xde\xce\x0e\xfdN\xcf\x0c`\xc7\x94.\xdb;\x9d\x879I\xac\ -\xd7\xca\x03\x9d\xf0f\x8bzF\xb2\t\xea\x07\x9d\xb9\x9e\x9d\xf5\xe3\xe7\xb4\ -\xf6\xf6\xa7,\x1c\xf4\xc4\xba\xcd\xe1\x16\x82\xe4\xcf\xbbG\xbe\xf6\xdcoc%\ -\xed\\y8\x85\xd8\xbd)\x8b\x01h\xaa#\x07,s\xc2\xb2\x8f\xfc\xbc\xd6v)\xe7\xe3\ -\x9aZ\xeb\xe7\xac\xe33\x08\xd9\x1c)\xde\x00.\xbd.\x1db\xc4\xb0\xeb\xf9\xb9\ -\x04\xbd\xce\x0e\x94\x87w\xf6n\xd6p/\xd9\x1cN\xca\xd5\xa1\xeb\\\xed0[A\xa2$\ -\xe8\xac\x1b\xed\x8f\xde\xbfs\xb3%e1\xda\x91\xa4\xaa\xc4c\xd5\xa5q\x94y\xfd+\ -\xf6y\\SK\\V\x93\xf1m.?c6\x8f\xa9\x95\xd2\x08\xd0v\x90K\x10W\x9f6\x0c\x8b\ -\x8f,\xab\x8e\xa6\xc6r\x06{\x99Z\xd5\x9d\x90\r\xd7eIF\x86f\xbbFP\xfbO\xedC\ -\xc8\xd2\xb8\xea \xc6m\x0e|R4X\xde3\x94\xb6\xcc\xfb\xb2\x94DE\xbaCP\x14!r$1\ -\x96TXD\xf0}\xee\xc8y(\x12B\x8d\xc4\xe4\xeb\xc9 (\x8a\xa0\x13X\xcarP<.\xe2u\ -\xb4k\xf2@*\xfb#~\xbc\x9e\xb5$s\xd5\x01\x8a\x04\xb1\xf6\xa2X\x0c<[Gn4\x1f\ -\xd3\x18e\x8c\r\xa4Q\'\x882\xdb\xcf\xb3g\x14ar\xb8#\x07\xd8\x04\r\xb7g\xfc<\ -\xa9\xd1\xfas\x85\x0c\xa2\x1cA\xd0\xcfy\xdc\x98\xc6\t\xb2|\x11\xa9FR\xa5\xea\ -6Z\xa9\x01\x9e\xe3\xe3\x00+\x99\xc0\xec\xda\xd2i\x08\xd9nYmd\xc1\xa9\xd7\x8c\ -\x85\x9e\xd4\xe8\x04\xb2v\x85\xc39\x8b\x109U\x98\xf08@\x8f^\xc8\x8eh\xc1\xe0\ -u\xadkh\x93Qfu\x9a\x02\x93"\xf6\xc0D\x95a,\x19\xe4KJ\x1e3\x0ew\n\xa5j\xf0\ -\xf4A\xd41\xb3.\xab$\x96\xe9\xf8\xeaT\x1e\xf6s\xb4\xfdhg"\x06\\\xbe\xbf\xc3\ -\t"E\xe5#\x88\xf99W\x07\xeb2\x877\x8d&f\x18<\x83\xec\x05\x94M\xea\x84\xf5MJP\ -\x14O\xf9jF\x9bM4\xdbbM\xdf\x16\xb1j\xc2\xacC\xd0J\xc4\x1e\x9b\xca\xf36\xb5\ -\xe5^Gx\xc80:\x85\xf7\xe0\x11\xb42\xcd\xc7\xd3\xa4\xd0\xd5+\xef\xf3\xf2\x88\ -\x13\x07\xb4\x12cE\xf3W}\xc3\x1b\xe7\x0e\xe4\n\xe2\x1er\xee\x14\x1e\x03 V6:&\ -\x9d8K\x8drr\\kKS\x13-Y\xdf\x0b\x8cG\xb0\x9c\xcf\x91\xc6\x93R=(\x19I\xe7\xe3\ -n\xbb\x13\x83\xf1H\xc9mEg\xd1\xe5u+\x8d\xa0*\xb7R%\xb4\xc6\xdb.\xd7\x8c]d\ -\xe5\x96V4kIr<\x82$1\xb3\x8e\x9f\x95\x90Gs\x0fy]]w\x05\x0bQ\xb9X\xb8\x83\x1e\ -E\xb7\x0bq\xfd\xadL\xe0k\xc2#\xd3\xaf9/\xa4\xcdxQ\'\xf0\x1c\xcfd\xe2\xb9\x87\ -\xd5\xe5\x95k\x1a\xce\xc7!\r\xb4\\j6\x82P\xd4\xf5_\x92`/\xef\xf5\xd5\x1d-\rG\ -Z\x15\xf7@MP\xdd~RU\x8c_W\xfa\x19Gx\xdd\xea\xbc9/\xd3u\x8c\x07\x99\x1c\xd69\ -\xcds\x06\xea\x81\xfa\xa1D}\xad\xf7R\xc1\x0c\x16^$\xc8e\xfb\xf8\xc8\xba\xb6\ -\x95\xef\xd1B\x88*\xa1.\xce\xe7h_{\xa9!\x8a\xad6G\xae\'\x9d\xe5vj\x1e_qh\xfb\ -%\x1dI\xbbN\xfb\xd6\xd9kl\x0ej\xf1\xe5\r\x96\xb2~\\\x9e\xab\xda\x1d\xe8\xbc\ -\xf5b\x94\xb7\x8dbkT.E{d+_q\xb3`\xbd\xcf3B\xcc\xcb\xdf\xcf\xf10\xf24\xe5{=\ -\xde\x004I\xe1\xa8\x12_\xca=\xa2\xd8\xf7\x8dg\x00#\x03\x18_\x07kC\x8e\xb7\ -\xad\x95\xef\x80\xb4\t\xda@\x86\xed\x06\x9b\xcaV%&\xe3\xaf\x96\x9ca\x9b\xc1c\ -\x88Yb\x9ck\x96\xc9\xd1\x9e\xfc\x88\xbd\xb1l\x83\xd6\x9eK\xa2\x94\xaa\x19\ -\x82:\xa4.\x1bd\xee\x19\xb7N_\xec\xbb)i\xacMx\x9fl\xf70\xf0\xb9\xe6\xe6\xa9|\ -\xdde\xd7\xa7yj\x89\xea~\xb2\xed\x104\xf8\xb9\xe6S\xfff\xd7\x8a\xf4\xd4\xed\ -\xec3\xb2\'\xc6>\xd7\\\\}Hlp\xe7\xb1\x1d\xd2\xa3\xde\x93\xdb\x9d\x94\x10\xfd\ -d\xfb\xc4\xd8\xe7\x9a\xe1\xc0\x93os\xf9\t\x9c\x00\x10\xf1\xd9\xecM\xb4\xfa\ -\x83\x9fk.-\xcd\xf0-\xb0\x8f \x99\x15\xac\xe2\xefY\xf5\xb2\xea\x0f|\xae\xb9\ -\xd5\xe6\xf0\x88[\x1e\xd7\xb6\x16\xbaq\x11\x11f>\xd9vnTo\x05b/\x12p\xff\x009\ -\xb1>\xff1\xbdg\x8c\xf7\x1a`\x07\xce}\xb6\xa4,\xbc\xfcM\xae/\xc1\x8d:\x94r\ -\xbf\x13\tHw\xe8\xc2\xdf\xf9\xdc{\x10O\r\x1f\xae\xc1Rm\x17\x89\xda\xbe\xf7\ -\x86\xa2z\xc9\xd6\xfb%\x1e1\xf2\x01\x10\xe9\xc7\xb0\x99\x1cUj\x98Z\xcb4\'\ -\xaf\xd3{\xd0\xe6i9\xb8\x8d\xea\x18\xf6s\xdau);\x1d\x9a\xc1\xf7\xa5-L\xec\ -\x07j\xf7]\xff\xa9cX\x87;!\xcaK~N.\xcb\xc4\xf6\xa8q\xf6\xfai\xf5\xbbK\xd0\ -\x08\x06}\xa6\xb5\xd9\xca\xad\x13iY\x0f\xb2#\xf7\xef"\xab\xe3\xce\x94\xc5\ -\xcb\xa6\xd8W\x80\x13\xa4\xe0\xfb\xc7\xa2\x9d\x87\xfd%\xc7Q\xd1\xcf&\x87\xa7\ -\x12\x14|.9\x1db\x80O$G3\xc0U\x86\xb1\x94?\x8f\x9c\t\xbcui\xe6-0S -n\x00\xf0\ -\xfb\xfb\xfb\xd4\xfe\xfck\xb8\xf8x\xfc\x97\xa2\xef\xff\x9by\xe0\xfa?3\xb7\ -\x1f\xa4\xef\xbfpj\x91\xff\x85\xd3\xffU\xc9\x9f\xc6]\xc8_\x81\x00\x00\x00\ -\x00IEND\xaeB`\x82' - -def get_13d_Bitmap(): - return BitmapFromImage(get_13d_Image()) - -def get_13d_Image(): - stream = cStringIO.StringIO(get_13d_Data()) - return ImageFromStream(stream) - #---------------------------------------------------------------------- def getBackgroundData(): return \ -'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x96\x00\x00\x00\x96\x08\x06\ -\x00\x00\x00<\x01q\xe2\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\ - \x00IDATx\x9c\\\xbd\xcd\x8a\xe4\xca\xb2\xb6\xf9\x88r\x07s\x90\x83;\xa4 u ?\ -\xc8\x03\xfb\x83\xdd\xb0\x1b\xba\xa1\xa7=\xe8a_U]]\xdf\xc2\x1e\xec\x86
??Qm\x88\x14\xda~\x83k4 Ih\x87R\x92\xf8wU\xd1\xbd\xb1\xebA\
-\x95D\xa9\xef\xb4\xe3FI\x05=\x14U\xe5\xbd\x16\xda\xa1\xa0>b\x19\xdf\x1b#\x1d\
-c\xc6\xffN\xf0\xfb\xd5\x82\xee7\x14\xfcZc6\x04AD\xf8\xfa\xfaBUY?\xd71>\x05)\
-\xaf\x89\x16\xd0]\xd9\xda\x8e\x00u\xad\xec\xdb~\xcd\xf1\xbaV\x84B;\xda\xb90\
-\xa8\x1e\x00\x94Ri\xaa\x94Z|\x0eQ\xde\xeb;mo\xecm\x1f\xe3\x14\x92$\xdek\x81R\
-i\xdb\x17\x92\nmo\xe3\x19\xb8\xe6\xe4\xfc\xf1U\x87]!\x8d\xc5<\x9f= >\x01\xfc\
-\xf1\xf1\xbd\xed\x14\x11\xea\xbar\xb0\xd3v\xdf\x0c;\x8a\xdcv\xae\x19\x04\x92\
-\x8c_\x8f\x866\xd8_;n|\xe4\x80\xbd\xd2h\xbe\x9cI\x90$ \xb0\xef\r\xd47"$\x0e\
-\xa0\x8a\xb0\xae\xe2C>\x94v\xb41\xcd\n\xcd\x07_\xd7\x15\xda\xc1~N"B\xad\xc9\
-\x17\xefh\x1c\xed\xb8\xeeU\xff|2U\xdf\xc5\x80\xfe\xb1_QE\x93\xc0>\xae\'\xc2*\
-\xfe\xfds\xf1\xcf\x87>\xb7\xe4\xf9\x7f\x87\x9f<\xf6\xb6_\x8b\xb3\xae\x85C\
-\xf1EI\xfe\xb9J\xe2X\xdf\xf1#\x0c[\xdb\xd0]Q\x94\xb2\x16\xd6\xcf\xcf\xf1\x94\
-\xe2\x9bI\x04\xdd\x1bR\xcbu\x084)\xd2\xf0\x05\x04RI\xd7\x01\x13)\xa8*\xfbmC\
-\x81Z*"~\xd0\xce\xf1\x9e?\x92\n\th\tV\xd6q\x10\xc5\x0f\x0e z\xfc\xf1\x8d\x03\
-\xd54\x9e\xd3\xd7\x8d\xe4\xb3PJ\xe1\xf6u#\xa9\xaf \x1c\x88\xdf\x9cP\xa5\xb2\
-\xb3\xb3V\xbf\x81n\xbe9\xbe\xbe\xbeP`\xad+\r\x9f\xf0\x8ap\xa0\xbe*\xe3\x04]\
-\x83N\xe2\x0f<6\x94\x8e\x9b\xa5k\x87\xfb\x86\x92aQ\xceE\x96\xb5\xf2.\xef \
-\x89\xdb\xf6\xf5zx\xa0\x8d\x95\x97U\x10\x15\xda\xeb\xf0\xc2{\xe5\x93Jk\xfb\
-\xd8 \x07\xec~\xaa\x9a6\x92\xba\xb5\x91rn\x1e\xf1M\xa7\x89\xba\xca5\xf6\xfd\
-\xb6\xb1\xbe\xaf\xfe\xbb*\t\x90q\xb2E\xa0m\n(\xaa7v\xf5\x89S\x85}W$\xf9&\xdc\
-7_\xcc\xf5}\xa5$aozY7Icc\x08T\xa9\xd7\x06\xd7\xe3u\x98},\xe7\xbc5D\x84R\xca\
-\xd8\xf9J*\xd5\x17\xf6\xf8o\xf3y~\xeb\xcf}p]\xf4@J\xa55\xf5\xb9\x19\x9bQ\x92\
-\xb87\x11X5\xb1\xb3_VS\x0f\xd0\xa3\xf9\xe6\x06\xf4P\xf6a\x89\x11\xa1\x8a{\
-\x91\xd3d$p+H\x81\xa3\x9d\xe6\x1a\x01\x02c\xf1\xeb{\xe5h\x077QD\x95\x9b*|}\
-\xb1\xdd\xfcd\x95\xe1v\xda\xa1\xacc\x13\x91\x94$\x15\x91\xd3b\x1f\\f\xbcT*\
-\xa75\xf4\r\xa2IPmn\xc2%\xf9\xe6\xdc\x14]\x9b\x0f^aG\xa9\xc8\xd8pBS\x1f\xb0\
-\x1e\xca\xa1\x07\xa8\xb2\r\xd7\xb5\xbe\x7f\xba\x99o\xbb[\xbf\xe4\x0b&I\x86\
-\xfb\xf5g\xd5\xad\xa1(\xdbmG\x0e\x85\xb2\xfa\xb5\xce\x9fq\x02}S\xc9\xd8\xd4\
-\xfe\xe52\xac\xa0\xaaRI\x94OAw\x90\xb4\xbbA#\xa1I)\xe2\x8b\xa6p\xb9\x98W8\
-\xa0\xeeF\x80]w\xda\xeeVu\xdc\x82\xca\xc1\xa1\xbe\x0e"\xe2n\xf9\xb4\xa6\xe8\
-\x08Q\xc6v\x92\xd7\xa2\x83\xbb\xb7\xeb\xa0\x02\xa9Th#\xa62\x0b\xfb]QS\xd2\x9c\t\x11\xcc\xa0?:\x16\r\xc1\x9f;\x08\x98\x19\
-}X(\x82\x91BBUY\x96L\xc9on\x82\x0c,\xb8\xe9\x90 \x849\xa0\xfbX\x13\x02\x0f}`\
-\xc1x\xea\x93 I8\xda\xe1\xf1@\x15D\xd2\xd8\xa9n\x95\xaa$D\xdc\xc5$\x15\x8a\
-\x14\xf7z\xe2\x01i\xdb\x1bUG\xe0{\x9d\x80W" ue\x95\xca~\xba\xce$\xac\xef\x15\
-\x10\xb6\xaf\xafa\t_.\x92q\xe25\xb9\x89W\x94\x92\n\x95\xca\xde^V\xe2\xb4F\
-\xa7eH\x9a@\x0e\xf6\xa6\xc0\x81\xe2\xee\x0c\x11\xb7D\xa9P\x0b\xec\xf8\x06]\
-\xdf\xab\xbb\xbc\xd7as\x83;\\\xf91\\\x80\xd4B-\x8a\x1e>F\xb7\xce\xc9\xdd \
-\xc3U(P\x8e\x11#\xd6Wh\x00l\x9b[\xbb\x83\x83D\xa5\xd4\xd3\x9a\x16\x8f\xa1\
-\x80"\xc2>>\x8fz\x82\x02\xc3Z\xee\xe3\xfbz\x90tXR\x19\xa1\x93\x1e|m\xfb\x1f\
-\xa9\xc8\xb0h\xc3\x1aK-\xe8m\xf3\xb9jz%J\x00E\xca\x15+\xab\nm\xbfq\xe8\xe1\
-\xde\x86\xea.3U\xce\xb8J\xf4\x95\x98\xa4\x91.\xed\xea\x96\xec\x9c\xc1Dr\xcb\
-\'\xf0c\xf9\xfb\xf2s\x92\t\x0c\xe6:c\x06\xd6;q\xce\x1c\xcdO\xa6=\x95\xdb\xaf\
-;\x92gB\x0edIH\x9d\xa9RI1!%\xb3\xb7\x9d\xd6\x1ajF\x0c\x918G\xea\\\xd9\xef;!\
-\x05\xd4\x003\xb7\x0e\x06]\x95\xef\xb6\xf1\xd4\xc9\'a\x82\xde\x153\xe3\xe8\
-\x07\x93M<\xfa\x83\xfbv\'\xce\x91@`B94\x91\xc3\x08\xbe\xed\xe5>\x82\x18\x16\
-\xb2\x1fI\x83\x94\xa3?S\x9a\xf9\xee\x1d\xd5\x9dH\xf4\x13\xfd\xe8\xa4\x9aP5\
-\x98\xfc\xb4b\x86\xc5\x80\x1d\x8a\xc5\xc0\xa4\x8a\x85\x80L\xbeI\x92E\xa2D\
-\xb4?80\xea\\Q\xed\x18`G\x87\\\xa9sf\xad\x856)v\xb8]\xf9\xe7?\xff\t\x13\xf4\
-\xbdcQ\x99l"\x10\x90\xe8V:\x86\x88\x84\xe0\xdf]\x16\xb7@#\xfe\xd4\xdey\x98a\
-\xddHA\x81\xec\xbb\xdf\x8c@\xe6a\rSX\xde\x16j}\xc5o\x98q\x981\xe9or\xa9\xa4\
-\x10\xdd\xd2\xa4\x80\x99\x1f\xc6\x89\t\xed\x8aNnq\x1em$e!_\xb1S}\xab\xa8A0\
-\xbd\\q\x90\x80\xa9q\xffn\xf4\xe6\x07\xa3\xf5\xees\xd9\x0f\xc2\x9c\x90$\x84\
-\xadm\xac\xeb\xeaY\xcd>b%\x11\xdek\xe1\xa6\xc7\xc8<|\x9b_1\x85z\xdc"\x02\x87\
-@I\x90Z"\x954\x829E\x0f\x86\x85I\x9e\x02\x8f\xecEG\xa6WR\xe1s\xfd\xf4`\xf4\
-\xca*\xfc\x81\xca!\x975*\xb5p\xb4\x83]=\xeb\xaaed9W\xd6\xf9\xcajK\x15d\x8c\
-\x0f\x04\x92R\xd7\xca\xd7\xd7\r\xd5F*\x89Z\x92\x9f4\x84\xed\xccp\x81u]\xafS_\
-D\xd0\xf5\xdd\xe3\xb9m\xf3\x0c\xab\x08\xda\x94}dj\xa5\x96\xe1\xc6\x0e\xa4\
-\xac\x94UP=-\x9d\xdf\xbb\x8d\x04\xa1\xbe\xd7Wf;&\xb2\x16A)\xc8\x80P\x8e\xb6S\
-\xcb\x8a\xea\xce6\xb2\xc9\x91\xfd\x8c\xe0\xd9!\xa0\x91\xab\xb8\xe5l#\xd6\x1a\
-Vco\x9e\xa1\xd6R)#&\xba\xed7\x00\x8e\xb6#\xf5\x13h4U\x92\xee\xec\n+\x15\xa9\
-\x9e\xcd"\xf2\xba\xaf\xf8\x1c\xadE\xd8uw\xcb\x89"\xc7\x88\xaf\xd4-e\xa9\x02\
-\r\xb6}\xf3u\xd9\x1b$\xe1\xc7\xfa\x8f\xf5\xa7a\xe4\xea\xbet\xce3)%\x02\xf0}\
-\xefD\x8cmkX7\xf7\xbd)#\x02a\x16\xb4\x1b1\x00\x04\x82\x04B0\xcc D!\xc4@\xcc\
-\x919\xcdH\xf4I}t#\x85@H\xc1Ot\x12\xb4\xdf\xf9\xfa\xb5\xf1[\x7f;\x04q\xdf\
-\x89\xe2\xbb^\x87\x05\xcc\xb3\x9f\xa2\\\xdc\xcdtU\xe6ZXk\x81\x18\xd8\xdbN\
-\x0c\x06)#Q\xfc\xb4\xcd\x99 \x81\xff\xfa\xba\x91\xc5\x88s\x06\x83`B]\x13j\
-\xa0\xa6\xace\xe5)O\xc4d\xc4 \x01R\xa0\x8a\xc7\x18\xf7{\xc7\xcc\xcd|\x98\x8d\
-\x9c\x16\xb47\xfe\xeb\x9f\xff/\xb9\n\x84D\x90@k\x1e\xe7\xb4\xdey\xda\x13U\
-\xe3\xd0\x839\xcf,u!D\xb7\xdarZ+\x02\xfd\xfb\x17X"\x88\xa1\x1d&Q\xca\\\xc9\
-\xa9\xb2\x94\xca4\xb9\x95g<\xbb\xf6NY\xdf\xb1\xde=&R\xe5\xe3\x7f~ \x04\xda\
-\xde\xc8s\xa6\xd6\xca\x9c\x03\xf6P~\xdd7z\xef\x00\xb4G\xa7\xce\x11\x10\xd4\
-\xdc\xe2F&,\x18{\xebt\xddI\xb8gX\xd7\x95\xae\x86\xa9\xd2\x9a\xd2\x87;\xde\
-\xef\x07\xcb\x92\xd0f$I\xc4\x90QU\xca"\xe4\xb9\xc2\x04!\ty\xce\xfc\x90\xbf\
-\xcb\xcf\x18"oy&I\xa6\xf7\xee\xa7 \x06"O\xcc\xa2\x07z\x02\xb5\xaeH\x11J\x9e\
-\xc1\x02\xbb\xeeX7\xd4\x94Z\x13\xcb\xf2A\x88\x81\xfb\xa3C4JY\xc9\x02_\xdb\
-\x9d\xbf~}1ga\xfd\xf8O\xc005\xc2\x04\xed0z\xf3\x81\xa7\x00f\x89$\xbeA\xd5\
-\x8c\xe5m!\x84\x80\xa9b:\xa1b\x88\xc1\\\x8b\x07\x8d\xc1\xf8\xdd\x9e\x1cf\xa4\
-\x10\x99s \x95\x05\t\x015O\x18T\xdd\xbdv\xebD\x8b\x90\x03bB\x94\'g\x08k\x18\
-\x16\x8d\x92g\xb2$\xb6m\xe3\xbb\xf7+T\x9e\xc2\x84u0{\xd0\x1f\xe6\xc9\x88\x05\
-jN\x9e\x10\x009D\xa6\x10\xdd\xc2\x8fp \xaaA\xf09|\xcb\xc5]\x9d\x19\xf6\xb8\
-\xf3\xe86\xae{`\xa6dY0S\xb6\xf6M\n\x91\xb7\x8f\x0fR\x88<\xcd\x93\x98Y\x04S\
-\xa5w\xc3\xec\xa0\xbe-~h\x0fO\x06\xe64\x0f\xb0\xd6P3&&\x92$r\x88\x10\x03\x13\
-\x9e,i\xef\xc49"Yx\xdc\x1fh\xef\xa8\xc1\xc7Z\t\xb9\x80\x19]\x1b<\xa0\xf5;\
-\x8f\xfe\x18\x1b\xd4Hd,\x18G;0\x94