1 #############################################################################
2 ## Name: ext/xrc/XS/XmlResourceHandler.xsp
3 ## Purpose: XS for Wx::XmlResourceHandler
4 ## Author: Mattia Barbon
7 ## RCS-ID: $Id: XmlResourceHandler.xsp 2281 2007-11-11 13:46:12Z mbarbon $
8 ## Copyright: (c) 2003-2004, 2007 Mattia Barbon
9 ## Licence: This program is free software; you can redistribute it and/or
10 ## modify it under the same terms as Perl itself
11 #############################################################################
15 %typemap{wxXmlNode*}{simple};
16 %typemap{wxXmlResource*}{simple};
21 #include "cpp/v_cback.h"
23 #define DEC_V_CBACK_WXOBJECT__VOID_pure( METHOD ) \
26 #define DEF_V_CBACK_WXOBJECT__VOID_pure( CLASS, BASE, METHOD ) \
27 wxObject* CLASS::METHOD() \
30 if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, #METHOD ) ) \
32 SV* ret = wxPliVirtualCallback_CallCallback( aTHX_ &m_callback, \
34 wxObject* val = (wxObject*)wxPli_sv_2_object( aTHX_ ret, NULL ); \
35 SvREFCNT_dec( ret ); \
41 #define DEC_V_CBACK_BOOL__WXXMLNODE_pure( METHOD ) \
42 bool METHOD( wxXmlNode* )
44 #define DEF_V_CBACK_BOOL__WXXMLNODE_pure( CLASS, BASE, METHOD ) \
45 bool CLASS::METHOD( wxXmlNode* param1 ) \
48 if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, #METHOD ) ) \
50 SV* ret = wxPliVirtualCallback_CallCallback( aTHX_ &m_callback, \
54 bool val = SvTRUE( ret ); \
55 SvREFCNT_dec( ret ); \
62 class wxPlXmlResourceHandler : public wxXmlResourceHandler
64 WXPLI_DECLARE_DYNAMIC_CLASS( wxPlXmlResourceHandler );
65 WXPLI_DECLARE_V_CBACK();
67 wxPlXmlResourceHandler( const char* package )
68 :m_callback( "Wx::XmlResourceHandler" )
70 m_callback.SetSelf( wxPli_make_object( this, package ), true );
73 DEC_V_CBACK_BOOL__WXXMLNODE_pure( CanHandle );
74 DEC_V_CBACK_WXOBJECT__VOID_pure( DoCreateResource );
76 wxXmlResource* GetResource() { return m_resource; }
77 wxXmlNode* GetNode() { return m_node; }
78 wxString GetClass() { return m_class; }
79 wxObject* GetParent() { return m_parent; }
80 wxObject* GetInstance() { return m_instance; }
81 wxWindow* GetParentAsWindow() { return m_parentAsWindow; }
82 #if WXPERL_W_VERSION_LE( 2, 5, 2 )
83 wxWindow* GetInstanceAsWindow() { return m_instanceAsWindow; }
86 bool IsOfClass( wxXmlNode* node, const wxString& className )
87 { return wxXmlResourceHandler::IsOfClass( node, className ); }
88 wxString GetNodeContent( wxXmlNode* node )
89 { return wxXmlResourceHandler::GetNodeContent( node ); }
90 bool HasParam( const wxString& param )
91 { return wxXmlResourceHandler::HasParam( param ); }
92 wxXmlNode* GetParamNode( const wxString& param )
93 { return wxXmlResourceHandler::GetParamNode( param ); }
94 wxString GetParamValue( const wxString& param )
95 { return wxXmlResourceHandler::GetParamValue( param ); }
96 void AddStyle( const wxString& name, int value )
97 { wxXmlResourceHandler::AddStyle( name, value ); }
98 void AddWindowStyles()
99 { wxXmlResourceHandler::AddWindowStyles(); }
100 int GetStyle( const wxString& param, int defaults )
101 { return wxXmlResourceHandler::GetStyle( param, defaults ); }
102 wxString GetText(const wxString& param, bool translate)
103 { return wxXmlResourceHandler::GetText( param, translate ); }
105 { return wxXmlResourceHandler::GetID(); }
107 { return wxXmlResourceHandler::GetName(); }
108 bool GetBool(const wxString& param, bool defaultv)
109 { return wxXmlResourceHandler::GetBool( param, defaultv ); }
110 long GetLong( const wxString& param, long defaultv)
111 { return wxXmlResourceHandler::GetLong( param, defaultv ); }
112 wxColour GetColour(const wxString& param)
113 { return wxXmlResourceHandler::GetColour( param ); }
114 wxSize GetSize(const wxString& param)
115 { return wxXmlResourceHandler::GetSize( param ); }
116 wxPoint GetPosition(const wxString& param)
117 { return wxXmlResourceHandler::GetPosition( param ); }
118 wxCoord GetDimension(const wxString& param, wxCoord defaultv)
119 { return wxXmlResourceHandler::GetDimension( param, defaultv ); }
120 wxBitmap GetBitmap(const wxString& param,
121 const wxArtClient& defaultArtClient,
123 { return wxXmlResourceHandler::GetBitmap( param, defaultArtClient,
125 wxIcon GetIcon(const wxString& param,
126 const wxArtClient& defaultArtClient,
128 { return wxXmlResourceHandler::GetIcon( param, defaultArtClient,
130 wxFont GetFont(const wxString& param)
131 { return wxXmlResourceHandler::GetFont( param ); }
132 void SetupWindow(wxWindow *wnd)
133 { wxXmlResourceHandler::SetupWindow( wnd ); }
134 void CreateChildren(wxObject *parent, bool this_hnd_only)
135 { wxXmlResourceHandler::CreateChildren( parent, this_hnd_only ); }
136 void CreateChildrenPrivately(wxObject *parent, wxXmlNode *rootnode)
137 { wxXmlResourceHandler::CreateChildrenPrivately( parent, rootnode ); }
138 wxObject *CreateResFromNode(wxXmlNode *node,
139 wxObject *parent, wxObject *instance)
140 { return wxXmlResourceHandler::CreateResFromNode( node, parent,
144 wxFileSystem& GetCurFileSystem();
148 DEF_V_CBACK_BOOL__WXXMLNODE_pure( wxPlXmlResourceHandler, wxXmlResourceHandler,
150 DEF_V_CBACK_WXOBJECT__VOID_pure( wxPlXmlResourceHandler, wxXmlResourceHandler,
153 #if WXPERL_W_VERSION_GE( 2, 5, 1 )
154 WXPLI_IMPLEMENT_DYNAMIC_CLASS( wxPlXmlResourceHandler, wxXmlResourceHandler );
156 WXPLI_IMPLEMENT_DYNAMIC_CLASS( wxPlXmlResourceHandler, wxObject );
163 #include "wx/window.h"
164 #include "cpp/reshnd.h"
166 MODULE=Wx PACKAGE=Wx::PlXmlResourceHandler
168 wxPlXmlResourceHandler*
169 wxPlXmlResourceHandler::new()
171 RETVAL = new wxPlXmlResourceHandler( CLASS );
176 %name{Wx::XmlResourceHandler} class wxPlXmlResourceHandler
178 wxXmlResource* GetResource();
179 wxXmlNode* GetNode();
181 wxObject* GetParent();
182 wxObject* GetInstance();
183 wxWindow* GetParentAsWindow();
184 #if WXPERL_W_VERSION_LE( 2, 5, 2 )
185 wxWindow* GetInstanceAsWindow();
188 bool IsOfClass( wxXmlNode* node, const wxString& className );
189 wxString GetNodeContent( wxXmlNode* node );
190 bool HasParam( const wxString& param );
191 wxXmlNode* GetParamNode( const wxString& param );
192 wxString GetParamValue( const wxString& param );
193 void AddStyle( const wxString& name, int value );
194 void AddWindowStyles();
195 int GetStyle( const wxString& param = wxT("style"), int defaults = 0 );
196 wxString GetText(const wxString& param, bool translate = true );
199 bool GetBool(const wxString& param, bool defaultv = false);
200 long GetLong( const wxString& param, long defaultv = 0);
201 wxColour GetColour(const wxString& param);
202 wxSize GetSize(const wxString& param = wxT("size"));
203 wxPoint GetPosition(const wxString& param = wxT("pos"));
204 wxCoord GetDimension(const wxString& param, wxCoord defaultv = 0);
205 wxBitmap GetBitmap(const wxString& param = wxT("bitmap"),
206 const wxArtClient& defaultArtClient = wxART_OTHER,
207 wxSize size = wxDefaultSize);
208 wxIcon GetIcon(const wxString& param = wxT("icon"),
209 const wxArtClient& defaultArtClient = wxART_OTHER,
210 wxSize size = wxDefaultSize);
211 wxFont GetFont(const wxString& param = wxT("font"));
212 void SetupWindow(wxWindow *wnd);
213 void CreateChildren(wxObject *parent, bool this_hnd_only = false);
214 void CreateChildrenPrivately(wxObject *parent,
215 wxXmlNode *rootnode = NULL);
216 wxObject *CreateResFromNode(wxXmlNode *node,
217 wxObject *parent, wxObject *instance = NULL);
220 #!sub DoCreateResource