1 #############################################################################
2 ## Name: XS/ListCtrl.xs
3 ## Purpose: XS for Wx::ListCtrl, Wx::ListItem
4 ## Author: Mattia Barbon
7 ## RCS-ID: $Id: ListCtrl.xs 2145 2007-08-15 10:22:29Z mbarbon $
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/colour.h>
14 #include <wx/listctrl.h>
16 #if WXPERL_W_VERSION_LT( 2, 6, 0 )
17 #define wxListCtrlNameStr wxT("listCtrl")
20 MODULE=Wx_Evt PACKAGE=Wx::ListEvent
23 wxListEvent::new( eventType = wxEVT_NULL, id = 0 )
27 #if WXPERL_W_VERSION_GE( 2, 5, 1 )
30 wxListEvent::IsEditCancelled()
35 wxListEvent::GetCacheFrom()
38 wxListEvent::GetCacheTo()
41 wxListEvent::GetIndex()
44 wxListEvent::GetColumn()
47 wxListEvent::GetKeyCode()
50 wxListEvent::GetPoint()
52 RETVAL = new wxPoint( THIS->GetPoint() );
57 wxListEvent::GetLabel()
60 wxListEvent::GetText()
63 wxListEvent::GetImage()
66 wxListEvent::GetData()
69 wxListEvent::GetMask()
72 wxListEvent::GetItem()
74 RETVAL = new wxListItem( THIS->GetItem() );
78 MODULE=Wx PACKAGE=Wx::ListItem
86 wxPli_thread_sv_clone( aTHX_ CLASS, (wxPliCloneSV)wxPli_detach_object );
92 wxPli_thread_sv_unregister( aTHX_ "Wx::ListItem", THIS, ST(0) );
99 wxListItem::ClearAttributes()
102 wxListItem::SetMask( mask )
106 wxListItem::SetId( id )
110 wxListItem::SetColumn( column )
114 wxListItem::SetState( state )
118 wxListItem::SetStateMask( stateMask )
122 wxListItem::SetText( text )
126 wxListItem::SetImage( image )
130 wxListItem::SetData( data )
134 wxListItem::SetWidth( width )
138 wxListItem::SetAlign( align )
139 wxListColumnFormat align
142 wxListItem::SetTextColour( colour )
146 wxListItem::SetBackgroundColour( colour )
150 wxListItem::SetFont( font )
155 wxListItem::GetMask()
161 wxListItem::GetColumn()
164 wxListItem::GetState()
167 wxListItem::GetText()
170 wxListItem::GetImage()
173 wxListItem::GetData()
176 wxListItem::GetWidth()
179 wxListItem::GetAlign()
182 wxListItem::GetTextColour()
184 RETVAL = new wxColour( THIS->GetTextColour() );
189 wxListItem::GetBackgroundColour()
191 RETVAL = new wxColour( THIS->GetBackgroundColour() );
196 wxListItem::GetFont()
198 RETVAL = new wxFont( THIS->GetFont() );
202 MODULE=Wx PACKAGE=Wx::ListItemAttr
205 wxListItemAttr::new( ... )
208 RETVAL = new wxListItemAttr();
213 wxColour text = NO_INIT
214 wxColour back = NO_INIT
215 wxFont* font = NO_INIT
217 text = *(wxColour *) wxPli_sv_2_object( aTHX_ ST(1), "Wx::Colour" );
218 back = *(wxColour *) wxPli_sv_2_object( aTHX_ ST(2), "Wx::Colour" );
219 font = (wxFont *) wxPli_sv_2_object( aTHX_ ST(3), "Wx::Font" );
220 RETVAL = new wxListItemAttr( text, back, *font );
225 croak( "Usage: Wx::ListItemAttr::new(THIS [, text, back, font ] )" );
228 wxListItemAttr::CLONE()
230 wxPli_thread_sv_clone( aTHX_ CLASS, (wxPliCloneSV)wxPli_detach_object );
234 wxListItemAttr::DESTROY()
236 wxPli_thread_sv_unregister( aTHX_ "Wx::ListItemAttr", THIS, ST(0) );
240 wxListItemAttr::SetTextColour( text )
244 wxListItemAttr::SetBackgroundColour( back )
248 wxListItemAttr::SetFont( font )
251 THIS->SetFont( *font );
254 wxListItemAttr::HasTextColour()
257 wxListItemAttr::HasBackgroundColour()
260 wxListItemAttr::HasFont()
263 wxListItemAttr::GetTextColour()
265 RETVAL = new wxColour( THIS->GetTextColour() );
270 wxListItemAttr::GetBackgroundColour()
272 RETVAL = new wxColour( THIS->GetBackgroundColour() );
277 wxListItemAttr::GetFont()
279 RETVAL = new wxFont( THIS->GetFont() );
283 MODULE=Wx PACKAGE=Wx::ListCtrl
288 #!sub OnGetItemColumnImage
294 MATCH_VOIDM_REDISP( newDefault )
295 MATCH_ANY_REDISP( newFull )
296 END_OVERLOAD( "Wx::ListCtrl::new" )
302 RETVAL = new wxPliListCtrl( CLASS );
303 wxPli_create_evthandler( aTHX_ RETVAL, CLASS );
307 newFull( CLASS, parent, id = wxID_ANY, pos = wxDefaultPosition, size = wxDefaultSize, style = wxLC_ICON, validator = (wxValidator*)&wxDefaultValidator, name = wxListCtrlNameStr )
314 wxValidator* validator
317 RETVAL = new wxPliListCtrl( CLASS, parent, id, pos, size, style,
323 wxListCtrl::Create( parent, id = wxID_ANY, pos = wxDefaultPosition, size = wxDefaultSize, style = wxLC_ICON, validator = (wxValidator*)&wxDefaultValidator, name = wxListCtrlNameStr )
329 wxValidator* validator
331 C_ARGS: parent, id, pos, size, style, *validator, name
334 wxListCtrl::Arrange( flag = wxLIST_ALIGN_DEFAULT )
338 wxListCtrl::AssignImageList( imagelist, which )
339 wxImageList* imagelist
342 wxPli_object_set_deleteable( aTHX_ ST(1), false );
343 THIS->AssignImageList( imagelist, which );
346 wxListCtrl::ClearAll()
349 wxListCtrl::DeleteItem( item )
353 wxListCtrl::DeleteAllItems()
356 wxListCtrl::DeleteColumn( col )
360 wxListCtrl::EditLabel( item )
364 wxListCtrl::EnsureVisible( item )
368 wxListCtrl::FindItem( start, str, partial = false )
373 RETVAL = THIS->FindItem( start, str, partial );
378 wxListCtrl::FindItemData( start, data )
382 RETVAL = THIS->FindItem( start, data );
387 wxListCtrl::FindItemAtPos( start, pt, direction )
392 RETVAL = THIS->FindItem( start, pt, direction );
397 wxListCtrl::GetColumn( col )
402 item.SetMask( wxLIST_MASK_TEXT|wxLIST_MASK_IMAGE|wxLIST_MASK_FORMAT );
403 if( THIS->GetColumn( col, item ) )
405 RETVAL = new wxListItem( item );
415 wxListCtrl::GetColumnCount()
418 wxListCtrl::GetColumnWidth( col )
422 wxListCtrl::GetCountPerPage()
424 #if defined( __WXMSW__ ) || defined( __WXPERL_FORCE__ )
427 wxListCtrl::GetEditControl()
432 wxListCtrl::GetImageList( which )
435 RETVAL = (wxImageList*)THIS->GetImageList( which );
439 wxPli_object_set_deleteable( aTHX_ ST(0), false );
442 wxListCtrl::GetItem( id, col = -1 )
449 if( col != -1 ) { item.SetColumn( col ); }
450 item.SetMask( wxLIST_MASK_TEXT|wxLIST_MASK_DATA|wxLIST_MASK_IMAGE|
452 if( THIS->GetItem( item ) )
454 RETVAL = new wxListItem( item );
464 wxListCtrl::GetItemData( item )
468 wxListCtrl::GetItemPosition( item )
473 if( THIS->GetItemPosition( item, point ) )
475 RETVAL = new wxPoint( point );
485 wxListCtrl::GetItemRect( item, code = wxLIST_RECT_BOUNDS )
491 if( THIS->GetItemRect( item, rect, code ) )
493 RETVAL = new wxRect( rect );
501 #if WXPERL_W_VERSION_GE( 2, 7, 2 ) && defined(__WXMSW__)
504 wxListCtrl::GetSubItemRect( item, subItem, code = wxLIST_RECT_BOUNDS )
511 if( THIS->GetSubItemRect( item, subItem, rect, code ) )
513 RETVAL = new wxRect( rect );
524 wxListCtrl::GetItemState( item, stateMask )
529 wxListCtrl::GetItemCount()
531 #if WXPERL_W_VERSION_LE( 2, 5, 1 )
534 wxListCtrl::GetItemSpacing( isSmall )
540 wxListCtrl::GetItemSpacing()
542 RETVAL = new wxSize( THIS->GetItemSpacing() );
548 wxListCtrl::GetItemText( item )
552 wxListCtrl::GetItemTextColour( item )
555 RETVAL = new wxColour( THIS->GetItemTextColour( item ) );
560 wxListCtrl::GetItemBackgroundColour( item )
563 RETVAL = new wxColour( THIS->GetItemBackgroundColour( item ) );
568 wxListCtrl::SetItemTextColour( item, colour )
572 THIS->SetItemTextColour( item, *colour );
575 wxListCtrl::SetItemBackgroundColour( item, colour )
579 THIS->SetItemBackgroundColour( item, *colour );
582 wxListCtrl::GetNextItem( item, geometry = wxLIST_NEXT_ALL, state = wxLIST_STATE_DONTCARE )
588 wxListCtrl::GetSelectedItemCount()
591 wxListCtrl::GetTextColour()
593 RETVAL = new wxColour( THIS->GetTextColour() );
598 wxListCtrl::GetTopItem()
600 #if WXPERL_W_VERSION_GE( 2, 5, 1 )
603 wxListCtrl::GetViewRect()
605 RETVAL = new wxRect( THIS->GetViewRect() );
611 wxListCtrl::HitTest( point )
616 #if WXPERL_W_VERSION_GE( 2, 7, 2 )
620 #if WXPERL_W_VERSION_GE( 2, 7, 2 )
621 item = THIS->HitTest( point, flags, &subitem );
623 item = THIS->HitTest( point, flags );
626 PUSHs( sv_2mortal( newSViv( item ) ) );
627 PUSHs( sv_2mortal( newSViv( flags ) ) );
628 #if WXPERL_W_VERSION_GE( 2, 7, 2 )
629 PUSHs( sv_2mortal( newSViv( subitem ) ) );
633 wxListCtrl::InsertColumn( ... )
636 MATCH_REDISP( wxPliOvl_n_wlci, InsertColumnInfo )
637 MATCH_REDISP_COUNT_ALLOWMORE( wxPliOvl_n_s_n_n, InsertColumnString, 2 )
638 END_OVERLOAD( Wx::ListCtrl::InsertColumn )
641 wxListCtrl::InsertColumnInfo( col, info )
645 RETVAL = THIS->InsertColumn( col, *info );
650 wxListCtrl::InsertColumnString( col, heading, format = wxLIST_FORMAT_LEFT, width = -1 )
656 RETVAL = THIS->InsertColumn( col, heading, format, width );
661 wxListCtrl::InsertItem( info )
664 RETVAL = THIS->InsertItem( *info );
669 wxListCtrl::InsertStringItem( index, label )
673 RETVAL = THIS->InsertItem( index, label );
678 wxListCtrl::InsertImageItem( index, image )
682 RETVAL = THIS->InsertItem( index, image );
687 wxListCtrl::InsertImageStringItem( index, label, image )
692 RETVAL = THIS->InsertItem( index, label, image );
697 wxListCtrl::IsVirtual()
700 wxListCtrl::RefreshItem( item )
704 wxListCtrl::RefreshItems( itemFrom, itemTo )
709 wxListCtrl::ScrollList( dx, dy )
714 wxListCtrl::SetColumn( col, item )
718 RETVAL = THIS->SetColumn( col, *item );
723 wxListCtrl::SetColumnWidth( col, width )
728 wxListCtrl::SetImageList( imagelist, which )
729 wxImageList* imagelist
733 wxListCtrl::SetItemCount( count )
737 wxListCtrl::SetItem( ... )
740 MATCH_REDISP( wxPliOvl_wlci, SetItemInfo )
741 MATCH_REDISP_COUNT_ALLOWMORE( wxPliOvl_n_n_s_n, SetItemString, 3 )
742 END_OVERLOAD( Wx::ListCtrl::SetItem )
745 wxListCtrl::SetItemInfo( info )
748 RETVAL = THIS->SetItem( *info );
753 wxListCtrl::SetItemString( index, col, label, image = -1 )
759 RETVAL = THIS->SetItem( index, col, label, image );
764 wxListCtrl::SetItemData( item, data )
769 wxListCtrl::SetItemImage( item, image, selImage )
774 #if WXPERL_W_VERSION_GE( 2, 7, 2 )
777 wxListCtrl::SetItemColumnImage( item, column, image )
785 wxListCtrl::SetItemPosition( item, pos )
790 wxListCtrl::SetItemState( item, state, stateMask )
796 wxListCtrl::SetItemText( item, text )
801 wxListCtrl::SetSingleStyle( style, add = true )
806 wxListCtrl::SetTextColour( colour )
810 wxListCtrl::SetWindowStyleFlag( style )
814 wxListCtrl::SortItems( function )
817 RETVAL = THIS->SortItems( (wxListCtrlCompare)&ListCtrlCompareFn,
822 MODULE=Wx PACKAGE=Wx::ListView
828 MATCH_VOIDM_REDISP( newDefault )
829 MATCH_ANY_REDISP( newFull )
830 END_OVERLOAD( "Wx::ListView::new" )
836 RETVAL = new wxListView();
837 wxPli_create_evthandler( aTHX_ RETVAL, CLASS );
841 newFull( CLASS, parent, id = wxID_ANY, pos = wxDefaultPosition, size = wxDefaultSize, style = wxLC_REPORT, validator = (wxValidator*)&wxDefaultValidator, name = wxListCtrlNameStr )
848 wxValidator* validator
851 RETVAL = new wxListView( parent, id, pos, size, style,
853 wxPli_create_evthandler( aTHX_ RETVAL, CLASS );
858 wxListView::Create( parent, id = wxID_ANY, pos = wxDefaultPosition, size = wxDefaultSize, style = wxLC_REPORT, validator = (wxValidator*)&wxDefaultValidator, name = wxListCtrlNameStr )
864 wxValidator* validator
866 C_ARGS: parent, id, pos, size, style, *validator, name
869 wxListView::Select( n, on )
874 wxListView::SetColumnImage( col, image )
879 wxListView::ClearColumnImage( col )
883 wxListView::Focus( index )
887 wxListView::GetFocusedItem()
890 wxListView::GetFirstSelected()
893 wxListView::GetNextSelected( item )
897 wxListView::IsSelected( index )