Add libwx-perl
[pkg-perl] / deb-src / libwx-perl / libwx-perl-0.96 / cpp / plwindow.h
1
2
3
4 #include "cpp/v_cback.h"
5
6 // ANY METH(int, int, int, int)
7 #define DEC_V_CBACK_ANY__INT_INT_INT_INT_( RET, METHOD, CONST ) \
8     RET METHOD(int, int, int, int) CONST
9
10 #define DEF_V_CBACK_ANY__INT_INT_INT_INT_( RET, CVT, CLASS, CALLBASE, METHOD, CONST ) \
11     RET CLASS::METHOD( int p1, int p2, int p3, int p4 ) CONST                \
12     {                                                                        \
13         dTHX;                                                                \
14         if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, #METHOD ) )\
15         {                                                                    \
16             wxAutoSV ret( aTHX_ wxPliCCback( aTHX_ &m_callback, G_SCALAR,    \
17                                              "iiii", p1, p2, p3, p4 ) );     \
18             return CVT;                                                      \
19         } else                                                               \
20             CALLBASE;                                                        \
21     }
22
23 // wxSize METH()
24 #define DEC_V_CBACK_WXSIZE__VOID( METHOD ) \
25     DEC_V_CBACK_ANY__VOID_( wxSize, METHOD, wxPli_NOCONST )
26
27 #define DEC_V_CBACK_WXSIZE__VOID_const( METHOD ) \
28     DEC_V_CBACK_ANY__VOID_( wxSize, METHOD, wxPli_CONST )
29
30 #define DEF_V_CBACK_WXSIZE__VOID( CLASS, BASE, METHOD ) \
31     DEF_V_CBACK_ANY__VOID_( wxSize, wxPli_sv_2_wxsize( aTHX_ ret ), CLASS, return BASE::METHOD(), METHOD, wxPli_NOCONST )
32
33 #define DEF_V_CBACK_WXSIZE__VOID_pure( CLASS, BASE, METHOD ) \
34     DEF_V_CBACK_ANY__VOID_( wxSize, wxPli_sv_2_wxsize( aTHX_ ret ), CLASS, return wxSize(), METHOD, wxPli_NOCONST )
35
36 #define DEF_V_CBACK_WXSIZE__VOID_const( CLASS, BASE, METHOD ) \
37     DEF_V_CBACK_ANY__VOID_( wxSize, wxPli_sv_2_wxsize( aTHX_ ret ), CLASS, return BASE::METHOD(), METHOD, wxPli_CONST )
38
39 // void METH(int, int, int, int)
40 #define DEC_V_CBACK_VOID__INT_INT_INT_INT( METHOD ) \
41     DEC_V_CBACK_ANY__INT_INT_INT_INT_( void, METHOD, wxPli_NOCONST )
42
43 #define DEC_V_CBACK_VOID__INT_INT_INT_INT_const( METHOD ) \
44     DEC_V_CBACK_ANY__INT_INT_INT_INT_( void, METHOD, wxPli_CONST )
45
46 #define DEF_V_CBACK_VOID__INT_INT_INT_INT( CLASS, BASE, METHOD ) \
47     DEF_V_CBACK_ANY__INT_INT_INT_INT_( void, wxPli_VOID, CLASS, BASE::METHOD(p1, p2, p3, p4), METHOD, wxPli_NOCONST )
48
49 #define DEF_V_CBACK_VOID__INT_INT_INT_INT_pure( CLASS, BASE, METHOD ) \
50     DEF_V_CBACK_ANY__INT_INT_INT_INT_( void, wxPli_VOID, CLASS, return, METHOD, wxPli_NOCONST )
51
52 #define DEF_V_CBACK_VOID__INT_INT_INT_INT_const( CLASS, BASE, METHOD ) \
53     DEF_V_CBACK_ANY__INT_INT_INT_INT_( void, wxPli_VOID, CLASS, BASE::METHOD(p1, p2, p3, p4), METHOD, wxPli_CONST )
54
55 class wxPlWindow : public wxWindow {
56     WXPLI_DECLARE_DYNAMIC_CLASS( wxPlWindow );
57     WXPLI_DECLARE_V_CBACK();
58 public:
59     WXPLI_DEFAULT_CONSTRUCTOR( wxPlWindow, "Wx::Window", true );
60     WXPLI_CONSTRUCTOR_6( wxPlWindow, "Wx::Window", true,
61                          wxWindow*, wxWindowID, const wxPoint&,
62                          const wxSize&, long, const wxString& );
63
64     virtual ~wxPlWindow();
65
66     wxSize base_DoGetBestSize() const { return wxWindow::DoGetBestSize(); }
67     void base_DoMoveWindow( int x, int y, int w, int h )
68         { wxWindow::DoMoveWindow(x, y, w, h); }
69     bool base_Enable( bool enable ) { return wxWindow::Enable( enable ); }
70
71     DEC_V_CBACK_WXSIZE__VOID_const( DoGetBestSize );
72     DEC_V_CBACK_BOOL__VOID_const( AcceptsFocus );
73 #if WXPERL_W_VERSION_GE( 2, 9, 0 )
74     DEC_V_CBACK_BOOL__VOID_const( AcceptsFocusRecursively );
75 #endif
76     DEC_V_CBACK_BOOL__VOID_const( AcceptsFocusFromKeyboard );
77     DEC_V_CBACK_VOID__INT_INT_INT_INT( DoMoveWindow );
78     DEC_V_CBACK_BOOL__BOOL( Enable );
79 #if WXPERL_W_VERSION_GE( 2, 5, 1 )
80     DEC_V_CBACK_WXSIZE__VOID_const( GetMinSize );
81     DEC_V_CBACK_WXSIZE__VOID_const( GetMaxSize );
82 #endif
83 };
84
85 DEF_V_CBACK_WXSIZE__VOID_const( wxPlWindow, wxWindow, DoGetBestSize );
86 DEF_V_CBACK_BOOL__VOID_const( wxPlWindow, wxWindow, AcceptsFocus );
87 #if WXPERL_W_VERSION_GE( 2, 9, 0 )
88 DEF_V_CBACK_BOOL__VOID_const( wxPlWindow, wxWindow, AcceptsFocusRecursively );
89 #endif
90 DEF_V_CBACK_BOOL__VOID_const( wxPlWindow, wxWindow, AcceptsFocusFromKeyboard );
91 DEF_V_CBACK_VOID__INT_INT_INT_INT( wxPlWindow, wxWindow, DoMoveWindow );
92 DEF_V_CBACK_BOOL__BOOL( wxPlWindow, wxWindow, Enable );
93 #if WXPERL_W_VERSION_GE( 2, 5, 1 )
94 DEF_V_CBACK_WXSIZE__VOID_const( wxPlWindow, wxWindow, GetMinSize );
95 DEF_V_CBACK_WXSIZE__VOID_const( wxPlWindow, wxWindow, GetMaxSize );
96 #endif
97
98 WXPLI_IMPLEMENT_DYNAMIC_CLASS( wxPlWindow, wxWindow );
99
100 wxPlWindow::~wxPlWindow()
101 {
102     dTHX;
103     if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, "DoDestroy" ) )
104     {
105         // Call DoDestroy if it exists
106         wxPliVirtualCallback_CallCallback( aTHX_ &m_callback, 0, "" );
107     }
108 }
109
110
111