Add libwx-perl
[pkg-perl] / deb-src / libwx-perl / libwx-perl-0.96 / XS / ComboPopup.xsp
1 #############################################################################
2 ## Name:        XS/ComboPopup.xsp
3 ## Purpose:     XS++ for Wx::ComboPopup
4 ## Author:      Mattia Barbon
5 ## Modified by:
6 ## Created:     12/08/2007
7 ## RCS-ID:      $Id: ComboPopup.xsp 2523 2009-02-04 23:50:57Z mbarbon $
8 ## Copyright:   (c) 2007, 2009 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 #if WXPERL_W_VERSION_GE( 2, 7, 2 )
16
17 %typemap{wxComboCtrlBase*}{simple};
18 %typemap{wxComboCtrl*}{simple};
19 %typemap{wxComboPopup*}{simple};
20 %typemap{wxPlComboPopup*}{simple};
21
22 %file{cpp/combopopup.h};
23 %{
24
25 #include <wx/combo.h>
26 #include "cpp/v_cback.h"
27
28 // wxSize METH( int, int, int )
29 #define DEC_V_CBACK_WXSIZE__INT_INT_INT( METHOD ) \
30     DEC_V_CBACK_ANY__INT_INT_INT_( wxSize, METHOD, wxPli_NOCONST )
31
32 #define DEC_V_CBACK_WXSIZE__INT_INT_INT_const( METHOD ) \
33     DEC_V_CBACK_ANY__INT_INT_INT_( wxSize, METHOD, wxPli_CONST )
34
35 #define DEF_V_CBACK_WXSIZE__INT_INT_INT( CLASS, BASE, METHOD ) \
36     DEF_V_CBACK_ANY__INT_INT_INT_( wxSize, wxPli_sv_2_wxsize( aTHX_ ret ), CLASS, return BASE::METHOD(p1,p2,p3), METHOD, wxPli_NOCONST )
37
38 #define DEF_V_CBACK_WXSIZE__INT_INT_INT_pure( CLASS, BASE, METHOD ) \
39     DEF_V_CBACK_ANY__INT_INT_INT_( wxSize, wxPli_sv_2_wxsize( aTHX_ ret ), CLASS, return wxSize(), METHOD, wxPli_NOCONST )
40
41 #define DEF_V_CBACK_WXSIZE__INT_INT_INT_const( CLASS, BASE, METHOD ) \
42     DEF_V_CBACK_ANY__INT_INT_INT_( wxSize, wxPli_sv_2_wxsize( aTHX_ ret ), CLASS, return BASE::METHOD(p1,p2,p3), METHOD, wxPli_CONST )
43
44 // void METH(wxDC&, const wxRect&)
45 #define DEC_V_CBACK_VOID__WXDC_WXRECT( METHOD ) \
46     void METHOD( wxDC& p1, const wxRect& p2 )
47
48 #define DEF_V_CBACK_VOID__WXDC_WXRECT( CLASS, BASE, METHOD )                 \
49     void CLASS::METHOD( wxDC& p1, const wxRect& p2 )                         \
50     {                                                                        \
51         dTHX;                                                                \
52         if( wxPliFCback( aTHX_ &m_callback, #METHOD ) )                      \
53         {                                                                    \
54             wxAutoSV ret( aTHX_ wxPliCCback( aTHX_ &m_callback,              \
55                                              G_SCALAR|G_DISCARD,             \
56                                              "QoL", &p1,                     \
57                                              new wxRect( p2 ), "Wx::Rect") );\
58             return;                                                          \
59         } else                                                               \
60             return;                                                          \
61     }
62 // void METH(wxKeyEvent&)
63 #define DEC_V_CBACK_VOID__WXKEYEVENT( METHOD ) \
64     DEC_V_CBACK_ANY__WXKEYEVENT_( void, METHOD, wxPli_NOCONST )
65
66 #define DEF_V_CBACK_VOID__WXKEYEVENT( CLASS, BASE, METHOD ) \
67     DEF_V_CBACK_ANY__WXKEYEVENT_( void, ;, CLASS, BASE::METHOD(p1), METHOD, wxPli_NOCONST )
68
69 class wxPlComboPopup : public wxComboPopup {
70 //    WXPLI_DECLARE_DYNAMIC_CLASS( wxPlComboPopup );
71     WXPLI_DECLARE_V_CBACK();
72 public:
73     WXPLI_DEFAULT_CONSTRUCTOR( wxPlComboPopup, "Wx::ComboPopup", true );
74
75     void base_OnPopup()
76         { wxComboPopup::OnPopup(); }
77     void base_OnDismiss()
78         { wxComboPopup::OnDismiss(); }
79     void base_SetStringValue( const wxString& value )
80         { wxComboPopup::SetStringValue( value ); }
81     void base_PaintComboControl( wxDC& dc, const wxRect& rect )
82         { wxComboPopup::PaintComboControl( dc, rect ); }
83     void base_OnComboKeyEvent( wxKeyEvent& event )
84         { wxComboPopup::OnComboKeyEvent( event ); }
85     void base_OnComboDoubleClick()
86         { wxComboPopup::OnComboDoubleClick(); }
87     wxSize base_GetAdjustedSize( int minWidth, int prefHeight, int maxHeight )
88         { return wxComboPopup::GetAdjustedSize( minWidth, prefHeight,
89                                                 maxHeight ); }
90     bool base_LazyCreate()
91         { return wxComboPopup::LazyCreate(); }
92
93     wxComboCtrlBase* GetComboCtrl() { return m_combo; }
94
95     DEC_V_CBACK_VOID__VOID( Init );
96     DEC_V_CBACK_BOOL__WXWINDOW( Create );
97     DEC_V_CBACK_WXWINDOW__VOID( GetControl );
98     DEC_V_CBACK_VOID__VOID( OnPopup );
99     DEC_V_CBACK_VOID__VOID( OnDismiss );
100     DEC_V_CBACK_VOID__WXSTRING( SetStringValue );
101     DEC_V_CBACK_WXSTRING__VOID_const( GetStringValue );
102     DEC_V_CBACK_VOID__WXDC_WXRECT( PaintComboControl );
103     DEC_V_CBACK_VOID__WXKEYEVENT( OnComboKeyEvent );
104     DEC_V_CBACK_VOID__VOID( OnComboDoubleClick );
105     DEC_V_CBACK_WXSIZE__INT_INT_INT( GetAdjustedSize );
106     DEC_V_CBACK_BOOL__VOID( LazyCreate );
107 };
108
109 DEF_V_CBACK_VOID__VOID( wxPlComboPopup, wxComboPopup, Init );
110 DEF_V_CBACK_BOOL__WXWINDOW_pure( wxPlComboPopup, wxComboPopup, Create );
111 DEF_V_CBACK_WXWINDOW__VOID_pure( wxPlComboPopup, wxComboPopup, GetControl );
112 DEF_V_CBACK_VOID__VOID( wxPlComboPopup, wxComboPopup, OnPopup );
113 DEF_V_CBACK_VOID__VOID( wxPlComboPopup, wxComboPopup, OnDismiss );
114 DEF_V_CBACK_VOID__WXSTRING( wxPlComboPopup, wxComboPopup, SetStringValue );
115 DEF_V_CBACK_WXSTRING__VOID_const_pure( wxPlComboPopup, wxComboPopup, GetStringValue );
116 DEF_V_CBACK_VOID__WXDC_WXRECT( wxPlComboPopup, wxComboPopup, PaintComboControl );
117 DEF_V_CBACK_VOID__WXKEYEVENT( wxPlComboPopup, wxComboPopup, OnComboKeyEvent );
118 DEF_V_CBACK_VOID__VOID( wxPlComboPopup, wxComboPopup, OnComboDoubleClick );
119 DEF_V_CBACK_WXSIZE__INT_INT_INT( wxPlComboPopup, wxComboPopup, GetAdjustedSize );
120 DEF_V_CBACK_BOOL__VOID( wxPlComboPopup, wxComboPopup, LazyCreate );
121
122 %}
123 %file{-};
124
125 #include "cpp/combopopup.h"
126
127 %name{Wx::ComboPopup} class wxPlComboPopup {
128     wxPlComboPopup()
129         %code{% RETVAL = new wxPlComboPopup( CLASS ); %};
130
131     %name{OnPopup} void base_OnPopup();
132     %name{OnDismiss} void base_OnDismiss();
133     %name{SetStringValue} void base_SetStringValue( const wxString& value );
134     %name{PaintComboControl} void base_PaintComboControl( wxDC& dc, const wxRect& rect );
135     %name{OnComboKeyEvent} void base_OnComboKeyEvent( wxKeyEvent& event );
136     %name{OnComboDoubleClick} void base_OnComboDoubleClick();
137     %name{GetAdjustedSize} wxSize base_GetAdjustedSize( int minWidth, int prefHeight, int maxHeight );
138     %name{LazyCreate} bool base_LazyCreate();
139
140     void Dismiss();
141     bool IsCreated() const;
142
143     wxComboCtrlBase* GetComboCtrl();
144
145 #!sub Create
146 #!sub GetControl
147 #!sub GetStringValue
148 #!sub Init
149 };
150
151 #endif