#############################################################################
## Name: ext/calendar/XS/CalendarCtrl.xsp
## Purpose: XS++ for Wx::CalenderCtrl
## Author: Mattia Barbon
## Modified by:
## Created: 5/10/2002
## RCS-ID: $Id: CalendarCtrl.xsp,v 1.4 2003/05/05 20:38:41 mbarbon Exp $
## Copyright: (c) 2002-2003 Mattia Barbon
## Licence: This program is free software; you can redistribute it and/or
## modify it under the same terms as Perl itself
#############################################################################
#include <wx/event.h>
#include <wx/calctrl.h>
#include "cpp/calendar.h"
%module{Wx};
%file{cpp/calendar.h};
%{
WXPLI_DECLARE_CLASS_7( CalendarCtrl, TRUE,
wxWindow*, wxWindowID, const wxDateTime&,
const wxPoint&, const wxSize&, long,
const wxString& );
WXPLI_IMPLEMENT_DYNAMIC_CLASS( wxPliCalendarCtrl, wxCalendarCtrl );
#define wxDefaultDateTimePtr (wxDateTime*)&wxDefaultDateTime
#define wxDateTime__WeekDay wxDateTime::WeekDay
double calendar_constant( const char* name, int arg )
{
// !package: Wx
// !parser: sub { $_[0] =~ m<^\s*r\w*\(\s*(\w+)\s*\);\s*(?://(.*))?$> }
// !tag: calendar
#define r( n ) \
if( strEQ( name, #n ) ) \
return n;
WX_PL_CONSTANT_INIT();
switch( fl )
{
case 'C':
r( wxCAL_SUNDAY_FIRST );
r( wxCAL_MONDAY_FIRST );
r( wxCAL_SHOW_HOLIDAYS );
r( wxCAL_NO_YEAR_CHANGE );
r( wxCAL_NO_MONTH_CHANGE );
r( wxCAL_SHOW_SURROUNDING_WEEKS );
r( wxCAL_SEQUENTIAL_MONTH_SELECTION );
r( wxCAL_HITTEST_NOWHERE );
r( wxCAL_HITTEST_HEADER );
r( wxCAL_HITTEST_DAY );
r( wxCAL_BORDER_NONE );
r( wxCAL_BORDER_SQUARE );
r( wxCAL_BORDER_ROUND );
break;
case 'E':
r( wxEVT_CALENDAR_SEL_CHANGED );
r( wxEVT_CALENDAR_DAY_CHANGED );
r( wxEVT_CALENDAR_MONTH_CHANGED );
r( wxEVT_CALENDAR_YEAR_CHANGED );
r( wxEVT_CALENDAR_DOUBLECLICKED );
r( wxEVT_CALENDAR_WEEKDAY_CLICKED );
break;
}
#undef r
WX_PL_CONSTANT_CLEANUP();
}
wxPlConstants calendar_module( &calendar_constant );
%}
%file{-};
%typemap{wxCalendarEvent*}{simple};
%typemap{wxCalendarCtrl*}{simple};
%typemap{wxCalendarDateAttr*}{simple};
%typemap{wxDateTime__WeekDay}{simple};
%name{Wx::CalendarEvent} class wxCalendarEvent
{
const wxDateTime& GetDate();
wxDateTime__WeekDay GetWeekDay();
};
%name{Wx::CalendarCtrl} class wxCalendarCtrl
{
wxCalendarCtrl( wxWindow* parent,
wxWindowID id,
const wxDateTime& date = wxDefaultDateTimePtr,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxCAL_SHOW_HOLIDAYS,
const wxString& name = wxCalendarNameStr )
%code{% RETVAL = new wxPliCalendarCtrl( CLASS, parent, id, *date,
pos, size, style, name ); %};
void SetDate( const wxDateTime& date );
const wxDateTime& GetDate();
void EnableYearChange( bool enable = TRUE );
void EnableMonthChange( bool enable = TRUE );
void EnableHolidayDisplay( bool display = TRUE );
void SetHoliday( size_t day );
bool SetLowerDateLimit( const wxDateTime& date = wxDefaultDateTimePtr );
const wxDateTime& GetLowerDateLimit();
bool SetUpperDateLimit( const wxDateTime& date = wxDefaultDateTimePtr );
const wxDateTime& GetUpperDateLimit();
bool SetDateRange ( const wxDateTime& lowerdate = wxDefaultDateTimePtr,
const wxDateTime& upperdate = wxDefaultDateTimePtr );
void SetHeaderColours( const wxColour& colFg, const wxColour& colBg );
void SetHighlightColours( const wxColour& colFg, const wxColour& colBg );
void SetHolidayColours( const wxColour& colFg, const wxColour& colBg );
const wxColour& GetHeaderColourFg();
const wxColour& GetHeaderColourBg();
const wxColour& GetHighlightColourFg();
const wxColour& GetHighlightColourBg();
const wxColour& GetHolidayColourFg();
const wxColour& GetHolidayColourBg();
wxCalendarDateAttr* GetAttr( size_t day )
%code{%
RETVAL = THIS->GetAttr(day);
RETVAL = RETVAL ? new wxCalendarDateAttr( *RETVAL ) : NULL;
%};
void SetAttr( size_t day, wxCalendarDateAttr* attr )
%code{%
THIS->SetAttr( day,
attr ? new wxCalendarDateAttr( *attr ) : NULL );
%};
void ResetAttr( size_t day );
};