Add libwx-perl
[pkg-perl] / deb-src / libwx-perl / libwx-perl-0.96 / ext / xrc / XS / XmlResourceHandler.xsp
1 #############################################################################
2 ## Name:        ext/xrc/XS/XmlResourceHandler.xsp
3 ## Purpose:     XS for Wx::XmlResourceHandler
4 ## Author:      Mattia Barbon
5 ## Modified by:
6 ## Created:     25/07/2003
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 #############################################################################
12
13 %module{Wx};
14
15 %typemap{wxXmlNode*}{simple};
16 %typemap{wxXmlResource*}{simple};
17
18 %file{cpp/reshnd.h};
19 %{
20
21 #include "cpp/v_cback.h"
22
23 #define DEC_V_CBACK_WXOBJECT__VOID_pure( METHOD ) \
24   wxObject* METHOD()
25
26 #define DEF_V_CBACK_WXOBJECT__VOID_pure( CLASS, BASE, METHOD )                \
27   wxObject* CLASS::METHOD()                                                   \
28   {                                                                           \
29     dTHX;                                                                     \
30     if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, #METHOD ) )     \
31     {                                                                         \
32         SV* ret = wxPliVirtualCallback_CallCallback( aTHX_ &m_callback,       \
33                                                      G_SCALAR, NULL );        \
34         wxObject* val = (wxObject*)wxPli_sv_2_object( aTHX_ ret, NULL );      \
35         SvREFCNT_dec( ret );                                                  \
36         return val;                                                           \
37     } else                                                                    \
38         return NULL;                                                          \
39   }
40
41 #define DEC_V_CBACK_BOOL__WXXMLNODE_pure( METHOD ) \
42   bool METHOD( wxXmlNode* )
43
44 #define DEF_V_CBACK_BOOL__WXXMLNODE_pure( CLASS, BASE, METHOD )               \
45   bool CLASS::METHOD( wxXmlNode* param1 )                                     \
46   {                                                                           \
47     dTHX;                                                                     \
48     if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, #METHOD ) )     \
49     {                                                                         \
50         SV* ret = wxPliVirtualCallback_CallCallback( aTHX_ &m_callback,       \
51                                                      G_SCALAR,                \
52                                                      "o", param1,             \
53                                                      "Wx::XmlNode" );         \
54         bool val = SvTRUE( ret );                                             \
55         SvREFCNT_dec( ret );                                                  \
56         return val;                                                           \
57     } else                                                                    \
58         return false;                                                         \
59   }
60
61
62 class wxPlXmlResourceHandler : public wxXmlResourceHandler
63 {
64     WXPLI_DECLARE_DYNAMIC_CLASS( wxPlXmlResourceHandler );
65     WXPLI_DECLARE_V_CBACK();
66 public:
67     wxPlXmlResourceHandler( const char* package )
68         :m_callback( "Wx::XmlResourceHandler" )
69     {
70         m_callback.SetSelf( wxPli_make_object( this, package ), true );
71     }
72
73     DEC_V_CBACK_BOOL__WXXMLNODE_pure( CanHandle );
74     DEC_V_CBACK_WXOBJECT__VOID_pure( DoCreateResource );
75
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; }
84 #endif
85
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 ); }
104     int GetID()
105         { return wxXmlResourceHandler::GetID(); }
106     wxString GetName()
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,
122                        wxSize size)
123         { return wxXmlResourceHandler::GetBitmap( param, defaultArtClient,
124                                                   size ); }
125     wxIcon GetIcon(const wxString& param,
126                    const wxArtClient& defaultArtClient,
127                    wxSize size)
128         { return wxXmlResourceHandler::GetIcon( param, defaultArtClient,
129                                                 size ); }
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,
141                                                           instance ); }
142
143 #if wxUSE_FILESYSTEM
144     wxFileSystem& GetCurFileSystem();
145 #endif
146 };
147
148 DEF_V_CBACK_BOOL__WXXMLNODE_pure( wxPlXmlResourceHandler, wxXmlResourceHandler,
149                                   CanHandle );
150 DEF_V_CBACK_WXOBJECT__VOID_pure( wxPlXmlResourceHandler, wxXmlResourceHandler,
151                                  DoCreateResource );
152
153 #if WXPERL_W_VERSION_GE( 2, 5, 1 )
154 WXPLI_IMPLEMENT_DYNAMIC_CLASS( wxPlXmlResourceHandler, wxXmlResourceHandler );
155 #else
156 WXPLI_IMPLEMENT_DYNAMIC_CLASS( wxPlXmlResourceHandler, wxObject );
157 #endif
158
159 %}
160 %file{-};
161
162 %{
163 #include "wx/window.h"
164 #include "cpp/reshnd.h"
165
166 MODULE=Wx PACKAGE=Wx::PlXmlResourceHandler
167
168 wxPlXmlResourceHandler*
169 wxPlXmlResourceHandler::new()
170   CODE:
171     RETVAL = new wxPlXmlResourceHandler( CLASS );
172   OUTPUT: RETVAL
173
174 %}
175
176 %name{Wx::XmlResourceHandler} class wxPlXmlResourceHandler
177 {
178     wxXmlResource* GetResource();
179     wxXmlNode* GetNode();
180     wxString GetClass();
181     wxObject* GetParent();
182     wxObject* GetInstance();
183     wxWindow* GetParentAsWindow();
184 #if WXPERL_W_VERSION_LE( 2, 5, 2 )
185     wxWindow* GetInstanceAsWindow();
186 #endif
187
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 );
197     int GetID();
198     wxString GetName();
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);
218
219 #!sub CanHandle
220 #!sub DoCreateResource
221 };
222