#############################################################################
## Name:        ext/propgrid/XS/PropertyGridEvent.xsp
## Purpose:     XS++ for Wx::PropertyGridEvent
## Author:      Mark Dootson
## Modified by:
## Created:     04/03/2012
## RCS-ID:      $Id: $
## Copyright:   (c) 2012 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, 9, 3 ) && wxUSE_PROPGRID

%loadplugin{build::Wx::XSP::Overload};
%loadplugin{build::Wx::XSP::Event};

%Event{%EVT_PG_SELECTED(id, func)%}
      {wxEVT_PG_SELECTED};
%Event{%EVT_PG_CHANGED(id, func)%}
      {wxEVT_PG_CHANGED};
%Event{%EVT_PG_CHANGING(id, func)%}
      {wxEVT_PG_CHANGING};
%Event{%EVT_PG_HIGHLIGHTED(id, func)%}
      {wxEVT_PG_HIGHLIGHTED};
%Event{%EVT_PG_RIGHT_CLICK(id, func)%}
      {wxEVT_PG_RIGHT_CLICK};
%Event{%EVT_PG_DOUBLE_CLICK(id, func)%}
      {wxEVT_PG_DOUBLE_CLICK};
%Event{%EVT_PG_ITEM_COLLAPSED(id, func)%}
      {wxEVT_PG_ITEM_COLLAPSED};
%Event{%EVT_PG_ITEM_EXPANDED(id, func)%}
      {wxEVT_PG_ITEM_EXPANDED};
%Event{%EVT_PG_LABEL_EDIT_BEGIN(id, func)%}
      {wxEVT_PG_LABEL_EDIT_BEGIN};
%Event{%EVT_PG_LABEL_EDIT_ENDING(id, func)%}
      {wxEVT_PG_LABEL_EDIT_ENDING};
%Event{%EVT_PG_COL_BEGIN_DRAG(id, func)%}
      {wxEVT_PG_COL_BEGIN_DRAG};
%Event{%EVT_PG_COL_DRAGGING(id, func)%}
      {wxEVT_PG_COL_DRAGGING};
%Event{%EVT_PG_COL_END_DRAG(id, func)%}
      {wxEVT_PG_COL_END_DRAG};
%Event{%EVT_PG_PAGE_CHANGED(id, func)%}
      {wxEVT_PG_PAGE_CHANGED};

%name{Wx::PropertyGridEvent} class wxPropertyGridEvent : public %name{Wx::CommandEvent} wxCommandEvent
{

public:

    /** Constructor. */
    %name{newFull} wxPropertyGridEvent(wxEventType commandType=0, int id=0) %Overload;

    /** Copy constructor. */
    %name{newCopy} wxPropertyGridEvent(const wxPropertyGridEvent& event) %Overload;

    /** Destructor. */
    %name{Destroy} ~wxPropertyGridEvent();

    bool CanVeto() const;

    unsigned int GetColumn() const;

    wxPGProperty__parsed_nodelete* GetMainParent() const;

    wxPGProperty__parsed_nodelete* GetProperty() const;

    wxByte GetValidationFailureBehavior() const;

    wxString GetPropertyName() const;

    wxVariant GetPropertyValue() const;

    wxVariant GetValue() const;

    void SetCanVeto( bool canVeto );

    void SetProperty( wxPGProperty__parsed_nodelete* p );

    void SetValidationFailureBehavior( wxByte flags );

    void SetValidationFailureMessage( const wxString& message );

    void Veto( bool veto = true );

    bool WasVetoed() const;
};


#endif


