1 #############################################################################
2 ## Name: XS/PlWindow.xsp
3 ## Purpose: XS++ for Wx::PlWindow
4 ## Author: Mattia Barbon
7 ## RCS-ID: $Id: PlWindow.xsp 2172 2007-08-17 22:56:36Z mbarbon $
8 ## Copyright: (c) 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 ## TODO: Which (if any?) of these should be done also???
27 ## GetClientAreaOrigin
30 ## SetBackgroundColour
34 ## SetForegroundColour
36 ## SetVirtualSizeHints
39 %typemap{wxPlWindow*}{simple};
41 %file{cpp/plwindow.h};
44 #include "cpp/v_cback.h"
46 // ANY METH(int, int, int, int)
47 #define DEC_V_CBACK_ANY__INT_INT_INT_INT_( RET, METHOD, CONST ) \
48 RET METHOD(int, int, int, int) CONST
50 #define DEF_V_CBACK_ANY__INT_INT_INT_INT_( RET, CVT, CLASS, CALLBASE, METHOD, CONST ) \
51 RET CLASS::METHOD( int p1, int p2, int p3, int p4 ) CONST \
54 if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, #METHOD ) )\
56 wxAutoSV ret( aTHX_ wxPliCCback( aTHX_ &m_callback, G_SCALAR, \
57 "iiii", p1, p2, p3, p4 ) ); \
64 #define DEC_V_CBACK_WXSIZE__VOID( METHOD ) \
65 DEC_V_CBACK_ANY__VOID_( wxSize, METHOD, wxPli_NOCONST )
67 #define DEC_V_CBACK_WXSIZE__VOID_const( METHOD ) \
68 DEC_V_CBACK_ANY__VOID_( wxSize, METHOD, wxPli_CONST )
70 #define DEF_V_CBACK_WXSIZE__VOID( CLASS, BASE, METHOD ) \
71 DEF_V_CBACK_ANY__VOID_( wxSize, wxPli_sv_2_wxsize( aTHX_ ret ), CLASS, return BASE::METHOD(), METHOD, wxPli_NOCONST )
73 #define DEF_V_CBACK_WXSIZE__VOID_pure( CLASS, BASE, METHOD ) \
74 DEF_V_CBACK_ANY__VOID_( wxSize, wxPli_sv_2_wxsize( aTHX_ ret ), CLASS, return wxSize(), METHOD, wxPli_NOCONST )
76 #define DEF_V_CBACK_WXSIZE__VOID_const( CLASS, BASE, METHOD ) \
77 DEF_V_CBACK_ANY__VOID_( wxSize, wxPli_sv_2_wxsize( aTHX_ ret ), CLASS, return BASE::METHOD(), METHOD, wxPli_CONST )
79 // void METH(int, int, int, int)
80 #define DEC_V_CBACK_VOID__INT_INT_INT_INT( METHOD ) \
81 DEC_V_CBACK_ANY__INT_INT_INT_INT_( void, METHOD, wxPli_NOCONST )
83 #define DEC_V_CBACK_VOID__INT_INT_INT_INT_const( METHOD ) \
84 DEC_V_CBACK_ANY__INT_INT_INT_INT_( void, METHOD, wxPli_CONST )
86 #define DEF_V_CBACK_VOID__INT_INT_INT_INT( CLASS, BASE, METHOD ) \
87 DEF_V_CBACK_ANY__INT_INT_INT_INT_( void, wxPli_VOID, CLASS, BASE::METHOD(p1, p2, p3, p4), METHOD, wxPli_NOCONST )
89 #define DEF_V_CBACK_VOID__INT_INT_INT_INT_pure( CLASS, BASE, METHOD ) \
90 DEF_V_CBACK_ANY__INT_INT_INT_INT_( void, wxPli_VOID, CLASS, return, METHOD, wxPli_NOCONST )
92 #define DEF_V_CBACK_VOID__INT_INT_INT_INT_const( CLASS, BASE, METHOD ) \
93 DEF_V_CBACK_ANY__INT_INT_INT_INT_( void, wxPli_VOID, CLASS, BASE::METHOD(p1, p2, p3, p4), METHOD, wxPli_CONST )
95 class wxPlWindow : public wxWindow {
96 WXPLI_DECLARE_DYNAMIC_CLASS( wxPlWindow );
97 WXPLI_DECLARE_V_CBACK();
99 WXPLI_DEFAULT_CONSTRUCTOR( wxPlWindow, "Wx::Window", true );
100 WXPLI_CONSTRUCTOR_6( wxPlWindow, "Wx::Window", true,
101 wxWindow*, wxWindowID, const wxPoint&,
102 const wxSize&, long, const wxString& );
104 virtual ~wxPlWindow();
106 wxSize base_DoGetBestSize() const { return wxWindow::DoGetBestSize(); }
107 void base_DoMoveWindow( int x, int y, int w, int h )
108 { wxWindow::DoMoveWindow(x, y, w, h); }
109 bool base_Enable( bool enable ) { return wxWindow::Enable( enable ); }
111 DEC_V_CBACK_WXSIZE__VOID_const( DoGetBestSize );
112 DEC_V_CBACK_BOOL__VOID_const( AcceptsFocus );
113 #if WXPERL_W_VERSION_GE( 2, 9, 0 )
114 DEC_V_CBACK_BOOL__VOID_const( AcceptsFocusRecursively );
116 DEC_V_CBACK_BOOL__VOID_const( AcceptsFocusFromKeyboard );
117 DEC_V_CBACK_VOID__INT_INT_INT_INT( DoMoveWindow );
118 DEC_V_CBACK_BOOL__BOOL( Enable );
119 #if WXPERL_W_VERSION_GE( 2, 5, 1 )
120 DEC_V_CBACK_WXSIZE__VOID_const( GetMinSize );
121 DEC_V_CBACK_WXSIZE__VOID_const( GetMaxSize );
125 DEF_V_CBACK_WXSIZE__VOID_const( wxPlWindow, wxWindow, DoGetBestSize );
126 DEF_V_CBACK_BOOL__VOID_const( wxPlWindow, wxWindow, AcceptsFocus );
127 #if WXPERL_W_VERSION_GE( 2, 9, 0 )
128 DEF_V_CBACK_BOOL__VOID_const( wxPlWindow, wxWindow, AcceptsFocusRecursively );
130 DEF_V_CBACK_BOOL__VOID_const( wxPlWindow, wxWindow, AcceptsFocusFromKeyboard );
131 DEF_V_CBACK_VOID__INT_INT_INT_INT( wxPlWindow, wxWindow, DoMoveWindow );
132 DEF_V_CBACK_BOOL__BOOL( wxPlWindow, wxWindow, Enable );
133 #if WXPERL_W_VERSION_GE( 2, 5, 1 )
134 DEF_V_CBACK_WXSIZE__VOID_const( wxPlWindow, wxWindow, GetMinSize );
135 DEF_V_CBACK_WXSIZE__VOID_const( wxPlWindow, wxWindow, GetMaxSize );
138 WXPLI_IMPLEMENT_DYNAMIC_CLASS( wxPlWindow, wxWindow );
140 wxPlWindow::~wxPlWindow()
143 if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, "DoDestroy" ) )
145 // Call DoDestroy if it exists
146 wxPliVirtualCallback_CallCallback( aTHX_ &m_callback, 0, "" );
153 #include "cpp/plwindow.h"
156 #define GetMaxSize wxWindow::GetMaxSize
157 #define GetMinSize wxWindow::GetMinSize
158 #define AcceptsFocus wxWindow::AcceptsFocus
159 #define AcceptsFocusRecursively wxWindow::AcceptsFocusRecursively
160 #define AcceptsFocusFromKeyboard wxWindow::AcceptsFocusFromKeyboard
163 %name{Wx::PlWindow} class wxPlWindow {
164 %name{newDefault} wxPlWindow()
165 %code{% RETVAL = new wxPlWindow( CLASS );
166 // wxPli_create_evthandler( aTHX_ RETVAL, CLASS );
168 %name{newFull} wxPlWindow(wxWindow *parent,
169 wxWindowID id = wxID_ANY,
170 const wxPoint& pos = wxDefaultPosition,
171 const wxSize& size = wxDefaultSize,
173 const wxString& name = wxEmptyString)
174 %code{% RETVAL = new wxPlWindow( CLASS, parent, id, pos, size,
176 // wxPli_create_evthandler( aTHX_ RETVAL, CLASS );
179 bool Create(wxWindow *parent,
180 wxWindowID id = wxID_ANY,
181 const wxPoint& pos = wxDefaultPosition,
182 const wxSize& size = wxDefaultSize,
184 const wxString& name = wxEmptyString);
186 %name{DoGetBestSize} wxSize base_DoGetBestSize() const;
187 %name{DoMoveWindow} void base_DoMoveWindow( int x, int y, int w, int h );
188 %name{Enable} bool base_Enable( bool enable );
189 bool AcceptsFocus() const;
190 #if WXPERL_W_VERSION_GE( 2, 9, 0 )
191 bool AcceptsFocusRecursively() const;
193 bool AcceptsFocusFromKeyboard() const;
195 #if WXPERL_W_VERSION_GE( 2, 5, 1 )
196 wxSize GetMaxSize() const;
197 wxSize GetMinSize() const;
206 MATCH_VOIDM_REDISP( newDefault )
207 MATCH_ANY_REDISP( newFull )
208 END_OVERLOAD( "Wx::PlWindow::new" )
215 #undef AcceptsFocusRecursively
216 #undef AcceptsFocusFromKeyboard