Add libwx-perl
[pkg-perl] / deb-src / libwx-perl / libwx-perl-0.96 / ext / calendar / XS / DatePickerCtrl.xsp
1 #############################################################################
2 ## Name:        ext/calendar/XS/DatePickerCtrl.xsp
3 ## Purpose:     XS++ for Wx::DatePickerCtrl
4 ## Author:      Mattia Barbon
5 ## Modified by:
6 ## Created:     18/03/2005
7 ## RCS-ID:      $Id: DatePickerCtrl.xsp 2395 2008-05-19 20:39:15Z mbarbon $
8 ## Copyright:   (c) 2005-2008 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 #if WXPERL_W_VERSION_GE( 2, 5, 4 )
14
15 #include <wx/event.h>
16 #include <wx/datectrl.h>
17 #include <wx/calctrl.h>
18 #include "cpp/datectrl.h"
19
20 %typemap{wxCalendarCtrl*}{simple};
21 %typemap{wxDatePickerCtrl*}{simple};
22 %typemap{wxDateTime}{reference};
23
24 %module{Wx};
25 %file{cpp/datectrl.h};
26 %{
27
28 #define wxDP_STYLE wxDP_DEFAULT|wxDP_SHOWCENTURY
29
30 double datepicker_constant( const char* name, int arg )
31 {
32     // !package: Wx
33     // !parser: sub { $_[0] =~ m<^\s*r\w*\(\s*(\w+)\s*\);\s*(?://(.*))?$> }
34     // !tag: datepicker
35 #define r( n ) \
36     if( strEQ( name, #n ) ) \
37         return n;
38
39     WX_PL_CONSTANT_INIT();
40
41     switch( fl )
42     {
43     case 'D':
44         r( wxDP_DEFAULT );
45         r( wxDP_SPIN );
46         r( wxDP_DROPDOWN );
47         r( wxDP_SHOWCENTURY );
48         r( wxDP_ALLOWNONE );
49         break;
50     }
51 #undef r
52
53     WX_PL_CONSTANT_CLEANUP();
54 }
55
56 wxPlConstants datepicker_module( &datepicker_constant );
57
58 %}
59 %file{-};
60
61 %name{Wx::DatePickerCtrl} class wxDatePickerCtrl
62 {
63     %name{newDefault} wxDatePickerCtrl()
64         %code{% RETVAL = new wxDatePickerCtrl();
65                 wxPli_create_evthandler( aTHX_ RETVAL, CLASS );
66              %};
67     %name{newFull} wxDatePickerCtrl(wxWindow *parent,
68                                     wxWindowID id = wxID_ANY,
69                                     const wxDateTime& date =
70                                         wxDefaultDateTimePtr,
71                                     const wxPoint& pos = wxDefaultPosition,
72                                     const wxSize& size = wxDefaultSize,
73                                     long style = wxDP_STYLE,
74                                     const wxValidator& validator =
75                                         wxDefaultValidatorPtr,
76                                     const wxString& name =
77                                         wxDatePickerCtrlNameStr)
78         %code{% RETVAL = new wxDatePickerCtrl( parent, id, *date, pos, size,
79                                                style, *validator, name );
80                 wxPli_create_evthandler( aTHX_ RETVAL, CLASS );
81              %};
82
83     bool Create(wxWindow *parent,
84                 wxWindowID id = wxID_ANY,
85                 const wxDateTime& dt = wxDefaultDateTimePtr,
86                 const wxPoint& pos = wxDefaultPosition,
87                 const wxSize& size = wxDefaultSize,
88                 long style = wxDP_STYLE,
89                 const wxValidator& validator = wxDefaultValidatorPtr,
90                 const wxString& name = wxDatePickerCtrlNameStr);
91
92     void SetValue(const wxDateTime& dt);
93     wxDateTime GetValue() const;
94
95     void SetRange(const wxDateTime& dt1, const wxDateTime& dt2);
96
97 #if !defined(wxHAS_NATIVE_DATEPICKCTRL)
98 ##  bool SetFormat(const wxChar* format); // documented but not defined...
99     #if !defined(wxHAS_NATIVE_CALENDARCTRL)
100     wxCalendarCtrl* GetCalendar();
101     #endif
102 #endif
103 };
104
105 %{
106
107 void
108 new( ... )
109   PPCODE:
110     BEGIN_OVERLOAD()
111         MATCH_VOIDM_REDISP( newDefault )
112         MATCH_ANY_REDISP( newFull )
113     END_OVERLOAD( "Wx::DatePickerCtrl::new" )
114
115 void
116 wxDatePickerCtrl::GetRange()
117   PPCODE:
118     wxDateTime dt1, dt2;
119     bool ok = THIS->GetRange( &dt1, &dt2 );
120
121     if( !ok )
122         return;
123
124     EXTEND( SP, 2 );
125     PUSHs( wxPli_non_object_2_sv( aTHX_ sv_newmortal(), new wxDateTime( dt1 ),
126                                   "Wx::DateTime" ) );
127     PUSHs( wxPli_non_object_2_sv( aTHX_ sv_newmortal(), new wxDateTime( dt2 ),
128                                   "Wx::DateTime" ) );
129
130 %}
131
132 #endif