1 #############################################################################
2 ## Name: XS/TreeCtrl.xs
3 ## Purpose: XS for Wx::TreeCtrl
4 ## Author: Mattia Barbon
7 ## RCS-ID: $Id: TreeCtrl.xs 2298 2007-11-25 15:57:03Z mdootson $
8 ## Copyright: (c) 2001-2007 Mattia Barbon
9 ## Licence: This program is free software; you can redistribute it and/or
10 ## modify it under the same terms as Perl itself
11 #############################################################################
13 #include <wx/treectrl.h>
14 #include "cpp/overload.h"
16 MODULE=Wx PACKAGE=Wx::TreeItemData
19 wxPliTreeItemData::new( data = 0 )
22 RETVAL = new wxPliTreeItemData( data );
27 wxTreeItemData::Destroy()
32 wxTreeItemData::GetData()
34 RETVAL = ((wxPliTreeItemData*)THIS)->m_data;
39 wxTreeItemData::SetData( data = 0 )
42 ((wxPliTreeItemData*)THIS)->SetData( data );
45 wxTreeItemData::GetId()
47 RETVAL = new wxTreeItemId( THIS->GetId() );
52 wxTreeItemData::SetId( id )
56 MODULE=Wx PACKAGE=Wx::TreeItemId
61 wxPli_thread_sv_clone( aTHX_ CLASS, (wxPliCloneSV)wxPli_detach_object );
65 wxTreeItemId::DESTROY()
67 wxPli_thread_sv_unregister( aTHX_ "Wx::TreeItemId", THIS, ST(0) );
74 tiid_spaceship( tid1, tid2, ... )
78 // this is not a proper spaceship method
79 // it just allows autogeneration of != and ==
80 // anyway, comparing ids is useless
82 if( SvROK( tid1 ) && SvROK( tid2 ) &&
83 sv_derived_from( tid1, CHAR_P "Wx::TreeItemId" ) &&
84 sv_derived_from( tid2, CHAR_P "Wx::TreeItemId" ) )
86 wxTreeItemId* id1 = (wxTreeItemId*)
87 wxPli_sv_2_object( aTHX_ tid1, "Wx::TreeItemId" );
88 wxTreeItemId* id2 = (wxTreeItemId*)
89 wxPli_sv_2_object( aTHX_ tid2, "Wx::TreeItemId" );
91 RETVAL = *id1 == *id2 ? 0 : 1;
97 MODULE=Wx PACKAGE=Wx::TreeEvent
100 wxTreeEvent::new( commandType = wxEVT_NULL, id = 0 )
101 wxEventType commandType
105 wxTreeEvent::GetItem()
107 RETVAL = new wxTreeItemId( THIS->GetItem() );
111 #if WXPERL_W_VERSION_GE( 2, 7, 2 )
114 wxTreeCtrl::SetQuickBestSize( q )
118 wxTreeCtrl::GetQuickBestSize()
123 wxTreeEvent::GetKeyCode()
126 wxTreeEvent::GetOldItem()
128 RETVAL = new wxTreeItemId( THIS->GetOldItem() );
133 wxTreeEvent::GetPoint()
135 RETVAL = new wxPoint( THIS->GetPoint() );
140 wxTreeEvent::IsEditCancelled()
143 wxTreeEvent::GetLabel()
146 wxTreeEvent::SetToolTip( tooltip )
149 MODULE=Wx PACKAGE=Wx::TreeCtrl
155 MATCH_VOIDM_REDISP( newDefault )
156 MATCH_ANY_REDISP( newFull )
157 END_OVERLOAD( "Wx::TreeCtrl::new" )
163 RETVAL = new wxPliTreeCtrl( CLASS );
164 wxPli_create_evthandler( aTHX_ RETVAL, CLASS );
168 newFull( CLASS, parent, id = wxID_ANY, pos = wxDefaultPosition, size = wxDefaultSize, style = wxTR_HAS_BUTTONS, validator = (wxValidator*)&wxDefaultValidator, name = wxTreeCtrlNameStr )
175 wxValidator* validator
178 RETVAL = new wxPliTreeCtrl( CLASS, parent, id, pos, size,
179 style, *validator, name );
184 wxTreeCtrl::Create( parent, id = wxID_ANY, pos = wxDefaultPosition, size = wxDefaultSize, style = wxTR_HAS_BUTTONS, validator = (wxValidator*)&wxDefaultValidator, name = wxTreeCtrlNameStr )
190 wxValidator* validator
192 C_ARGS: parent, id, pos, size, style, *validator, name
195 wxTreeCtrl::AddRoot( text, image = -1, selImage = -1, data = 0 )
201 RETVAL = new wxTreeItemId( THIS->AddRoot( text, image, selImage, data ) );
206 wxTreeCtrl::AppendItem( parent, text, image = -1, selImage = -1, data = 0 )
213 RETVAL = new wxTreeItemId( THIS->AppendItem( *parent, text, image,
219 wxTreeCtrl::Collapse( item )
222 THIS->Collapse( *item );
224 #if WXPERL_W_VERSION_GE( 2, 8, 3 )
227 wxTreeCtrl::CollapseAll()
230 wxTreeCtrl::CollapseAllChildren( item )
237 wxTreeCtrl::CollapseAndReset( item )
242 wxTreeCtrl::Delete( item )
247 wxTreeCtrl::DeleteChildren( item )
252 wxTreeCtrl::DeleteAllItems()
255 wxTreeCtrl::EditLabel( item )
258 THIS->EditLabel( *item );
260 #if defined( __WXMSW__ )
262 #if WXPERL_W_VERSION_GE( 2, 5, 3 )
265 wxTreeCtrl::EndEditLabel( item, discardChanges = false )
268 C_ARGS: *item, discardChanges
273 wxTreeCtrl::EndEditLabel( cancelEdit )
281 wxTreeCtrl::EnsureVisible( item )
285 #if WXPERL_W_VERSION_GE( 2, 7, 2 )
288 wxTreeCtrl::ExpandAll()
293 wxTreeCtrl::Expand( item )
297 #if WXPERL_W_VERSION_GE( 2, 7, 0 )
300 wxTreeCtrl::ExpandAllChildren( item )
307 wxTreeCtrl::GetBoundingRect( item, textOnly = false )
313 bool ret = THIS->GetBoundingRect( *item, rect, textOnly );
316 SV* ret = sv_newmortal();
317 wxPli_non_object_2_sv( aTHX_ ret, new wxRect( rect ), "Wx::Rect" );
326 wxTreeCtrl::GetChildrenCount( item, recursively = true )
329 C_ARGS: *item, recursively
332 wxTreeCtrl::GetCount()
335 wxTreeCtrl::GetItemData( item )
338 RETVAL = (wxPliTreeItemData*) THIS->GetItemData( *item );
343 wxTreeCtrl::GetPlData( item )
346 wxPliTreeItemData* data = (wxPliTreeItemData*) THIS->GetItemData( *item );
347 RETVAL = data ? data->m_data : 0;
351 #if defined( __WXMSW__ ) || defined( __WXPERL_FORCE__ )
354 wxTreeCtrl::GetEditControl()
359 wxTreeCtrl::GetFirstChild( item )
362 #if WXPERL_W_VERSION_GE( 2, 5, 1 )
368 wxTreeItemId ret = THIS->GetFirstChild( *item, cookie );
369 #if WXPERL_W_VERSION_LT( 2, 5, 1 )
370 if( !ret.IsOk() ) cookie = -1;
373 PUSHs( wxPli_non_object_2_sv( aTHX_ sv_newmortal(),
374 new wxTreeItemId( ret ),
375 "Wx::TreeItemId" ) );
376 #if WXPERL_W_VERSION_GE( 2, 5, 1 )
377 PUSHs( sv_2mortal( newSViv( PTR2IV( cookie ) ) ) );
379 PUSHs( sv_2mortal( newSViv( cookie ) ) );
383 wxTreeCtrl::GetFirstVisibleItem()
385 RETVAL = new wxTreeItemId( THIS->GetFirstVisibleItem() );
390 wxTreeCtrl::GetImageList()
394 wxPli_object_set_deleteable( aTHX_ ST(0), false );
396 #if !defined( __WXMSW__ )
399 wxTreeCtrl::GetButtonsImageList()
403 wxPli_object_set_deleteable( aTHX_ ST(0), false );
408 wxTreeCtrl::GetIndent()
411 wxTreeCtrl::GetItemImage( item, which = wxTreeItemIcon_Normal )
417 wxTreeCtrl::GetItemText( item )
422 wxTreeCtrl::GetItemBackgroundColour( item )
425 RETVAL = new wxColour( THIS->GetItemBackgroundColour( *item ) );
429 wxTreeCtrl::GetItemTextColour( item )
432 RETVAL = new wxColour( THIS->GetItemTextColour( *item ) );
436 wxTreeCtrl::GetItemFont( item )
439 RETVAL = new wxFont( THIS->GetItemFont( *item ) );
443 wxTreeCtrl::GetLastChild( item )
446 RETVAL = new wxTreeItemId( THIS->GetLastChild( *item ) );
450 #if WXPERL_W_VERSION_GE( 2, 5, 1 )
453 wxTreeCtrl::GetNextChild( item, cookie )
457 void* realcookie = INT2PTR( void*, cookie );
459 wxTreeItemId ret = THIS->GetNextChild( *item, realcookie );
461 PUSHs( wxPli_non_object_2_sv( aTHX_ sv_newmortal(),
462 new wxTreeItemId( ret ),
463 "Wx::TreeItemId" ) );
464 PUSHs( sv_2mortal( newSViv( PTR2IV( realcookie ) ) ) );
469 wxTreeCtrl::GetNextChild( item, cookie )
473 wxTreeItemId ret = THIS->GetNextChild( *item, cookie );
475 PUSHs( wxPli_non_object_2_sv( aTHX_ sv_newmortal(),
476 new wxTreeItemId( ret ),
477 "Wx::TreeItemId" ) );
478 PUSHs( sv_2mortal( newSViv( cookie ) ) );
483 wxTreeCtrl::GetNextSibling( item )
486 RETVAL = new wxTreeItemId( THIS->GetNextSibling( *item ) );
491 wxTreeCtrl::GetNextVisible( item )
494 RETVAL = new wxTreeItemId( THIS->GetNextVisible( *item ) );
498 ## DECLARE_OVERLOAD( wtid, Wx::TreeItemId )
501 wxTreeCtrl::GetParent( ... )
504 MATCH_VOIDM_REDISP( Wx::Window::GetParent )
505 MATCH_REDISP( wxPliOvl_wtid, GetItemParent )
506 END_OVERLOAD( Wx::TreeCtrl::GetParent )
509 wxTreeCtrl::GetItemParent( item )
512 RETVAL = new wxTreeItemId(
513 THIS->GetItemParent( *item )
519 wxTreeCtrl::GetPrevSibling( item )
522 RETVAL = new wxTreeItemId( THIS->GetPrevSibling( *item ) );
527 wxTreeCtrl::GetPrevVisible( item )
530 RETVAL = new wxTreeItemId( THIS->GetPrevVisible( *item ) );
535 wxTreeCtrl::GetRootItem()
537 RETVAL = new wxTreeItemId( THIS->GetRootItem() );
542 wxTreeCtrl::GetSelection()
544 RETVAL = new wxTreeItemId( THIS->GetSelection() );
549 wxTreeCtrl::GetSelections()
551 wxArrayTreeItemIds selections;
553 size_t num = THIS->GetSelections( selections );
554 EXTEND( SP, (IV)num );
555 for( size_t i = 0; i < num; ++i )
557 PUSHs( wxPli_non_object_2_sv( aTHX_ sv_newmortal(),
558 new wxTreeItemId( selections[i] ),
559 "Wx::TreeItemId" ) );
563 wxTreeCtrl::GetStateImageList()
567 wxPli_object_set_deleteable( aTHX_ ST(0), false );
570 wxTreeCtrl::HitTest( point )
575 wxTreeItemId ret = THIS->HitTest( point, flags );
577 PUSHs( wxPli_non_object_2_sv( aTHX_ sv_newmortal(),
578 new wxTreeItemId( ret ),
579 "Wx::TreeItemId" ) );
580 PUSHs( sv_2mortal( newSViv( flags ) ) );
583 wxTreeCtrl::InsertItem( ... )
586 MATCH_REDISP_COUNT_ALLOWMORE( wxPliOvl_wtid_wtid_s_n_n, InsertItemPrev, 3 )
587 MATCH_REDISP_COUNT_ALLOWMORE( wxPliOvl_wtid_n_s_n_n, InsertItemBef, 3 )
588 END_OVERLOAD( Wx::TreeCtrl::InsertItem )
591 wxTreeCtrl::InsertItemPrev( parent, previous, text, image = -1, selImage = -1, data = 0 )
593 wxTreeItemId* previous
599 RETVAL = new wxTreeItemId( THIS->InsertItem( *parent, *previous, text,
600 image, selImage, data ) );
605 wxTreeCtrl::InsertItemBef( parent, before, text, image = -1, selImage = -1, data = 0 )
613 RETVAL = new wxTreeItemId( THIS->InsertItem( *parent, before, text,
614 image, selImage, data ) );
619 wxTreeCtrl::IsBold( item )
624 wxTreeCtrl::IsExpanded( item )
629 wxTreeCtrl::IsSelected( item )
634 wxTreeCtrl::IsVisible( item )
638 #if WXPERL_W_VERSION_GE( 2, 8, 3 )
641 wxTreeCtrl::IsEmpty()
646 wxTreeCtrl::ItemHasChildren( item )
651 wxTreeCtrl::OnCompareItems( item1, item2 )
655 RETVAL = THIS->wxTreeCtrl::OnCompareItems( *item1, *item2 );
659 wxTreeCtrl::PrependItem( parent, text, image = -1, selImage = -1, data = 0 )
666 RETVAL = new wxTreeItemId( THIS->PrependItem( *parent, text, image,
672 wxTreeCtrl::ScrollTo( item )
676 #if WXPERL_W_VERSION_GE( 2, 5, 2 )
679 wxTreeCtrl::SelectItem( item, select = true )
682 C_ARGS: *item, select
687 wxTreeCtrl::SelectItem( item )
694 wxTreeCtrl::SetIndent( indent )
698 wxTreeCtrl::SetImageList( list )
701 #if !defined( __WXMSW__ )
704 wxTreeCtrl::SetButtonsImageList( list )
710 wxTreeCtrl::SetStateImageList( list )
714 wxTreeCtrl::AssignImageList( list )
717 wxPli_object_set_deleteable( aTHX_ ST(1), false );
718 THIS->AssignImageList( list );
721 wxTreeCtrl::AssignButtonsImageList( list )
724 wxPli_object_set_deleteable( aTHX_ ST(1), false );
725 THIS->AssignStateImageList( list );
728 wxTreeCtrl::AssignStateImageList( list )
731 wxPli_object_set_deleteable( aTHX_ ST(1), false );
732 THIS->AssignStateImageList( list );
735 wxTreeCtrl::SetItemBackgroundColour( item, col )
741 wxTreeCtrl::SetItemBold( item, bold = true )
747 wxTreeCtrl::SetItemData( item, data )
751 wxTreeItemData* tid = THIS->GetItemData( *item );
752 if( tid ) delete tid;
753 THIS->SetItemData( *item, data );
756 wxTreeCtrl::SetPlData( item, data )
760 wxTreeItemData* tid = THIS->GetItemData( *item );
761 if( tid ) delete tid;
762 THIS->SetItemData( *item, data ? new wxPliTreeItemData( data ) : 0 );
764 #if defined( __WXMSW__ )
767 wxTreeCtrl::SetItemDropHighlight( item, highlight = true )
770 C_ARGS: *item, highlight
775 wxTreeCtrl::SetItemFont( item, font )
781 wxTreeCtrl::SetItemHasChildren( item, hasChildren = true )
784 C_ARGS: *item, hasChildren
787 wxTreeCtrl::SetItemImage( item, image, which = wxTreeItemIcon_Normal )
791 C_ARGS: *item, image, which
794 wxTreeCtrl::SetItemText( item, text )
800 wxTreeCtrl::SetItemTextColour( item, col )
806 wxTreeCtrl::SortChildren( item )
811 wxTreeCtrl::Toggle( item )
815 #if WXPERL_W_VERSION_GE( 2, 5, 3 )
818 wxTreeCtrl::UnselectItem( item )
823 wxTreeCtrl::ToggleItemSelection( item )
830 wxTreeCtrl::Unselect()
833 wxTreeCtrl::UnselectAll()