The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#############################################################################
## Name:        ext/dataview/XS/DataViewTreeCtrl.xsp
## Purpose:     XS++ for Wx::DataViewTreeCtrl
## Author:      Mattia Barbon
## Modified by:
## Created:     24/12/2007
## RCS-ID:      $Id: DataViewTreeCtrl.xsp 2523 2009-02-04 23:50:57Z mbarbon $
## Copyright:   (c) 2007, 2009 Mattia Barbon
## Licence:     This program is free software; you can redistribute it and/or
##              modify it under the same terms as Perl itself
#############################################################################

#if wxUSE_DATAVIEWCTRL

%module{Wx};

#include <wx/dataview.h>
#include <wx/imaglist.h>

#define wxPLI_DEFAULT_DV_CTRL (wxDV_NO_HEADER|wxDV_ROW_LINES)

%name{Wx::DataViewTreeCtrl} class wxDataViewTreeCtrl
{
%{
void
new( ... )
  PPCODE:
    BEGIN_OVERLOAD()
        MATCH_VOIDM_REDISP( newDefault )
        MATCH_ANY_REDISP( newFull )
    END_OVERLOAD( "Wx::DataViewTreeCtrl::new" )
%}

    %name{newDefault} wxDataViewTreeCtrl()
        %code{% RETVAL = new wxDataViewTreeCtrl();
                wxPli_create_evthandler( aTHX_ RETVAL, CLASS );
             %};
    %name{newFull} wxDataViewTreeCtrl( wxWindow* parent,
                                   wxWindowID id = wxID_ANY,
                                   const wxPoint& pos = wxDefaultPosition,
                                   const wxSize& size = wxDefaultSize,
                                   long style = wxPLI_DEFAULT_DV_CTRL,
                                   const wxValidator& validator = wxDefaultValidatorPtr )
        %code{% RETVAL = new wxDataViewTreeCtrl( parent, id, pos, size,
                                                 style, *validator );
                wxPli_create_evthandler( aTHX_ RETVAL, CLASS );
             %};

    bool Create( wxWindow* parent, wxWindowID id = wxID_ANY,
                 const wxPoint& pos = wxDefaultPosition,
                 const wxSize& size = wxDefaultSize,
                 long style = wxPLI_DEFAULT_DV_CTRL,
                 const wxValidator& validator = wxDefaultValidatorPtr );

    wxDataViewTreeStore *GetStore();

    void SetImageList( wxImageList *imagelist );
    wxImageList* GetImageList();
    
    wxDataViewItem& AppendItem( const wxDataViewItem& parent,
                                const wxString &text, int icon = -1,
                                wxPliUserDataCD *data = NULL );
    wxDataViewItem& PrependItem( const wxDataViewItem& parent,
                                 const wxString &text, int icon = -1,
                                 wxPliUserDataCD *data = NULL );
    wxDataViewItem& InsertItem( const wxDataViewItem& parent,
                                const wxDataViewItem& previous,
                                const wxString &text, int icon = -1,
                                wxPliUserDataCD *data = NULL );

    wxDataViewItem& PrependContainer( const wxDataViewItem& parent,
                                      const wxString &text, int icon = -1,
                                      int expanded = -1,
                                      wxPliUserDataCD *data = NULL );
    wxDataViewItem& AppendContainer( const wxDataViewItem& parent,
                                     const wxString &text, int icon = -1,
                                     int expanded = -1,
                                     wxPliUserDataCD *data = NULL );
    wxDataViewItem& InsertContainer( const wxDataViewItem& parent,
                                     const wxDataViewItem& previous,
                                     const wxString &text, int icon = -1,
                                     int expanded = -1,
                                     wxPliUserDataCD *data = NULL );

    wxDataViewItem& GetNthChild( const wxDataViewItem& parent,
                                 unsigned int pos ) const;
    int GetChildCount( const wxDataViewItem& parent ) const;

    void SetItemText( const wxDataViewItem& item, const wxString &text );
    wxString GetItemText( const wxDataViewItem& item ) const;
    void SetItemIcon( const wxDataViewItem& item, const wxIcon &icon );
    const wxIcon &GetItemIcon( const wxDataViewItem& item ) const;
    void SetItemExpandedIcon( const wxDataViewItem& item, const wxIcon &icon );
    const wxIcon &GetItemExpandedIcon( const wxDataViewItem& item ) const;
    void SetItemData( const wxDataViewItem& item, wxPliUserDataCD *data );
    wxPliUserDataCD *GetItemData( const wxDataViewItem& item ) const
      %code{% RETVAL = (wxPliUserDataCD*) THIS->GetItemData( *item );
              %}; 

    void DeleteItem( const wxDataViewItem& item );
    void DeleteChildren( const wxDataViewItem& item );
    void DeleteAllItems();
};

#endif