############################################################################# ## Name: XS/PlWindow.xsp ## Purpose: XS++ for Wx::PlWindow ## Author: Mattia Barbon ## Modified by: ## Created: 23/05/2004 ## RCS-ID: $Id: PlWindow.xsp 2172 2007-08-17 22:56:36Z mbarbon $ ## Copyright: (c) 2004-2007 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}; ## TODO: Which (if any?) of these should be done also??? ## Destroy ## DoCaptureMouse ## DoClientToScreen ## DoHitTest ## DoPopupMenu ## DoReleaseMouse ## DoScreenToClient ## DoSetToolTip ## Fit ## GetCharHeight ## GetCharWidth ## GetClientAreaOrigin ## GetDefaultItem ## IsTopLevel ## SetBackgroundColour ## SetDefaultItem ## SetFocus ## SetFocusFromKbd ## SetForegroundColour ## SetSizeHints ## SetVirtualSizeHints ## Show %typemap{wxPlWindow*}{simple}; %file{cpp/plwindow.h}; %{ #include "cpp/v_cback.h" // ANY METH(int, int, int, int) #define DEC_V_CBACK_ANY__INT_INT_INT_INT_( RET, METHOD, CONST ) \ RET METHOD(int, int, int, int) CONST #define DEF_V_CBACK_ANY__INT_INT_INT_INT_( RET, CVT, CLASS, CALLBASE, METHOD, CONST ) \ RET CLASS::METHOD( int p1, int p2, int p3, int p4 ) CONST \ { \ dTHX; \ if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, #METHOD ) )\ { \ wxAutoSV ret( aTHX_ wxPliCCback( aTHX_ &m_callback, G_SCALAR, \ "iiii", p1, p2, p3, p4 ) ); \ return CVT; \ } else \ CALLBASE; \ } // wxSize METH() #define DEC_V_CBACK_WXSIZE__VOID( METHOD ) \ DEC_V_CBACK_ANY__VOID_( wxSize, METHOD, wxPli_NOCONST ) #define DEC_V_CBACK_WXSIZE__VOID_const( METHOD ) \ DEC_V_CBACK_ANY__VOID_( wxSize, METHOD, wxPli_CONST ) #define DEF_V_CBACK_WXSIZE__VOID( CLASS, BASE, METHOD ) \ DEF_V_CBACK_ANY__VOID_( wxSize, wxPli_sv_2_wxsize( aTHX_ ret ), CLASS, return BASE::METHOD(), METHOD, wxPli_NOCONST ) #define DEF_V_CBACK_WXSIZE__VOID_pure( CLASS, BASE, METHOD ) \ DEF_V_CBACK_ANY__VOID_( wxSize, wxPli_sv_2_wxsize( aTHX_ ret ), CLASS, return wxSize(), METHOD, wxPli_NOCONST ) #define DEF_V_CBACK_WXSIZE__VOID_const( CLASS, BASE, METHOD ) \ DEF_V_CBACK_ANY__VOID_( wxSize, wxPli_sv_2_wxsize( aTHX_ ret ), CLASS, return BASE::METHOD(), METHOD, wxPli_CONST ) // void METH(int, int, int, int) #define DEC_V_CBACK_VOID__INT_INT_INT_INT( METHOD ) \ DEC_V_CBACK_ANY__INT_INT_INT_INT_( void, METHOD, wxPli_NOCONST ) #define DEC_V_CBACK_VOID__INT_INT_INT_INT_const( METHOD ) \ DEC_V_CBACK_ANY__INT_INT_INT_INT_( void, METHOD, wxPli_CONST ) #define DEF_V_CBACK_VOID__INT_INT_INT_INT( CLASS, BASE, METHOD ) \ DEF_V_CBACK_ANY__INT_INT_INT_INT_( void, wxPli_VOID, CLASS, BASE::METHOD(p1, p2, p3, p4), METHOD, wxPli_NOCONST ) #define DEF_V_CBACK_VOID__INT_INT_INT_INT_pure( CLASS, BASE, METHOD ) \ DEF_V_CBACK_ANY__INT_INT_INT_INT_( void, wxPli_VOID, CLASS, return, METHOD, wxPli_NOCONST ) #define DEF_V_CBACK_VOID__INT_INT_INT_INT_const( CLASS, BASE, METHOD ) \ DEF_V_CBACK_ANY__INT_INT_INT_INT_( void, wxPli_VOID, CLASS, BASE::METHOD(p1, p2, p3, p4), METHOD, wxPli_CONST ) class wxPlWindow : public wxWindow { WXPLI_DECLARE_DYNAMIC_CLASS( wxPlWindow ); WXPLI_DECLARE_V_CBACK(); public: WXPLI_DEFAULT_CONSTRUCTOR( wxPlWindow, "Wx::Window", true ); WXPLI_CONSTRUCTOR_6( wxPlWindow, "Wx::Window", true, wxWindow*, wxWindowID, const wxPoint&, const wxSize&, long, const wxString& ); virtual ~wxPlWindow(); wxSize base_DoGetBestSize() const { return wxWindow::DoGetBestSize(); } void base_DoMoveWindow( int x, int y, int w, int h ) { wxWindow::DoMoveWindow(x, y, w, h); } bool base_Enable( bool enable ) { return wxWindow::Enable( enable ); } DEC_V_CBACK_WXSIZE__VOID_const( DoGetBestSize ); DEC_V_CBACK_BOOL__VOID_const( AcceptsFocus ); #if WXPERL_W_VERSION_GE( 2, 9, 0 ) DEC_V_CBACK_BOOL__VOID_const( AcceptsFocusRecursively ); #endif DEC_V_CBACK_BOOL__VOID_const( AcceptsFocusFromKeyboard ); DEC_V_CBACK_VOID__INT_INT_INT_INT( DoMoveWindow ); DEC_V_CBACK_BOOL__BOOL( Enable ); #if WXPERL_W_VERSION_GE( 2, 5, 1 ) DEC_V_CBACK_WXSIZE__VOID_const( GetMinSize ); DEC_V_CBACK_WXSIZE__VOID_const( GetMaxSize ); #endif }; DEF_V_CBACK_WXSIZE__VOID_const( wxPlWindow, wxWindow, DoGetBestSize ); DEF_V_CBACK_BOOL__VOID_const( wxPlWindow, wxWindow, AcceptsFocus ); #if WXPERL_W_VERSION_GE( 2, 9, 0 ) DEF_V_CBACK_BOOL__VOID_const( wxPlWindow, wxWindow, AcceptsFocusRecursively ); #endif DEF_V_CBACK_BOOL__VOID_const( wxPlWindow, wxWindow, AcceptsFocusFromKeyboard ); DEF_V_CBACK_VOID__INT_INT_INT_INT( wxPlWindow, wxWindow, DoMoveWindow ); DEF_V_CBACK_BOOL__BOOL( wxPlWindow, wxWindow, Enable ); #if WXPERL_W_VERSION_GE( 2, 5, 1 ) DEF_V_CBACK_WXSIZE__VOID_const( wxPlWindow, wxWindow, GetMinSize ); DEF_V_CBACK_WXSIZE__VOID_const( wxPlWindow, wxWindow, GetMaxSize ); #endif WXPLI_IMPLEMENT_DYNAMIC_CLASS( wxPlWindow, wxWindow ); wxPlWindow::~wxPlWindow() { dTHX; if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, "DoDestroy" ) ) { // Call DoDestroy if it exists wxPliVirtualCallback_CallCallback( aTHX_ &m_callback, 0, "" ); } } %} %file{-}; #include "cpp/plwindow.h" %{ #define GetMaxSize wxWindow::GetMaxSize #define GetMinSize wxWindow::GetMinSize #define AcceptsFocus wxWindow::AcceptsFocus #define AcceptsFocusRecursively wxWindow::AcceptsFocusRecursively #define AcceptsFocusFromKeyboard wxWindow::AcceptsFocusFromKeyboard %} %name{Wx::PlWindow} class wxPlWindow { %name{newDefault} wxPlWindow() %code{% RETVAL = new wxPlWindow( CLASS ); // wxPli_create_evthandler( aTHX_ RETVAL, CLASS ); %}; %name{newFull} wxPlWindow(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = wxEmptyString) %code{% RETVAL = new wxPlWindow( CLASS, parent, id, pos, size, style, name ); // wxPli_create_evthandler( aTHX_ RETVAL, CLASS ); %}; bool Create(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = wxEmptyString); %name{DoGetBestSize} wxSize base_DoGetBestSize() const; %name{DoMoveWindow} void base_DoMoveWindow( int x, int y, int w, int h ); %name{Enable} bool base_Enable( bool enable ); bool AcceptsFocus() const; #if WXPERL_W_VERSION_GE( 2, 9, 0 ) bool AcceptsFocusRecursively() const; #endif bool AcceptsFocusFromKeyboard() const; #if WXPERL_W_VERSION_GE( 2, 5, 1 ) wxSize GetMaxSize() const; wxSize GetMinSize() const; #endif }; %{ void new( ... ) PPCODE: BEGIN_OVERLOAD() MATCH_VOIDM_REDISP( newDefault ) MATCH_ANY_REDISP( newFull ) END_OVERLOAD( "Wx::PlWindow::new" ) %} %{ #undef GetMaxSize #undef GetMinSize #undef AcceptsFocus #undef AcceptsFocusRecursively #undef AcceptsFocusFromKeyboard %}