Add libwx-perl
[pkg-perl] / deb-src / libwx-perl / libwx-perl-0.96 / XS / PlWindow.xsp
1 #############################################################################
2 ## Name:        XS/PlWindow.xsp
3 ## Purpose:     XS++ for Wx::PlWindow
4 ## Author:      Mattia Barbon
5 ## Modified by:
6 ## Created:     23/05/2004
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 #############################################################################
12
13 %module{Wx};
14
15 ## TODO:  Which (if any?) of these should be done also???
16 ##      Destroy
17 ##      DoCaptureMouse
18 ##      DoClientToScreen
19 ##      DoHitTest
20 ##      DoPopupMenu
21 ##      DoReleaseMouse
22 ##      DoScreenToClient
23 ##      DoSetToolTip
24 ##      Fit
25 ##      GetCharHeight
26 ##      GetCharWidth
27 ##      GetClientAreaOrigin
28 ##      GetDefaultItem
29 ##      IsTopLevel
30 ##      SetBackgroundColour
31 ##      SetDefaultItem
32 ##      SetFocus
33 ##      SetFocusFromKbd
34 ##      SetForegroundColour
35 ##      SetSizeHints
36 ##      SetVirtualSizeHints
37 ##      Show
38
39 %typemap{wxPlWindow*}{simple};
40
41 %file{cpp/plwindow.h};
42 %{
43
44 #include "cpp/v_cback.h"
45
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
49
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                \
52     {                                                                        \
53         dTHX;                                                                \
54         if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, #METHOD ) )\
55         {                                                                    \
56             wxAutoSV ret( aTHX_ wxPliCCback( aTHX_ &m_callback, G_SCALAR,    \
57                                              "iiii", p1, p2, p3, p4 ) );     \
58             return CVT;                                                      \
59         } else                                                               \
60             CALLBASE;                                                        \
61     }
62
63 // wxSize METH()
64 #define DEC_V_CBACK_WXSIZE__VOID( METHOD ) \
65     DEC_V_CBACK_ANY__VOID_( wxSize, METHOD, wxPli_NOCONST )
66
67 #define DEC_V_CBACK_WXSIZE__VOID_const( METHOD ) \
68     DEC_V_CBACK_ANY__VOID_( wxSize, METHOD, wxPli_CONST )
69
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 )
72
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 )
75
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 )
78
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 )
82
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 )
85
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 )
88
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 )
91
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 )
94
95 class wxPlWindow : public wxWindow {
96     WXPLI_DECLARE_DYNAMIC_CLASS( wxPlWindow );
97     WXPLI_DECLARE_V_CBACK();
98 public:
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& );
103
104     virtual ~wxPlWindow();
105
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 ); }
110
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 );
115 #endif
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 );
122 #endif
123 };
124
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 );
129 #endif
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 );
136 #endif
137
138 WXPLI_IMPLEMENT_DYNAMIC_CLASS( wxPlWindow, wxWindow );
139
140 wxPlWindow::~wxPlWindow()
141 {
142     dTHX;
143     if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, "DoDestroy" ) )
144     {
145         // Call DoDestroy if it exists
146         wxPliVirtualCallback_CallCallback( aTHX_ &m_callback, 0, "" );
147     }
148 }
149
150 %}
151 %file{-};
152
153 #include "cpp/plwindow.h"
154
155 %{
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
161 %}
162
163 %name{Wx::PlWindow} class wxPlWindow {
164     %name{newDefault} wxPlWindow()
165         %code{% RETVAL = new wxPlWindow( CLASS );
166                 // wxPli_create_evthandler( aTHX_ RETVAL, CLASS );
167              %};
168     %name{newFull} wxPlWindow(wxWindow *parent,
169                               wxWindowID id = wxID_ANY,
170                               const wxPoint& pos = wxDefaultPosition,
171                               const wxSize& size = wxDefaultSize,
172                               long style = 0,
173                               const wxString& name = wxEmptyString)
174         %code{% RETVAL = new wxPlWindow( CLASS, parent, id, pos, size,
175                                          style, name );
176                 // wxPli_create_evthandler( aTHX_ RETVAL, CLASS );
177              %};
178
179     bool Create(wxWindow *parent,
180                 wxWindowID id = wxID_ANY,
181                 const wxPoint& pos = wxDefaultPosition,
182                 const wxSize& size = wxDefaultSize,
183                 long style = 0,
184                 const wxString& name = wxEmptyString);
185
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;
192 #endif
193     bool AcceptsFocusFromKeyboard() const;
194
195 #if WXPERL_W_VERSION_GE( 2, 5, 1 )
196     wxSize GetMaxSize() const;
197     wxSize GetMinSize() const;
198 #endif
199 };
200
201 %{
202 void
203 new( ... )
204   PPCODE:
205     BEGIN_OVERLOAD()
206         MATCH_VOIDM_REDISP( newDefault )
207         MATCH_ANY_REDISP( newFull )
208     END_OVERLOAD( "Wx::PlWindow::new" )
209 %}
210
211 %{
212 #undef GetMaxSize
213 #undef GetMinSize
214 #undef AcceptsFocus
215 #undef AcceptsFocusRecursively
216 #undef AcceptsFocusFromKeyboard
217 %}