#############################################################################
## Name: XS/OwnerDrawnComboBox.xsp
## Purpose: XS++ for Wx::OwnerDrawnComboBox
## Author: Mattia Barbon
## Modified by:
## Created: 13/08/2007
## RCS-ID: $Id: OwnerDrawnComboBox.xsp 3010 2011-02-20 16:27:27Z mbarbon $
## Copyright: (c) 2007, 2010-2011 Mattia Barbon
## Licence: This program is free software; you can redistribute it and/or
## modify it under the same terms as Perl itself
#############################################################################
%module{Wx};
#if WXPERL_W_VERSION_GE( 2, 7, 2 )
#include <wx/odcombo.h>
%typemap{wxOwnerDrawnComboBox*}{simple};
%typemap{wxPlOwnerDrawnComboBox*}{simple};
%name{Wx::OwnerDrawnComboBox} class wxOwnerDrawnComboBox
{
int GetWidestItemWidth();
int GetWidestItem();
};
# the second regex is an horrible hack to solve ambiguity; maybe should
# use real base classes instead of this hack?
INCLUDE_COMMAND: $^X -pe "s/ItemContainerImmutable/OwnerDrawnComboBox/g;s/->(?=IsEmpty|GetStringSelection)/->wxItemContainerImmutable::/" XS/ItemContainerImmutable.xs
INCLUDE_COMMAND: $^X -pe "s/ItemContainer/OwnerDrawnComboBox/g" XS/ItemContainer.xs
%file{xspp/odcombo.h};
%{
#include "cpp/v_cback.h"
// void METH(wxDC&, const wxRect&, int, int)
#define DEC_V_CBACK_VOID__WXDC_WXRECT_INT_INT_const( METHOD ) \
void METHOD( wxDC& p1, const wxRect& p2, int p3, int p4 ) const
#define DEF_V_CBACK_VOID__WXDC_WXRECT_INT_INT_const( CLASS, BASE, METHOD )\
void CLASS::METHOD( wxDC& p1, const wxRect& p2, int p3, int p4 ) const \
{ \
dTHX; \
if( wxPliFCback( aTHX_ &m_callback, #METHOD ) ) \
{ \
wxAutoSV ret( aTHX_ wxPliCCback( aTHX_ &m_callback, \
G_SCALAR|G_DISCARD, \
"Qoii", &p1, \
new wxRect( p2 ), "Wx::Rect", \
p3, p4 ) ); \
return; \
} else \
BASE::METHOD( p1, p2, p3, p4 ); \
}
class wxPlOwnerDrawnComboBox : public wxOwnerDrawnComboBox {
WXPLI_DECLARE_DYNAMIC_CLASS( wxPlOwnerDrawnComboBox );
WXPLI_DECLARE_V_CBACK();
public:
WXPLI_DEFAULT_CONSTRUCTOR( wxPlOwnerDrawnComboBox,
"Wx::OwnerDrawnComboBox", true );
WXPLI_CONSTRUCTOR_9( wxPlOwnerDrawnComboBox, "Wx::OwnerDrawnComboBox",
true,
wxWindow*, wxWindowID, const wxString&,
const wxPoint&, const wxSize&, const wxArrayString&,
long, const wxValidator&, const wxString& );
DEC_V_CBACK_WXCOORD__SIZET_const( OnMeasureItem );
DEC_V_CBACK_WXCOORD__SIZET_const( OnMeasureItemWidth );
DEC_V_CBACK_VOID__WXDC_WXRECT_INT_INT_const( OnDrawItem );
DEC_V_CBACK_VOID__WXDC_WXRECT_INT_INT_const( OnDrawBackground );
};
DEF_V_CBACK_WXCOORD__SIZET_const( wxPlOwnerDrawnComboBox, wxOwnerDrawnComboBox,
OnMeasureItem );
DEF_V_CBACK_WXCOORD__SIZET_const( wxPlOwnerDrawnComboBox, wxOwnerDrawnComboBox,
OnMeasureItemWidth );
DEF_V_CBACK_VOID__WXDC_WXRECT_INT_INT_const( wxPlOwnerDrawnComboBox,
wxOwnerDrawnComboBox,
OnDrawItem );
DEF_V_CBACK_VOID__WXDC_WXRECT_INT_INT_const( wxPlOwnerDrawnComboBox,
wxOwnerDrawnComboBox,
OnDrawBackground );
WXPLI_IMPLEMENT_DYNAMIC_CLASS( wxPlOwnerDrawnComboBox, wxOwnerDrawnComboBox );
%}
%file{-};
#include "xspp/odcombo.h"
%name{Wx::PlOwnerDrawnComboBox} class wxPlOwnerDrawnComboBox
{
%{
void
new( ... )
PPCODE:
BEGIN_OVERLOAD()
MATCH_VOIDM_REDISP( newDefault )
MATCH_ANY_REDISP( newFull )
END_OVERLOAD( "Wx::PlOwnerDrawnComboBox::new" )
%}
%name{newDefault} wxPlOwnerDrawnComboBox()
%code{% RETVAL = new wxPlOwnerDrawnComboBox( CLASS );
wxPli_create_evthandler( aTHX_ RETVAL, CLASS );
%};
%name{newFull} wxPlOwnerDrawnComboBox( wxWindow *parent,
wxWindowID id,
const wxString& value,
const wxPoint& pos,
const wxSize& size,
const wxArrayString& choices,
long style = 0,
const wxValidator& validator = wxDefaultValidatorPtr,
const wxString& name = wxEmptyString)
%code{% RETVAL = new wxPlOwnerDrawnComboBox( CLASS, parent, id, value,
pos, size, choices, style,
*validator, name );
wxPli_create_evthandler( aTHX_ RETVAL, CLASS );
%};
bool Create( wxWindow *parent,
wxWindowID id,
const wxString& value = wxEmptyString,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
const wxArrayString& choices,
long style = 0,
const wxValidator& validator = wxDefaultValidatorPtr,
const wxString& name = wxEmptyString );
};
#endif