############################################################################# ## Name: XS/PopupWindow.xsp ## Purpose: XS++ for Wx::PopupWindow and Wx::PopupTransientWindow ## Author: Mattia Barbon ## Modified by: ## Created: 18/03/2005 ## RCS-ID: $Id: PopupWindow.xsp 2079 2007-07-08 21:18:04Z mbarbon $ ## Copyright: (c) 2005-2006 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 wxUSE_POPUPWIN %typemap{wxPopupWindow*}{simple}; %typemap{wxPopupTransientWindow*}{simple}; %typemap{wxPlPopupTransientWindow*}{simple}; %typemap{wxMouseEvent&}{reference}; %{ #include "wx/popupwin.h" #include "cpp/popupwin.h" %} %file{cpp/popupwin.h}; %{ #define DEC_V_CBACK_BOOL__WXMOUSEEVENT( METHOD ) \ bool METHOD( wxMouseEvent& event ) #define DEF_V_CBACK_BOOL__WXMOUSEEVENT( CLASS, BASE, METHOD ) \ bool CLASS::METHOD( wxMouseEvent& param1 ) \ { \ dTHX; \ if( wxPliFCback( aTHX_ &m_callback, #METHOD ) ) \ { \ wxAutoSV evt( aTHX_ wxPli_object_2_sv( aTHX_ newSViv( 0 ), ¶m1 ));\ wxAutoSV ret( aTHX_ wxPliCCback( aTHX_ &m_callback, G_SCALAR, \ "S", (SV*) evt ) ); \ sv_setiv( SvRV( evt ), 0 ); \ return SvTRUE( ret ); \ } else \ return BASE::METHOD( param1 ); \ } class wxPlPopupTransientWindow : public wxPopupTransientWindow { WXPLI_DECLARE_DYNAMIC_CLASS( wxPlPopupTransientWindow ); WXPLI_DECLARE_V_CBACK(); public: WXPLI_DEFAULT_CONSTRUCTOR( wxPlPopupTransientWindow, "Wx::PlPopupTransientWindow", true ); WXPLI_CONSTRUCTOR_2( wxPlPopupTransientWindow, "Wx::PlPopupTransientWindow", true, wxWindow*, int ); DEC_V_CBACK_VOID__WXWINDOW( Popup ); DEC_V_CBACK_VOID__VOID( Dismiss ); DEC_V_CBACK_BOOL__VOID( CanDismiss ); DEC_V_CBACK_BOOL__WXMOUSEEVENT( ProcessLeftDown ); DEC_V_CBACK_BOOL__BOOL( Show ); }; DEF_V_CBACK_VOID__WXWINDOW( wxPlPopupTransientWindow, wxPopupTransientWindow, Popup ); DEF_V_CBACK_VOID__VOID( wxPlPopupTransientWindow, wxPopupTransientWindow, Dismiss ); DEF_V_CBACK_BOOL__VOID( wxPlPopupTransientWindow, wxPopupTransientWindow, CanDismiss ); DEF_V_CBACK_BOOL__WXMOUSEEVENT( wxPlPopupTransientWindow, wxPopupTransientWindow, ProcessLeftDown ); DEF_V_CBACK_BOOL__BOOL( wxPlPopupTransientWindow, wxPopupTransientWindow, Show ); WXPLI_IMPLEMENT_DYNAMIC_CLASS( wxPlPopupTransientWindow, wxPopupTransientWindow ); %} %file{-}; %name{Wx::PopupWindow} class wxPopupWindow { %name{newDefault} wxPopupWindow() %code{% RETVAL = new wxPopupWindow(); wxPli_create_evthandler( aTHX_ RETVAL, CLASS ); %}; %name{newFull} wxPopupWindow( wxWindow *parent, int flags = wxBORDER_NONE ) %code{% RETVAL = new wxPopupWindow( parent, flags ); wxPli_create_evthandler( aTHX_ RETVAL, CLASS ); %}; bool Create( wxWindow *parent, int flags = wxBORDER_NONE ); void Position( const wxPoint& ptOrigin, const wxSize& size ); }; %{ void new( ... ) PPCODE: BEGIN_OVERLOAD() MATCH_VOIDM_REDISP( newDefault ) MATCH_ANY_REDISP( newFull ) END_OVERLOAD( "Wx::PopupWindow::new" ) %} %name{Wx::PopupTransientWindow} class wxPopupTransientWindow { %name{newDefault} wxPopupTransientWindow() %code{% RETVAL = new wxPopupTransientWindow(); wxPli_create_evthandler( aTHX_ RETVAL, CLASS ); %}; %name{newFull} wxPopupTransientWindow( wxWindow *parent, int flags = wxBORDER_NONE ) %code{% RETVAL = new wxPopupTransientWindow( parent, flags ); wxPli_create_evthandler( aTHX_ RETVAL, CLASS ); %}; void Popup( wxWindow *focus = NULL ); void Dismiss(); bool CanDismiss(); bool ProcessLeftDown( wxMouseEvent& event ); }; %{ void new( ... ) PPCODE: BEGIN_OVERLOAD() MATCH_VOIDM_REDISP( newDefault ) MATCH_ANY_REDISP( newFull ) END_OVERLOAD( "Wx::PopupTransientWindow::new" ) #define Popup wxPopupTransientWindow::Popup #define Dismiss wxPopupTransientWindow::Dismiss #define CanDismiss wxPopupTransientWindow::CanDismiss #define ProcessLeftDown wxPopupTransientWindow::ProcessLeftDown %} %name{Wx::PlPopupTransientWindow} class wxPlPopupTransientWindow { %name{newDefault} wxPlPopupTransientWindow() %code{% RETVAL = new wxPlPopupTransientWindow( CLASS ); wxPli_create_evthandler( aTHX_ RETVAL, CLASS ); %}; %name{newFull} wxPlPopupTransientWindow( wxWindow *parent, int flags = wxBORDER_NONE ) %code{% RETVAL = new wxPlPopupTransientWindow( CLASS, parent, flags ); wxPli_create_evthandler( aTHX_ RETVAL, CLASS ); %}; void Popup( wxWindow *focus = NULL ); void Dismiss(); bool CanDismiss(); bool ProcessLeftDown( wxMouseEvent& event ); }; %{ #undef Popup #undef Dismiss #undef CanDismiss #undef ProcessLeftDown void new( ... ) PPCODE: BEGIN_OVERLOAD() MATCH_VOIDM_REDISP( newDefault ) MATCH_ANY_REDISP( newFull ) END_OVERLOAD( "Wx::PlPopupTransientWindow::new" ) #endif // wxUSE_POPUPWIN %}