/////////////////////////////////////////////////////////////////////////////
// Name: Event.xs
// Purpose: XS for Wx::EvtHandler, Wx::Event and derived classes
// Author: Mattia Barbon
// Modified by:
// Created: 29/10/2000
// RCS-ID: $Id: Event.xs 3232 2012-03-19 05:38:20Z mdootson $
// Copyright: (c) 2000-2009 Mattia Barbon
// Licence: This program is free software; you can redistribute it and/or
// modify it under the same terms as Perl itself
/////////////////////////////////////////////////////////////////////////////
#define PERL_NO_GET_CONTEXT
#include "cpp/wxapi.h"
#include <wx/event.h>
#include <wx/window.h>
#include <wx/dc.h>
#include <wx/menu.h>
#include <stdarg.h>
#include <wx/clntdata.h>
// re-include for client data
#include "cpp/helpers.h"
#undef THIS
#include "cpp/e_cback.h"
#include "cpp/e_cback.cpp"
#include "cpp/event.h"
WXPLI_BOOT_ONCE(Wx_Evt);
#define boot_Wx_Evt wxPli_boot_Wx_Evt
MODULE=Wx_Evt PACKAGE=Wx
INCLUDE: XS/EvtHandler.xs
MODULE=Wx_Evt PACKAGE=Wx::Event
# unimplemented ( and probably will never be: problems with object
# cloning/destruction )
# GetObjectType
static void
wxEvent::CLONE()
CODE:
wxPli_thread_sv_clone( aTHX_ CLASS, (wxPliCloneSV)wxPli_detach_object );
## // thread OK
void
wxEvent::DESTROY()
CODE:
wxPli_thread_sv_unregister( aTHX_ wxPli_get_class( aTHX_ ST(0) ), THIS, ST(0) );
delete THIS;
# void
# wxEvent::Destroy()
# CODE:
# delete THIS;
void
wxEvent::GetEventObject()
PPCODE:
// to avoid problems with deletion, only windows are supported
wxObject* obj = THIS->GetEventObject();
wxWindow* win = wxDynamicCast( obj, wxWindow );
EXTEND( SP, 1 );
if(win == NULL)
PUSHs( &PL_sv_undef );
else
PUSHs( wxPli_object_2_sv( aTHX_ NEWSV( 0, 0 ), win ) );
wxEventType
wxEvent::GetEventType()
int
wxEvent::GetId()
bool
wxEvent::GetSkipped()
long
wxEvent::GetTimestamp()
void
wxEvent::SetEventType( type )
wxEventType type
## will likely need to be restricted to wxWindow (for ownership problems)
void
wxEvent::SetEventObject( object )
wxObject* object
void
wxEvent::SetId( id )
wxWindowID id
void
wxEvent::SetTimestamp( timeStamp )
long timeStamp
void
wxEvent::Skip( skip = true )
bool skip
#if WXPERL_W_VERSION_GE( 2, 5, 1 )
bool
wxEvent::ShouldPropagate()
#endif
#if WXPERL_W_VERSION_GE( 2, 5, 3 )
int
wxEvent::StopPropagation()
void
wxEvent::ResumePropagation( propagationLevel )
int propagationLevel
#else
#if WXPERL_W_VERSION_GE( 2, 5, 1 )
void
wxEvent::SetPropagate( doIt )
bool doIt
#endif
#endif
MODULE=Wx_Evt PACKAGE=Wx::CommandEvent
wxCommandEvent*
wxCommandEvent::new( type = 0, id = 0 )
wxEventType type
wxWindowID id
Wx_UserDataCD*
wxCommandEvent::GetClientData()
CODE:
RETVAL = (wxPliUserDataCD*)THIS->GetClientObject();
OUTPUT:
RETVAL
long
wxCommandEvent::GetExtraLong()
int
wxCommandEvent::GetInt()
int
wxCommandEvent::GetSelection()
wxString
wxCommandEvent::GetString()
bool
wxCommandEvent::IsChecked()
bool
wxCommandEvent::IsSelection()
void
wxCommandEvent::SetClientData( data )
Wx_UserDataCD* data
CODE:
THIS->SetClientObject( data );
void
wxCommandEvent::SetExtraLong( extraLong )
long extraLong
void
wxCommandEvent::SetInt( intCommand )
int intCommand
void
wxCommandEvent::SetString( string )
wxString string
MODULE=Wx_Evt PACKAGE=Wx::ContextMenuEvent
wxContextMenuEvent*
wxContextMenuEvent::new( type = 0, id = 0, pos = wxDefaultPosition )
wxEventType type
wxWindowID id
wxPoint pos
wxPoint
wxContextMenuEvent::GetPosition()
void
wxContextMenuEvent::SetPosition( pos )
wxPoint pos
MODULE=Wx_Evt PACKAGE=Wx::PlEvent
SV*
wxPlEvent::new( type, id )
wxEventType type
wxWindowID id
CODE:
wxPlEvent* THIS = new wxPlEvent( CLASS, type, id );
RETVAL = newRV_noinc( SvRV( THIS->m_callback.GetSelf() ) );
wxPli_thread_sv_register( aTHX_ "Wx::PlEvent", THIS, RETVAL );
OUTPUT: RETVAL
## // thread OK
void
wxPlEvent::DESTROY()
CODE:
wxPli_thread_sv_unregister( aTHX_ "Wx::PlEvent", THIS, ST(0) );
if( THIS && wxPli_object_is_deleteable( aTHX_ ST(0) ) )
{
THIS->m_callback.DeleteSelf( true );
delete THIS;
}
MODULE=Wx_Evt PACKAGE=Wx::PlCommandEvent
SV*
wxPlCommandEvent::new( type, id )
wxEventType type
wxWindowID id
CODE:
wxPlCommandEvent* THIS = new wxPlCommandEvent( CLASS, type, id );
RETVAL = newRV_noinc( SvRV( THIS->m_callback.GetSelf() ) );
wxPli_thread_sv_register( aTHX_ "Wx::PlCommandEvent", THIS, RETVAL );
OUTPUT: RETVAL
## // thread OK
void
wxPlCommandEvent::DESTROY()
CODE:
wxPli_thread_sv_unregister( aTHX_ "Wx::PlCommandEvent", THIS, ST(0) );
if( THIS && wxPli_object_is_deleteable( aTHX_ ST(0) ) )
{
THIS->m_callback.DeleteSelf( true );
delete THIS;
}
MODULE=Wx_Evt PACKAGE=Wx::PlThreadEvent
wxPlThreadEvent*
wxPlThreadEvent::new( type, id, data )
wxEventType type
wxWindowID id
SV* data
CODE:
RETVAL = new wxPlThreadEvent( aTHX_ CLASS, type, id, data );
OUTPUT: RETVAL
int
wxPlThreadEvent::_GetData()
CODE:
RETVAL = THIS ? THIS->_GetData() : 0;
OUTPUT: RETVAL
SV*
wxPlThreadEvent::GetData()
CODE:
RETVAL = THIS ? THIS->GetData() : &PL_sv_undef;
OUTPUT: RETVAL
void
SetStash( hv_ref )
SV* hv_ref
CODE:
wxPlThreadEvent::SetStash( hv_ref );
MODULE=Wx_Evt PACKAGE=Wx::ActivateEvent
wxActivateEvent*
wxActivateEvent::new( type = 0, active = true, id = 0 )
wxEventType type
bool active
wxWindowID id
bool
wxActivateEvent::GetActive()
MODULE=Wx_Evt PACKAGE=Wx::CloseEvent
wxCloseEvent*
wxCloseEvent::new( commandEventType = 0, id = 0 )
wxEventType commandEventType
wxWindowID id
bool
wxCloseEvent::CanVeto()
bool
wxCloseEvent::GetLoggingOff()
void
wxCloseEvent::SetCanVeto( canVeto )
bool canVeto
void
wxCloseEvent::SetLoggingOff( loggingOff )
bool loggingOff
void
wxCloseEvent::Veto( veto = true )
bool veto
MODULE=Wx_Evt PACKAGE=Wx::EraseEvent
wxEraseEvent*
wxEraseEvent::new( id = 0, dc = 0 )
wxWindowID id
wxDC* dc
wxDC*
wxEraseEvent::GetDC()
OUTPUT:
RETVAL
CLEANUP:
wxPli_object_set_deleteable( aTHX_ ST(0), false );
MODULE=Wx_Evt PACKAGE=Wx::FocusEvent
wxFocusEvent*
wxFocusEvent::new( eventType = 0, id = 0 )
wxEventType eventType
wxWindowID id
wxWindow*
wxFocusEvent::GetWindow()
MODULE=Wx_Evt PACKAGE=Wx::IconizeEvent
bool
wxIconizeEvent::Iconized()
CODE:
#if WXPERL_W_VERSION_LT( 2, 9, 0 )
RETVAL = THIS->Iconized();
#else
RETVAL = THIS->IsIconized();
#endif
OUTPUT: RETVAL
bool
wxIconizeEvent::IsIconized()
CODE:
#if WXPERL_W_VERSION_LT( 2, 9, 0 )
RETVAL = THIS->Iconized();
#else
RETVAL = THIS->IsIconized();
#endif
OUTPUT: RETVAL
MODULE=Wx_Evt PACKAGE=Wx::KeyEvent
wxKeyEvent*
wxKeyEvent::new( keyEventType )
wxEventType keyEventType
bool
wxKeyEvent::AltDown()
#if WXPERL_W_VERSION_GE( 2, 5, 3 )
bool
wxKeyEvent::CmdDown()
#endif
bool
wxKeyEvent::ControlDown()
int
wxKeyEvent::GetKeyCode()
#ifdef wxHAS_RAW_KEY_CODES
int
wxKeyEvent::GetRawKeyCode()
#endif
#if wxUSE_UNICODE && WXPERL_W_VERSION_GE( 2, 5, 3 )
wxChar
wxKeyEvent::GetUnicodeKey()
#endif
#if WXPERL_W_VERSION_GE( 2, 7, 0 )
int
wxKeyEvent::GetModifiers()
#endif
long
wxKeyEvent::GetX()
long
wxKeyEvent::GetY()
bool
wxKeyEvent::MetaDown()
bool
wxKeyEvent::HasModifiers()
bool
wxKeyEvent::ShiftDown()
#if WXPERL_W_VERSION_GE( 2, 9, 3 )
void
wxKeyEvent::DoAllowNextEvent()
bool
wxKeyEvent::IsNextEventAllowed()
#endif
MODULE=Wx_Evt PACKAGE=Wx::HelpEvent
wxHelpEvent*
wxHelpEvent::new()
wxPoint*
wxHelpEvent::GetPosition()
CODE:
RETVAL = new wxPoint( THIS->GetPosition() );
OUTPUT:
RETVAL
wxString
wxHelpEvent::GetLink()
wxString
wxHelpEvent::GetTarget()
void
wxHelpEvent::SetPosition( point )
wxPoint point
void
wxHelpEvent::SetLink( link )
wxString link
void
wxHelpEvent::SetTarget( target )
wxString target
MODULE=Wx_Evt PACKAGE=Wx::IdleEvent
wxIdleEvent*
wxIdleEvent::new()
bool
wxIdleEvent::MoreRequested()
void
wxIdleEvent::RequestMore( needMore = true )
bool needMore
#if WXPERL_W_VERSION_LT( 2, 9, 0 )
bool
CanSend( window )
wxWindow* window
CODE:
RETVAL = wxIdleEvent::CanSend( window );
OUTPUT: RETVAL
#endif
void
SetMode( mode )
wxIdleMode mode
CODE:
wxIdleEvent::SetMode( mode );
wxIdleMode
GetMode()
CODE:
RETVAL = wxIdleEvent::GetMode();
OUTPUT: RETVAL
MODULE=Wx_Evt PACKAGE=Wx::InitDialogEvent
wxInitDialogEvent*
wxInitDialogEvent::new( id = 0 )
wxWindowID id
MODULE=Wx_Evt PACKAGE=Wx::JoystickEvent
wxJoystickEvent*
wxJoystickEvent::new( eventType = 0, state = 0, joystick = wxJOYSTICK1, change = 0 )
wxEventType eventType
int state
int joystick
int change
bool
wxJoystickEvent::ButtonDown( button = wxJOY_BUTTON_ANY )
int button
bool
wxJoystickEvent::ButtonIsDown( button = wxJOY_BUTTON_ANY )
int button
bool
wxJoystickEvent::ButtonUp( button = wxJOY_BUTTON_ANY )
int button
int
wxJoystickEvent::GetButtonChange()
int
wxJoystickEvent::GetButtonState()
int
wxJoystickEvent::GetJoystick()
wxPoint*
wxJoystickEvent::GetPosition()
CODE:
RETVAL = new wxPoint( THIS->GetPosition() );
OUTPUT:
RETVAL
int
wxJoystickEvent::GetZPosition()
bool
wxJoystickEvent::IsButton()
bool
wxJoystickEvent::IsMove()
bool
wxJoystickEvent::IsZMove()
MODULE=Wx_Evt PACKAGE=Wx::MenuEvent
wxMenuEvent*
wxMenuEvent::new( eventType = 0, id = 0 )
wxEventType eventType
wxWindowID id
int
wxMenuEvent::GetMenuId()
bool
wxMenuEvent::IsPopup()
#if WXPERL_W_VERSION_GE( 2, 6, 0 )
wxMenu*
wxMenuEvent::GetMenu()
#endif
MODULE=Wx_Evt PACKAGE=Wx::MaximizeEvent
wxMouseEvent*
wxMouseEvent::new( id = 0 )
wxWindowID id
MODULE=Wx_Evt PACKAGE=Wx::MouseEvent
wxMouseEvent*
wxMouseEvent::new( eventType = 0 )
wxEventType eventType
bool
wxMouseEvent::AltDown()
bool
wxMouseEvent::Button( button = -1 )
int button
bool
wxMouseEvent::ButtonDClick( button = -1 )
int button
bool
wxMouseEvent::ButtonDown( button = -1 )
int button
bool
wxMouseEvent::ButtonUp( button = -1 )
int button
#if WXPERL_W_VERSION_GE( 2, 5, 3 )
bool
wxMouseEvent::CmdDown()
#endif
bool
wxMouseEvent::ControlDown()
bool
wxMouseEvent::Dragging()
bool
wxMouseEvent::Entering()
wxPoint*
wxMouseEvent::GetPosition()
CODE:
RETVAL = new wxPoint( THIS->GetPosition() );
OUTPUT:
RETVAL
void
wxMouseEvent::GetPositionXY()
PREINIT:
long x;
long y;
PPCODE:
THIS->GetPosition( &x, &y );
EXTEND( SP, 2 );
PUSHs( sv_2mortal( newSViv( x ) ) );
PUSHs( sv_2mortal( newSViv( y ) ) );
wxPoint*
wxMouseEvent::GetLogicalPosition( dc )
wxDC* dc
CODE:
RETVAL = new wxPoint( THIS->GetLogicalPosition( *dc ) );
OUTPUT:
RETVAL
long
wxMouseEvent::GetX()
long
wxMouseEvent::GetY()
int
wxMouseEvent::GetWheelRotation()
int
wxMouseEvent::GetWheelDelta()
int
wxMouseEvent::GetLinesPerAction()
#if WXPERL_W_VERSION_GE( 2, 9, 0 )
int
wxMouseEvent::GetWheelAxis()
#endif
bool
wxMouseEvent::IsButton()
bool
wxMouseEvent::IsPageScroll()
bool
wxMouseEvent::Leaving()
bool
wxMouseEvent::LeftDClick()
bool
wxMouseEvent::LeftDown()
bool
wxMouseEvent::LeftIsDown()
bool
wxMouseEvent::LeftUp()
bool
wxMouseEvent::MetaDown()
bool
wxMouseEvent::MiddleDClick()
bool
wxMouseEvent::MiddleDown()
bool
wxMouseEvent::MiddleIsDown()
bool
wxMouseEvent::MiddleUp()
bool
wxMouseEvent::Moving()
bool
wxMouseEvent::RightDClick()
bool
wxMouseEvent::RightDown()
bool
wxMouseEvent::RightIsDown()
bool
wxMouseEvent::RightUp()
#if WXPERL_W_VERSION_GE( 2, 9, 0 )
bool
wxMouseEvent::Aux1DClick()
bool
wxMouseEvent::Aux1Down()
bool
wxMouseEvent::Aux1IsDown()
bool
wxMouseEvent::Aux1Up()
bool
wxMouseEvent::Aux2DClick()
bool
wxMouseEvent::Aux2Down()
bool
wxMouseEvent::Aux2IsDown()
bool
wxMouseEvent::Aux2Up()
#endif
bool
wxMouseEvent::ShiftDown()
int
wxMouseEvent::GetButton()
#if WXPERL_W_VERSION_GE( 2, 9, 0 )
int
wxMouseEvent::GetClickCount()
#endif
MODULE=Wx_Evt PACKAGE=Wx::MoveEvent
wxMoveEvent*
wxMoveEvent::new( point, id = 0 )
wxPoint point
wxWindowID id
wxPoint*
wxMoveEvent::GetPosition()
CODE:
RETVAL = new wxPoint( THIS->GetPosition() );
OUTPUT:
RETVAL
#if WXPERL_W_VERSION_GE( 2, 5, 1 )
wxRect*
wxMoveEvent::GetRect()
CODE:
RETVAL = new wxRect( THIS->GetRect() );
OUTPUT: RETVAL
#endif
MODULE=Wx_Evt PACKAGE=Wx::NotifyEvent
wxNotifyEvent*
wxNotifyEvent::new( eventType = wxEVT_NULL, id = 0 )
wxEventType eventType
wxWindowID id
bool
wxNotifyEvent::IsAllowed()
void
wxNotifyEvent::Veto()
void
wxNotifyEvent::Allow()
MODULE=Wx_Evt PACKAGE=Wx::PaintEvent
wxPaintEvent*
wxPaintEvent::new( id = 0 )
wxWindowID id
MODULE=Wx_Evt PACKAGE=Wx::SizeEvent
wxSizeEvent*
wxSizeEvent::new( size, id = 0 )
wxSize size
wxWindowID id
wxSize*
wxSizeEvent::GetSize()
CODE:
RETVAL = new wxSize( THIS->GetSize() );
OUTPUT:
RETVAL
#if WXPERL_W_VERSION_GE( 2, 5, 1 )
wxRect*
wxSizeEvent::GetRect()
CODE:
RETVAL = new wxRect( THIS->GetRect() );
OUTPUT: RETVAL
#endif
MODULE=Wx_Evt PACKAGE=Wx::ScrollEvent
int
wxScrollEvent::GetOrientation()
int
wxScrollEvent::GetPosition()
MODULE=Wx_Evt PACKAGE=Wx::ScrollWinEvent
wxScrollWinEvent*
wxScrollWinEvent::new( eventType = 0, pos = 0, orientation = 0 )
wxEventType eventType
int pos
int orientation
int
wxScrollWinEvent::GetOrientation()
int
wxScrollWinEvent::GetPosition()
MODULE=Wx_Evt PACKAGE=Wx::SetCursorEvent
wxSetCursorEvent*
wxSetCursorEvent::new( x = 0, y = 0 )
wxCoord x
wxCoord y
wxCoord
wxSetCursorEvent::GetX()
wxCoord
wxSetCursorEvent::GetY()
void
wxSetCursorEvent::SetCursor( cursor )
wxCursor* cursor
C_ARGS: *cursor
wxCursor*
wxSetCursorEvent::GetCursor()
CODE:
RETVAL = new wxCursor( THIS->GetCursor() );
OUTPUT: RETVAL
bool
wxSetCursorEvent::HasCursor()
MODULE=Wx_Evt PACKAGE=Wx::SysColourChangedEvent
wxSysColourChangedEvent*
wxSysColourChangedEvent::new()
MODULE=Wx_Evt PACKAGE=Wx::UpdateUIEvent
bool
CanUpdate( window )
wxWindow* window
CODE:
RETVAL = wxUpdateUIEvent::CanUpdate( window );
OUTPUT: RETVAL
wxUpdateUIMode
GetMode()
CODE:
RETVAL = wxUpdateUIEvent::GetMode();
OUTPUT: RETVAL
void
SetMode( mode )
wxUpdateUIMode mode
CODE:
wxUpdateUIEvent::SetMode( mode );
long
GetUpdateInterval()
CODE:
RETVAL = wxUpdateUIEvent::GetUpdateInterval();
OUTPUT: RETVAL
void
ResetUpdateTime()
CODE:
wxUpdateUIEvent::ResetUpdateTime();
void
SetUpdateInterval( interval )
long interval
CODE:
wxUpdateUIEvent::SetUpdateInterval( interval );
wxUpdateUIEvent*
wxUpdateUIEvent::new( commandId = 0 )
wxWindowID commandId
void
wxUpdateUIEvent::Check( check )
bool check
#if WXPERL_W_VERSION_GE( 2, 7, 2 )
void
wxUpdateUIEvent::Show( show )
bool show
#endif
void
wxUpdateUIEvent::Enable( enable )
bool enable
bool
wxUpdateUIEvent::GetChecked()
#if WXPERL_W_VERSION_GE( 2, 7, 2 )
bool
wxUpdateUIEvent::GetShown()
#endif
bool
wxUpdateUIEvent::GetSetEnabled()
bool
wxUpdateUIEvent::GetSetChecked()
#if WXPERL_W_VERSION_GE( 2, 7, 2 )
bool
wxUpdateUIEvent::GetSetShown()
#endif
bool
wxUpdateUIEvent::GetEnabled()
wxString
wxUpdateUIEvent::GetText()
void
wxUpdateUIEvent::SetText( text )
wxString text
bool
wxUpdateUIEvent::GetSetText()
MODULE=Wx_Evt PACKAGE=Wx::NavigationKeyEvent
wxNavigationKeyEvent*
wxNavigationKeyEvent::new()
bool
wxNavigationKeyEvent::GetDirection()
void
wxNavigationKeyEvent::SetDirection(direction)
bool direction
bool
wxNavigationKeyEvent::IsWindowChange()
void
wxNavigationKeyEvent::SetWindowChange(change)
bool change
wxWindow*
wxNavigationKeyEvent::GetCurrentFocus()
void
wxNavigationKeyEvent::SetCurrentFocus(focus)
wxWindow* focus
#if WXPERL_W_VERSION_GE( 2, 5, 4 )
bool
wxNavigationKeyEvent::IsFromTab()
void
wxNavigationKeyEvent::SetFromTab( fromTab )
bool fromTab
#endif
MODULE=Wx_Evt PACKAGE=Wx::ChildFocusEvent
wxChildFocusEvent*
wxChildFocusEvent::new( win = NULL )
wxWindow* win
wxWindow*
wxChildFocusEvent::GetWindow()
#if WXPERL_W_VERSION_GE( 2, 7, 0 )
MODULE=Wx_Evt PACKAGE=Wx::ClipboardTextEvent
wxClipboardTextEvent*
wxClipboardTextEvent::new( type = wxEVT_NULL, id = 0 )
wxEventType type
wxWindowID id
MODULE=Wx:Evt PACKAGE=Wx::MouseCaptureChangedEvent
wxMouseCaptureChangedEvent*
wxMouseCaptureChangedEvent::new( id = 0, capturedWindow = NULL )
wxWindowID id
wxWindow* capturedWindow
wxWindow*
wxMouseCaptureChangedEvent::GetCapturedWindow()
MODULE=Wx_Evt PACKAGE=Wx::MouseCaptureLostEvent
wxMouseCaptureLostEvent*
wxMouseCaptureLostEvent::new( eventType = 0 )
wxEventType eventType
#endif
MODULE=Wx:Evt PACKAGE=Wx::WindowCreateEvent
wxWindowCreateEvent*
wxWindowCreateEvent::new( window = NULL )
wxWindow* window
wxWindow*
wxWindowCreateEvent::GetWindow()
MODULE=Wx:Evt PACKAGE=Wx::WindowDestroyEvent
wxWindowDestroyEvent*
wxWindowDestroyEvent::new( window = NULL )
wxWindow* window
wxWindow*
wxWindowDestroyEvent::GetWindow()
MODULE=Wx_Evt