############################################################################# ## Name: XS/TreeCtrl.xs ## Purpose: XS for Wx::TreeCtrl ## Author: Mattia Barbon ## Modified by: ## Created: 04/02/2001 ## RCS-ID: $Id: TreeCtrl.xs 2298 2007-11-25 15:57:03Z mdootson $ ## Copyright: (c) 2001-2007 Mattia Barbon ## Licence: This program is free software; you can redistribute it and/or ## modify it under the same terms as Perl itself ############################################################################# #include #include "cpp/overload.h" MODULE=Wx PACKAGE=Wx::TreeItemData wxTreeItemData* wxPliTreeItemData::new( data = 0 ) SV_null* data CODE: RETVAL = new wxPliTreeItemData( data ); OUTPUT: RETVAL void wxTreeItemData::Destroy() CODE: delete THIS; SV_null* wxTreeItemData::GetData() CODE: RETVAL = ((wxPliTreeItemData*)THIS)->m_data; OUTPUT: RETVAL void wxTreeItemData::SetData( data = 0 ) SV_null* data CODE: ((wxPliTreeItemData*)THIS)->SetData( data ); wxTreeItemId* wxTreeItemData::GetId() CODE: RETVAL = new wxTreeItemId( THIS->GetId() ); OUTPUT: RETVAL void wxTreeItemData::SetId( id ) wxTreeItemId* id C_ARGS: *id MODULE=Wx PACKAGE=Wx::TreeItemId static void wxTreeItemId::CLONE() CODE: wxPli_thread_sv_clone( aTHX_ CLASS, (wxPliCloneSV)wxPli_detach_object ); ## // thread OK void wxTreeItemId::DESTROY() CODE: wxPli_thread_sv_unregister( aTHX_ "Wx::TreeItemId", THIS, ST(0) ); delete THIS; bool wxTreeItemId::IsOk() int tiid_spaceship( tid1, tid2, ... ) SV* tid1 SV* tid2 CODE: // this is not a proper spaceship method // it just allows autogeneration of != and == // anyway, comparing ids is useless RETVAL = -1; if( SvROK( tid1 ) && SvROK( tid2 ) && sv_derived_from( tid1, CHAR_P "Wx::TreeItemId" ) && sv_derived_from( tid2, CHAR_P "Wx::TreeItemId" ) ) { wxTreeItemId* id1 = (wxTreeItemId*) wxPli_sv_2_object( aTHX_ tid1, "Wx::TreeItemId" ); wxTreeItemId* id2 = (wxTreeItemId*) wxPli_sv_2_object( aTHX_ tid2, "Wx::TreeItemId" ); RETVAL = *id1 == *id2 ? 0 : 1; } else RETVAL = 1; OUTPUT: RETVAL MODULE=Wx PACKAGE=Wx::TreeEvent wxTreeEvent* wxTreeEvent::new( commandType = wxEVT_NULL, id = 0 ) wxEventType commandType int id wxTreeItemId* wxTreeEvent::GetItem() CODE: RETVAL = new wxTreeItemId( THIS->GetItem() ); OUTPUT: RETVAL #if WXPERL_W_VERSION_GE( 2, 7, 2 ) void wxTreeCtrl::SetQuickBestSize( q ) bool q bool wxTreeCtrl::GetQuickBestSize() #endif int wxTreeEvent::GetKeyCode() wxTreeItemId* wxTreeEvent::GetOldItem() CODE: RETVAL = new wxTreeItemId( THIS->GetOldItem() ); OUTPUT: RETVAL wxPoint* wxTreeEvent::GetPoint() CODE: RETVAL = new wxPoint( THIS->GetPoint() ); OUTPUT: RETVAL bool wxTreeEvent::IsEditCancelled() wxString wxTreeEvent::GetLabel() void wxTreeEvent::SetToolTip( tooltip ) wxString tooltip MODULE=Wx PACKAGE=Wx::TreeCtrl void new( ... ) PPCODE: BEGIN_OVERLOAD() MATCH_VOIDM_REDISP( newDefault ) MATCH_ANY_REDISP( newFull ) END_OVERLOAD( "Wx::TreeCtrl::new" ) wxTreeCtrl* newDefault( CLASS ) PlClassName CLASS CODE: RETVAL = new wxPliTreeCtrl( CLASS ); wxPli_create_evthandler( aTHX_ RETVAL, CLASS ); OUTPUT: RETVAL wxTreeCtrl* newFull( CLASS, parent, id = wxID_ANY, pos = wxDefaultPosition, size = wxDefaultSize, style = wxTR_HAS_BUTTONS, validator = (wxValidator*)&wxDefaultValidator, name = wxTreeCtrlNameStr ) PlClassName CLASS wxWindow* parent wxWindowID id wxPoint pos wxSize size long style wxValidator* validator wxString name CODE: RETVAL = new wxPliTreeCtrl( CLASS, parent, id, pos, size, style, *validator, name ); OUTPUT: RETVAL bool wxTreeCtrl::Create( parent, id = wxID_ANY, pos = wxDefaultPosition, size = wxDefaultSize, style = wxTR_HAS_BUTTONS, validator = (wxValidator*)&wxDefaultValidator, name = wxTreeCtrlNameStr ) wxWindow* parent wxWindowID id wxPoint pos wxSize size long style wxValidator* validator wxString name C_ARGS: parent, id, pos, size, style, *validator, name wxTreeItemId* wxTreeCtrl::AddRoot( text, image = -1, selImage = -1, data = 0 ) wxString text int image int selImage wxTreeItemData* data CODE: RETVAL = new wxTreeItemId( THIS->AddRoot( text, image, selImage, data ) ); OUTPUT: RETVAL wxTreeItemId* wxTreeCtrl::AppendItem( parent, text, image = -1, selImage = -1, data = 0 ) wxTreeItemId* parent wxString text int image int selImage wxTreeItemData* data CODE: RETVAL = new wxTreeItemId( THIS->AppendItem( *parent, text, image, selImage, data ) ); OUTPUT: RETVAL void wxTreeCtrl::Collapse( item ) wxTreeItemId* item CODE: THIS->Collapse( *item ); #if WXPERL_W_VERSION_GE( 2, 8, 3 ) void wxTreeCtrl::CollapseAll() void wxTreeCtrl::CollapseAllChildren( item ) wxTreeItemId* item C_ARGS: *item #endif void wxTreeCtrl::CollapseAndReset( item ) wxTreeItemId* item C_ARGS: *item void wxTreeCtrl::Delete( item ) wxTreeItemId* item C_ARGS: *item void wxTreeCtrl::DeleteChildren( item ) wxTreeItemId* item; C_ARGS: *item void wxTreeCtrl::DeleteAllItems() void wxTreeCtrl::EditLabel( item ) wxTreeItemId* item CODE: THIS->EditLabel( *item ); #if defined( __WXMSW__ ) #if WXPERL_W_VERSION_GE( 2, 5, 3 ) void wxTreeCtrl::EndEditLabel( item, discardChanges = false ) wxTreeItemId* item bool discardChanges C_ARGS: *item, discardChanges #else void wxTreeCtrl::EndEditLabel( cancelEdit ) bool cancelEdit #endif #endif void wxTreeCtrl::EnsureVisible( item ) wxTreeItemId* item C_ARGS: *item #if WXPERL_W_VERSION_GE( 2, 7, 2 ) void wxTreeCtrl::ExpandAll() #endif void wxTreeCtrl::Expand( item ) wxTreeItemId* item C_ARGS: *item #if WXPERL_W_VERSION_GE( 2, 7, 0 ) void wxTreeCtrl::ExpandAllChildren( item ) wxTreeItemId* item C_ARGS: *item #endif void wxTreeCtrl::GetBoundingRect( item, textOnly = false ) wxTreeItemId* item bool textOnly PREINIT: wxRect rect; PPCODE: bool ret = THIS->GetBoundingRect( *item, rect, textOnly ); if( ret ) { SV* ret = sv_newmortal(); wxPli_non_object_2_sv( aTHX_ ret, new wxRect( rect ), "Wx::Rect" ); XPUSHs( ret ); } else { XSRETURN_UNDEF; } size_t wxTreeCtrl::GetChildrenCount( item, recursively = true ) wxTreeItemId* item bool recursively C_ARGS: *item, recursively int wxTreeCtrl::GetCount() wxTreeItemData* wxTreeCtrl::GetItemData( item ) wxTreeItemId* item CODE: RETVAL = (wxPliTreeItemData*) THIS->GetItemData( *item ); OUTPUT: RETVAL SV_null* wxTreeCtrl::GetPlData( item ) wxTreeItemId* item CODE: wxPliTreeItemData* data = (wxPliTreeItemData*) THIS->GetItemData( *item ); RETVAL = data ? data->m_data : 0; OUTPUT: RETVAL #if defined( __WXMSW__ ) || defined( __WXPERL_FORCE__ ) wxTextCtrl* wxTreeCtrl::GetEditControl() #endif void wxTreeCtrl::GetFirstChild( item ) wxTreeItemId* item PREINIT: #if WXPERL_W_VERSION_GE( 2, 5, 1 ) void* cookie; #else long cookie; #endif PPCODE: wxTreeItemId ret = THIS->GetFirstChild( *item, cookie ); #if WXPERL_W_VERSION_LT( 2, 5, 1 ) if( !ret.IsOk() ) cookie = -1; #endif EXTEND( SP, 2 ); PUSHs( wxPli_non_object_2_sv( aTHX_ sv_newmortal(), new wxTreeItemId( ret ), "Wx::TreeItemId" ) ); #if WXPERL_W_VERSION_GE( 2, 5, 1 ) PUSHs( sv_2mortal( newSViv( PTR2IV( cookie ) ) ) ); #else PUSHs( sv_2mortal( newSViv( cookie ) ) ); #endif wxTreeItemId* wxTreeCtrl::GetFirstVisibleItem() CODE: RETVAL = new wxTreeItemId( THIS->GetFirstVisibleItem() ); OUTPUT: RETVAL wxImageList* wxTreeCtrl::GetImageList() OUTPUT: RETVAL CLEANUP: wxPli_object_set_deleteable( aTHX_ ST(0), false ); #if !defined( __WXMSW__ ) wxImageList* wxTreeCtrl::GetButtonsImageList() OUTPUT: RETVAL CLEANUP: wxPli_object_set_deleteable( aTHX_ ST(0), false ); #endif int wxTreeCtrl::GetIndent() int wxTreeCtrl::GetItemImage( item, which = wxTreeItemIcon_Normal ) wxTreeItemId* item wxTreeItemIcon which C_ARGS: *item, which wxString wxTreeCtrl::GetItemText( item ) wxTreeItemId* item C_ARGS: *item wxColour* wxTreeCtrl::GetItemBackgroundColour( item ) wxTreeItemId* item CODE: RETVAL = new wxColour( THIS->GetItemBackgroundColour( *item ) ); OUTPUT: RETVAL wxColour* wxTreeCtrl::GetItemTextColour( item ) wxTreeItemId* item CODE: RETVAL = new wxColour( THIS->GetItemTextColour( *item ) ); OUTPUT: RETVAL wxFont* wxTreeCtrl::GetItemFont( item ) wxTreeItemId* item CODE: RETVAL = new wxFont( THIS->GetItemFont( *item ) ); OUTPUT: RETVAL wxTreeItemId* wxTreeCtrl::GetLastChild( item ) wxTreeItemId* item CODE: RETVAL = new wxTreeItemId( THIS->GetLastChild( *item ) ); OUTPUT: RETVAL #if WXPERL_W_VERSION_GE( 2, 5, 1 ) void wxTreeCtrl::GetNextChild( item, cookie ) wxTreeItemId* item IV cookie PREINIT: void* realcookie = INT2PTR( void*, cookie ); PPCODE: wxTreeItemId ret = THIS->GetNextChild( *item, realcookie ); EXTEND( SP, 2 ); PUSHs( wxPli_non_object_2_sv( aTHX_ sv_newmortal(), new wxTreeItemId( ret ), "Wx::TreeItemId" ) ); PUSHs( sv_2mortal( newSViv( PTR2IV( realcookie ) ) ) ); #else void wxTreeCtrl::GetNextChild( item, cookie ) wxTreeItemId* item long cookie PPCODE: wxTreeItemId ret = THIS->GetNextChild( *item, cookie ); EXTEND( SP, 2 ); PUSHs( wxPli_non_object_2_sv( aTHX_ sv_newmortal(), new wxTreeItemId( ret ), "Wx::TreeItemId" ) ); PUSHs( sv_2mortal( newSViv( cookie ) ) ); #endif wxTreeItemId* wxTreeCtrl::GetNextSibling( item ) wxTreeItemId* item CODE: RETVAL = new wxTreeItemId( THIS->GetNextSibling( *item ) ); OUTPUT: RETVAL wxTreeItemId* wxTreeCtrl::GetNextVisible( item ) wxTreeItemId* item CODE: RETVAL = new wxTreeItemId( THIS->GetNextVisible( *item ) ); OUTPUT: RETVAL ## DECLARE_OVERLOAD( wtid, Wx::TreeItemId ) void wxTreeCtrl::GetParent( ... ) PPCODE: BEGIN_OVERLOAD() MATCH_VOIDM_REDISP( Wx::Window::GetParent ) MATCH_REDISP( wxPliOvl_wtid, GetItemParent ) END_OVERLOAD( Wx::TreeCtrl::GetParent ) wxTreeItemId* wxTreeCtrl::GetItemParent( item ) wxTreeItemId* item CODE: RETVAL = new wxTreeItemId( THIS->GetItemParent( *item ) ); OUTPUT: RETVAL wxTreeItemId* wxTreeCtrl::GetPrevSibling( item ) wxTreeItemId* item CODE: RETVAL = new wxTreeItemId( THIS->GetPrevSibling( *item ) ); OUTPUT: RETVAL wxTreeItemId* wxTreeCtrl::GetPrevVisible( item ) wxTreeItemId* item CODE: RETVAL = new wxTreeItemId( THIS->GetPrevVisible( *item ) ); OUTPUT: RETVAL wxTreeItemId* wxTreeCtrl::GetRootItem() CODE: RETVAL = new wxTreeItemId( THIS->GetRootItem() ); OUTPUT: RETVAL wxTreeItemId* wxTreeCtrl::GetSelection() CODE: RETVAL = new wxTreeItemId( THIS->GetSelection() ); OUTPUT: RETVAL void wxTreeCtrl::GetSelections() PREINIT: wxArrayTreeItemIds selections; PPCODE: size_t num = THIS->GetSelections( selections ); EXTEND( SP, (IV)num ); for( size_t i = 0; i < num; ++i ) { PUSHs( wxPli_non_object_2_sv( aTHX_ sv_newmortal(), new wxTreeItemId( selections[i] ), "Wx::TreeItemId" ) ); } wxImageList* wxTreeCtrl::GetStateImageList() OUTPUT: RETVAL CLEANUP: wxPli_object_set_deleteable( aTHX_ ST(0), false ); void wxTreeCtrl::HitTest( point ) wxPoint point PREINIT: int flags; PPCODE: wxTreeItemId ret = THIS->HitTest( point, flags ); EXTEND( SP, 2 ); PUSHs( wxPli_non_object_2_sv( aTHX_ sv_newmortal(), new wxTreeItemId( ret ), "Wx::TreeItemId" ) ); PUSHs( sv_2mortal( newSViv( flags ) ) ); void wxTreeCtrl::InsertItem( ... ) PPCODE: BEGIN_OVERLOAD() MATCH_REDISP_COUNT_ALLOWMORE( wxPliOvl_wtid_wtid_s_n_n, InsertItemPrev, 3 ) MATCH_REDISP_COUNT_ALLOWMORE( wxPliOvl_wtid_n_s_n_n, InsertItemBef, 3 ) END_OVERLOAD( Wx::TreeCtrl::InsertItem ) wxTreeItemId* wxTreeCtrl::InsertItemPrev( parent, previous, text, image = -1, selImage = -1, data = 0 ) wxTreeItemId* parent wxTreeItemId* previous wxString text int image int selImage wxTreeItemData* data CODE: RETVAL = new wxTreeItemId( THIS->InsertItem( *parent, *previous, text, image, selImage, data ) ); OUTPUT: RETVAL wxTreeItemId* wxTreeCtrl::InsertItemBef( parent, before, text, image = -1, selImage = -1, data = 0 ) wxTreeItemId* parent size_t before wxString text int image int selImage wxTreeItemData* data CODE: RETVAL = new wxTreeItemId( THIS->InsertItem( *parent, before, text, image, selImage, data ) ); OUTPUT: RETVAL bool wxTreeCtrl::IsBold( item ) wxTreeItemId* item C_ARGS: *item bool wxTreeCtrl::IsExpanded( item ) wxTreeItemId* item C_ARGS: *item bool wxTreeCtrl::IsSelected( item ) wxTreeItemId* item C_ARGS: *item bool wxTreeCtrl::IsVisible( item ) wxTreeItemId* item C_ARGS: *item #if WXPERL_W_VERSION_GE( 2, 8, 3 ) bool wxTreeCtrl::IsEmpty() #endif bool wxTreeCtrl::ItemHasChildren( item ) wxTreeItemId* item C_ARGS: *item int wxTreeCtrl::OnCompareItems( item1, item2 ) wxTreeItemId* item1 wxTreeItemId* item2 CODE: RETVAL = THIS->wxTreeCtrl::OnCompareItems( *item1, *item2 ); OUTPUT: RETVAL wxTreeItemId* wxTreeCtrl::PrependItem( parent, text, image = -1, selImage = -1, data = 0 ) wxTreeItemId* parent wxString text int image int selImage wxTreeItemData* data CODE: RETVAL = new wxTreeItemId( THIS->PrependItem( *parent, text, image, selImage, data ) ); OUTPUT: RETVAL void wxTreeCtrl::ScrollTo( item ) wxTreeItemId* item C_ARGS: *item #if WXPERL_W_VERSION_GE( 2, 5, 2 ) void wxTreeCtrl::SelectItem( item, select = true ) wxTreeItemId* item bool select C_ARGS: *item, select #else void wxTreeCtrl::SelectItem( item ) wxTreeItemId* item C_ARGS: *item #endif void wxTreeCtrl::SetIndent( indent ) int indent void wxTreeCtrl::SetImageList( list ) wxImageList* list #if !defined( __WXMSW__ ) void wxTreeCtrl::SetButtonsImageList( list ) wxImageList* list #endif void wxTreeCtrl::SetStateImageList( list ) wxImageList* list void wxTreeCtrl::AssignImageList( list ) wxImageList* list CODE: wxPli_object_set_deleteable( aTHX_ ST(1), false ); THIS->AssignImageList( list ); void wxTreeCtrl::AssignButtonsImageList( list ) wxImageList* list CODE: wxPli_object_set_deleteable( aTHX_ ST(1), false ); THIS->AssignStateImageList( list ); void wxTreeCtrl::AssignStateImageList( list ) wxImageList* list CODE: wxPli_object_set_deleteable( aTHX_ ST(1), false ); THIS->AssignStateImageList( list ); void wxTreeCtrl::SetItemBackgroundColour( item, col ) wxTreeItemId* item wxColour col C_ARGS: *item, col void wxTreeCtrl::SetItemBold( item, bold = true ) wxTreeItemId* item bool bold C_ARGS: *item, bold void wxTreeCtrl::SetItemData( item, data ) wxTreeItemId* item wxTreeItemData* data CODE: wxTreeItemData* tid = THIS->GetItemData( *item ); if( tid ) delete tid; THIS->SetItemData( *item, data ); void wxTreeCtrl::SetPlData( item, data ) wxTreeItemId* item SV_null* data CODE: wxTreeItemData* tid = THIS->GetItemData( *item ); if( tid ) delete tid; THIS->SetItemData( *item, data ? new wxPliTreeItemData( data ) : 0 ); #if defined( __WXMSW__ ) void wxTreeCtrl::SetItemDropHighlight( item, highlight = true ) wxTreeItemId* item bool highlight C_ARGS: *item, highlight #endif void wxTreeCtrl::SetItemFont( item, font ) wxTreeItemId* item wxFont* font C_ARGS: *item, *font void wxTreeCtrl::SetItemHasChildren( item, hasChildren = true ) wxTreeItemId* item bool hasChildren C_ARGS: *item, hasChildren void wxTreeCtrl::SetItemImage( item, image, which = wxTreeItemIcon_Normal ) wxTreeItemId* item int image wxTreeItemIcon which C_ARGS: *item, image, which void wxTreeCtrl::SetItemText( item, text ) wxTreeItemId* item wxString text C_ARGS: *item, text void wxTreeCtrl::SetItemTextColour( item, col ) wxTreeItemId* item wxColour col C_ARGS: *item, col void wxTreeCtrl::SortChildren( item ) wxTreeItemId* item C_ARGS: *item void wxTreeCtrl::Toggle( item ) wxTreeItemId* item C_ARGS: *item #if WXPERL_W_VERSION_GE( 2, 5, 3 ) void wxTreeCtrl::UnselectItem( item ) wxTreeItemId* item C_ARGS: *item void wxTreeCtrl::ToggleItemSelection( item ) wxTreeItemId* item C_ARGS: *item #endif void wxTreeCtrl::Unselect() void wxTreeCtrl::UnselectAll()