Add libwx-perl
[pkg-perl] / deb-src / libwx-perl / libwx-perl-0.96 / cpp / validators.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        cpp/validators.h
3 // Purpose:     c++ wrapper for wxValidator, and wxPlValidator
4 // Author:      Mattia Barbon
5 // Modified by:
6 // Created:     29/10/2000
7 // RCS-ID:      $Id: validators.h 2057 2007-06-18 23:03:00Z mbarbon $
8 // Copyright:   (c) 2000-2002, 2004 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 #ifndef _WXPERL_VALIDATORS_H
14 #define _WXPERL_VALIDATORS_H
15
16 class wxPlValidator:public wxValidator
17 {
18     WXPLI_DECLARE_DYNAMIC_CLASS( wxPlValidator );
19     WXPLI_DECLARE_V_CBACK();
20 public:
21     wxPlValidator( const char* package );
22
23     virtual wxObject* Clone() const;
24     virtual bool Validate( wxWindow* );
25
26     DEC_V_CBACK_BOOL__VOID( TransferToWindow );
27     DEC_V_CBACK_BOOL__VOID( TransferFromWindow );
28 };
29
30 DEF_V_CBACK_BOOL__VOID( wxPlValidator, wxValidator, TransferToWindow );
31 DEF_V_CBACK_BOOL__VOID( wxPlValidator, wxValidator, TransferFromWindow );
32
33 inline wxPlValidator::wxPlValidator( const char* package )
34     :m_callback( "Wx::PlValidator" )
35
36     m_callback.SetSelf( wxPli_make_object( this, package ), true );
37 }
38
39 wxObject* wxPlValidator::Clone() const
40 {
41     dTHX;
42     wxPlValidator* self = (wxPlValidator*)this;
43
44     if( wxPliVirtualCallback_FindCallback( aTHX_ &self->m_callback, "Clone" ) )
45     {
46         SV* ret = wxPliVirtualCallback_CallCallback
47             ( aTHX_ &self->m_callback, G_SCALAR, NULL );
48         wxValidator* clone =
49             (wxValidator*)wxPli_sv_2_object( aTHX_ ret, "Wx::Validator" );
50         SvREFCNT_dec( ret );
51         
52         delete self;
53         return clone;
54     }
55
56     return 0;
57 }
58
59 bool wxPlValidator::Validate( wxWindow* parent )
60 {
61     dTHX;
62     if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, "Validate" ) )
63     {
64         SV* ret = wxPliVirtualCallback_CallCallback
65             ( aTHX_ &m_callback, G_SCALAR, "s", 
66               wxPli_object_2_sv( aTHX_ sv_newmortal(), parent ) );
67         bool val = SvTRUE( ret );
68         SvREFCNT_dec( ret );
69
70         return val;
71     }
72     else
73         return wxValidator::Validate( parent );
74 }
75
76 WXPLI_IMPLEMENT_DYNAMIC_CLASS( wxPlValidator, wxValidator );
77
78 #endif // _WXPERL_VALIDATORS_H
79
80 // Local variables: //
81 // mode: c++ //
82 // End: //