1 /////////////////////////////////////////////////////////////////////////////
2 // Name: cpp/controls.cpp
3 // Purpose: implementation for controls.h
4 // Author: Mattia Barbon
7 // RCS-ID: $Id: controls.cpp 2442 2008-08-12 22:35:24Z mbarbon $
8 // Copyright: (c) 2000-2008 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 "cpp/constants.h"
16 // Wx::ListCtrl implementation
19 WXPLI_IMPLEMENT_DYNAMIC_CLASS( wxPliListCtrl, wxListCtrl );
21 double listctrl_constant( const char* name, int arg )
24 // !parser: sub { $_[0] =~ m<^\s*r\w*\(\s*(\w+)\s*\);\s*(?://(.*))?$> }
27 if( strEQ( name, #n ) ) \
30 WX_PL_CONSTANT_INIT();
35 r( wxEVT_COMMAND_LIST_BEGIN_DRAG );
36 r( wxEVT_COMMAND_LIST_BEGIN_RDRAG );
37 r( wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT );
38 r( wxEVT_COMMAND_LIST_CACHE_HINT );
39 r( wxEVT_COMMAND_LIST_COL_RIGHT_CLICK );
40 r( wxEVT_COMMAND_LIST_COL_BEGIN_DRAG );
41 r( wxEVT_COMMAND_LIST_COL_DRAGGING );
42 r( wxEVT_COMMAND_LIST_COL_END_DRAG );
43 r( wxEVT_COMMAND_LIST_END_LABEL_EDIT );
44 r( wxEVT_COMMAND_LIST_DELETE_ITEM );
45 r( wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS );
46 #if WXPERL_W_VERSION_LE( 2, 5, 2 )
47 r( wxEVT_COMMAND_LIST_SET_INFO );
48 r( wxEVT_COMMAND_LIST_GET_INFO );
50 r( wxEVT_COMMAND_LIST_ITEM_SELECTED );
51 r( wxEVT_COMMAND_LIST_ITEM_DESELECTED );
52 r( wxEVT_COMMAND_LIST_KEY_DOWN );
53 r( wxEVT_COMMAND_LIST_INSERT_ITEM );
54 r( wxEVT_COMMAND_LIST_COL_CLICK );
55 r( wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK );
56 r( wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK );
57 r( wxEVT_COMMAND_LIST_ITEM_ACTIVATED );
58 r( wxEVT_COMMAND_LIST_ITEM_FOCUSED );
61 r( wxIMAGE_LIST_NORMAL ); // listctrl
62 r( wxIMAGE_LIST_SMALL ); // listctrl
63 r( wxIMAGE_LIST_STATE ); // listctrl
66 r( wxLIST_AUTOSIZE ); // listctrl
67 r( wxLIST_AUTOSIZE_USEHEADER ); // listctrl
69 r( wxLIST_ALIGN_DEFAULT ); // listctrl
70 r( wxLIST_ALIGN_LEFT ); // listctrl
71 r( wxLIST_ALIGN_TOP ); // listctrl
72 r( wxLIST_ALIGN_SNAP_TO_GRID ); // listctrl
74 r( wxLIST_FIND_UP ); // listctrl
75 r( wxLIST_FIND_DOWN ); // listctrl
76 r( wxLIST_FIND_LEFT ); // listctrl
77 r( wxLIST_FIND_RIGHT ); // listctrl
79 r( wxLIST_FORMAT_LEFT ); // listctrl
80 r( wxLIST_FORMAT_RIGHT ); // listctrl
81 r( wxLIST_FORMAT_CENTRE ); // listctrl
82 r( wxLIST_FORMAT_CENTER ); // listctrl
84 r( wxLIST_HITTEST_ABOVE ); // listctrl
85 r( wxLIST_HITTEST_BELOW ); // listctrl
86 r( wxLIST_HITTEST_NOWHERE ); // listctrl
87 r( wxLIST_HITTEST_ONITEMICON ); // listctrl
88 r( wxLIST_HITTEST_ONITEMLABEL ); // listctrl
89 r( wxLIST_HITTEST_ONITEMRIGHT ); // listctrl
90 r( wxLIST_HITTEST_ONITEMSTATEICON );// listctrl
91 r( wxLIST_HITTEST_TOLEFT ); // listctrl
92 r( wxLIST_HITTEST_TORIGHT ); // listctrl
93 r( wxLIST_HITTEST_ONITEM ); // listctrl
95 #if WXPERL_W_VERSION_GE( 2, 7, 2 )
96 r( wxLIST_GETSUBITEMRECT_WHOLEITEM ); // listctrl
99 r( wxLIST_MASK_STATE ); // listctrl
100 r( wxLIST_MASK_TEXT ); // listctrl
101 r( wxLIST_MASK_IMAGE ); // listctrl
102 r( wxLIST_MASK_DATA ); // listctrl
103 r( wxLIST_MASK_WIDTH ); // listctrl
104 r( wxLIST_MASK_FORMAT ); // listctrl
106 r( wxLIST_NEXT_ABOVE ); // listctrl
107 r( wxLIST_NEXT_ALL ); // listctrl
108 r( wxLIST_NEXT_BELOW ); // listctrl
109 r( wxLIST_NEXT_LEFT ); // listctrl
110 r( wxLIST_NEXT_RIGHT ); // listctrl
112 r( wxLIST_RECT_BOUNDS ); // listctrl
113 r( wxLIST_RECT_ICON ); // listctrl
114 r( wxLIST_RECT_LABEL ); // listctrl
116 r( wxLIST_STATE_DONTCARE ); // listctrl
117 r( wxLIST_STATE_DROPHILITED ); // listctrl
118 r( wxLIST_STATE_FOCUSED ); // listctrl
119 r( wxLIST_STATE_SELECTED ); // listctrl
120 r( wxLIST_STATE_CUT ); // listctrl
122 r( wxLIST_SET_ITEM ); // listctrl
123 r( wxLC_VRULES ); // listctrl
124 r( wxLC_HRULES ); // listctrl
125 r( wxLC_ICON ); // listctrl
126 r( wxLC_SMALL_ICON ); // listctrl
127 r( wxLC_LIST ); // listctrl
128 r( wxLC_REPORT ); // listctrl
129 r( wxLC_ALIGN_TOP ); // listctrl
130 r( wxLC_ALIGN_LEFT ); // listctrl
131 r( wxLC_AUTOARRANGE ); // listctrl
132 r( wxLC_USER_TEXT ); // listctrl
133 r( wxLC_EDIT_LABELS ); // listctrl
134 r( wxLC_NO_HEADER ); // listctrl
135 r( wxLC_NO_SORT_HEADER ); // listctrl
136 r( wxLC_SINGLE_SEL ); // listctrl
137 r( wxLC_SORT_ASCENDING ); // listctrl
138 r( wxLC_SORT_DESCENDING ); // listctrl
139 r( wxLC_VIRTUAL ); // listctrl
144 WX_PL_CONSTANT_CLEANUP();
147 wxPlConstants listctrl_module( &listctrl_constant );
149 wxString wxPliListCtrl::OnGetItemText( long item, long column ) const
152 wxPliVirtualCallback* cb = (wxPliVirtualCallback*)&m_callback;
153 if( wxPliVirtualCallback_FindCallback( aTHX_ cb, "OnGetItemText" ) )
155 SV* ret = wxPliVirtualCallback_CallCallback( aTHX_ cb, G_SCALAR,
156 "ll", item, column );
158 WXSTRING_INPUT( val, char*, ret );
163 return wxListCtrl::OnGetItemText( item, column );
166 int wxPliListCtrl::OnGetItemImage( long item ) const
169 wxPliVirtualCallback* cb = (wxPliVirtualCallback*)&m_callback;
170 if( wxPliVirtualCallback_FindCallback( aTHX_ cb, "OnGetItemImage" ) )
172 SV* ret = wxPliVirtualCallback_CallCallback( aTHX_ cb,
173 G_SCALAR, "l", item );
174 int val = SvIV( ret );
179 return wxListCtrl::OnGetItemImage( item );
182 wxListItemAttr* wxPliListCtrl::OnGetItemAttr( long item ) const
185 wxPliVirtualCallback* cb = (wxPliVirtualCallback*)&m_callback;
186 if( wxPliVirtualCallback_FindCallback( aTHX_ cb, "OnGetItemAttr" ) )
188 SV* ret = wxPliVirtualCallback_CallCallback( aTHX_ cb,
189 G_SCALAR, "l", item );
190 wxListItemAttr* val = (wxListItemAttr*)
191 wxPli_sv_2_object( aTHX_ ret, "Wx::ListItemAttr" );
192 val = val ? new wxListItemAttr( *val ) : NULL;
197 return wxListCtrl::OnGetItemAttr( item );
200 #if WXPERL_W_VERSION_GE( 2, 7, 2 )
201 DEF_V_CBACK_INT__LONG_LONG_const( wxPliListCtrl, wxListCtrl, OnGetItemColumnImage );
205 // Wx::TreeCtrl implementation
208 WXPLI_IMPLEMENT_DYNAMIC_CLASS( wxPliTreeCtrl, wxTreeCtrl );
210 double treectrl_constant( const char* name, int arg )
213 // !parser: sub { $_[0] =~ m<^\s*r\w*\(\s*(\w+)\s*\);\s*(?://(.*))?$> }
216 if( strEQ( name, #n ) ) \
219 WX_PL_CONSTANT_INIT();
223 r( wxEVT_COMMAND_TREE_BEGIN_DRAG );
224 r( wxEVT_COMMAND_TREE_BEGIN_RDRAG );
225 r( wxEVT_COMMAND_TREE_BEGIN_LABEL_EDIT );
226 r( wxEVT_COMMAND_TREE_END_LABEL_EDIT );
227 r( wxEVT_COMMAND_TREE_DELETE_ITEM );
228 r( wxEVT_COMMAND_TREE_GET_INFO );
229 r( wxEVT_COMMAND_TREE_SET_INFO );
230 r( wxEVT_COMMAND_TREE_ITEM_EXPANDED );
231 r( wxEVT_COMMAND_TREE_ITEM_EXPANDING );
232 r( wxEVT_COMMAND_TREE_ITEM_COLLAPSED );
233 r( wxEVT_COMMAND_TREE_ITEM_COLLAPSING );
234 r( wxEVT_COMMAND_TREE_SEL_CHANGED );
235 r( wxEVT_COMMAND_TREE_SEL_CHANGING );
236 r( wxEVT_COMMAND_TREE_KEY_DOWN );
237 r( wxEVT_COMMAND_TREE_ITEM_ACTIVATED );
238 #if WXPERL_W_VERSION_GE( 2, 6, 0 )
239 r( wxEVT_COMMAND_TREE_ITEM_MENU );
241 r( wxEVT_COMMAND_TREE_ITEM_RIGHT_CLICK );
242 r( wxEVT_COMMAND_TREE_ITEM_MIDDLE_CLICK );
243 r( wxEVT_COMMAND_TREE_END_DRAG );
244 #if defined(__WXMSW__)
245 r( wxEVT_COMMAND_TREE_STATE_IMAGE_CLICK );
246 r( wxEVT_COMMAND_TREE_ITEM_GETTOOLTIP );
251 r( wxTR_DEFAULT_STYLE ); // treectrl
252 r( wxTR_EDIT_LABELS ); // treectrl
253 #if WXPERL_W_VERSION_LT( 2, 9, 0 ) || WXWIN_COMPATIBILITY_2_8
254 r( wxTR_EXTENDED ); // treectrl
256 r( wxTR_FULL_ROW_HIGHLIGHT ); // treectrl
257 r( wxTR_HAS_BUTTONS ); // treectrl
258 r( wxTR_HAS_VARIABLE_ROW_HEIGHT ); // treectrl
259 r( wxTR_HIDE_ROOT ); // treectrl
260 r( wxTR_LINES_AT_ROOT ); // treectrl
261 r( wxTR_MULTIPLE ); // treectrl
262 r( wxTR_NO_BUTTONS ); // treectrl
263 r( wxTR_NO_LINES ); // treectrl
264 r( wxTR_ROW_LINES ); // treectrl
265 r( wxTR_SINGLE ); // treectrl
266 r( wxTR_TWIST_BUTTONS ); // treectrl
268 r( wxTreeItemIcon_Normal ); // treectrl
269 r( wxTreeItemIcon_Selected ); // treectrl
270 r( wxTreeItemIcon_Expanded ); // treectrl
271 r( wxTreeItemIcon_SelectedExpanded ); // treectrl
273 r( wxTREE_HITTEST_ABOVE ); // treectrl
274 r( wxTREE_HITTEST_BELOW ); // treectrl
275 r( wxTREE_HITTEST_NOWHERE ); // treectrl
276 r( wxTREE_HITTEST_ONITEMBUTTON ); // treectrl
277 r( wxTREE_HITTEST_ONITEMICON ); // treectrl
278 r( wxTREE_HITTEST_ONITEMINDENT ); // treectrl
279 r( wxTREE_HITTEST_ONITEMLABEL ); // treectrl
280 r( wxTREE_HITTEST_ONITEMRIGHT ); // treectrl
281 r( wxTREE_HITTEST_ONITEMSTATEICON ); // treectrl
282 r( wxTREE_HITTEST_TOLEFT ); // treectrl
283 r( wxTREE_HITTEST_TORIGHT ); // treectrl
284 r( wxTREE_HITTEST_ONITEMUPPERPART ); // treectrl
285 r( wxTREE_HITTEST_ONITEMLOWERPART ); // treectrl
286 r( wxTREE_HITTEST_ONITEM ); // treectrl
293 WX_PL_CONSTANT_CLEANUP();
296 wxPlConstants tree_module( &treectrl_constant );
298 int wxPliTreeCtrl::OnCompareItems( const wxTreeItemId& item1,
299 const wxTreeItemId& item2 )
302 if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback,
305 SV* t1 = wxPli_non_object_2_sv( aTHX_ newSViv( 0 ),
306 (void*)&item1, "Wx::TreeItemId" );
307 SV* t2 = wxPli_non_object_2_sv( aTHX_ newSViv( 0 ),
308 (void*)&item2, "Wx::TreeItemId" );
309 SV* ret = wxPliVirtualCallback_CallCallback
310 ( aTHX_ &m_callback, G_SCALAR, "SS", t1, t2 );
312 sv_setiv( SvRV( t1 ), 0 );
313 sv_setiv( SvRV( t2 ), 0 );
314 int val = SvIV( ret );
322 return wxTreeCtrl::OnCompareItems( item1, item2 );
325 // Local variables: //