1 /////////////////////////////////////////////////////////////////////////////
 
   3 // Purpose:     SWIG interface file for wxListCtrl and related classes
 
   7 // Created:     10-June-1998
 
   9 // Copyright:   (c) 2002 by Total Control Software
 
  10 // Licence:     wxWindows license
 
  11 /////////////////////////////////////////////////////////////////////////////
 
  16 //---------------------------------------------------------------------------
 
  19 #include <wx/listctrl.h>
 
  22 MAKE_CONST_WXSTRING2(ListCtrlNameStr, _T("wxListCtrl"));
 
  24 //---------------------------------------------------------------------------
 
  55     // Mask flags to tell app/GUI what fields of wxListItem are valid
 
  64 // State flags for indicating the state of an item
 
  65     wxLIST_STATE_DONTCARE,
 
  66     wxLIST_STATE_DROPHILITED,
 
  68     wxLIST_STATE_SELECTED,
 
  70     wxLIST_STATE_DISABLED,
 
  71     wxLIST_STATE_FILTERED,
 
  76 // Hit test flags, used in HitTest
 
  79     wxLIST_HITTEST_NOWHERE,
 
  80     wxLIST_HITTEST_ONITEMICON,
 
  81     wxLIST_HITTEST_ONITEMLABEL,
 
  82     wxLIST_HITTEST_ONITEMRIGHT,
 
  83     wxLIST_HITTEST_ONITEMSTATEICON,
 
  84     wxLIST_HITTEST_TOLEFT,
 
  85     wxLIST_HITTEST_TORIGHT,
 
  86     wxLIST_HITTEST_ONITEM,
 
  90 // Flags for GetNextItem (MSW only except wxLIST_NEXT_ALL)
 
  93     wxLIST_NEXT_ABOVE,          // Searches for an item above the specified item
 
  94     wxLIST_NEXT_ALL,            // Searches for subsequent item by index
 
  95     wxLIST_NEXT_BELOW,          // Searches for an item below the specified item
 
  96     wxLIST_NEXT_LEFT,           // Searches for an item to the left of the specified item
 
  97     wxLIST_NEXT_RIGHT           // Searches for an item to the right of the specified item
 
 100 // Alignment flags for Arrange (MSW only except wxLIST_ALIGN_LEFT)
 
 103     wxLIST_ALIGN_DEFAULT,
 
 106     wxLIST_ALIGN_SNAP_TO_GRID
 
 109 // Column format (MSW only except wxLIST_FORMAT_LEFT)
 
 110 enum wxListColumnFormat
 
 114     wxLIST_FORMAT_CENTRE,
 
 115     wxLIST_FORMAT_CENTER = wxLIST_FORMAT_CENTRE
 
 118 // Autosize values for SetColumnWidth
 
 121     wxLIST_AUTOSIZE = -1,
 
 122     wxLIST_AUTOSIZE_USEHEADER = -2      // partly supported by generic version
 
 125 // Flag values for GetItemRect
 
 133 // Flag values for FindItem (MSW only)
 
 144 //---------------------------------------------------------------------------
 
 147 // wxListItemAttr: a structure containing the visual attributes of an item
 
 153     wxListItemAttr(const wxColour& colText = wxNullColour,
 
 154                    const wxColour& colBack = wxNullColour,
 
 155                    const wxFont& font = wxNullFont);
 
 159     void SetTextColour(const wxColour& colText);
 
 160     void SetBackgroundColour(const wxColour& colBack);
 
 161     void SetFont(const wxFont& font);
 
 164     bool HasTextColour();
 
 165     bool HasBackgroundColour();
 
 168     wxColour GetTextColour();
 
 169     wxColour GetBackgroundColour();
 
 172     %extend { void Destroy() { delete self; } }
 
 178 //---------------------------------------------------------------------------
 
 182 // wxListItem: the item or column info, used to exchange data with wxListCtrl
 
 183 class wxListItem : public wxObject {
 
 190     void ClearAttributes();
 
 193     void SetMask(long mask);
 
 195     void SetColumn(int col);
 
 196     void SetState(long state);
 
 197     void SetStateMask(long stateMask);
 
 198     void SetText(const wxString& text);
 
 199     void SetImage(int image);
 
 200     void SetData(long data);
 
 202     void SetWidth(int width);
 
 203     void SetAlign(wxListColumnFormat align);
 
 205     void SetTextColour(const wxColour& colText);
 
 206     void SetBackgroundColour(const wxColour& colBack);
 
 207     void SetFont(const wxFont& font);
 
 214     const wxString& GetText();
 
 219     wxListColumnFormat GetAlign();
 
 221     wxListItemAttr *GetAttributes();
 
 222     bool HasAttributes();
 
 224     wxColour GetTextColour() const;
 
 225     wxColour GetBackgroundColour() const;
 
 226     wxFont GetFont() const;
 
 228     // these members are public for compatibility
 
 229     long            m_mask;     // Indicates what fields are valid
 
 230     long            m_itemId;   // The zero-based item position
 
 231     int             m_col;      // Zero-based column, if in report mode
 
 232     long            m_state;    // The state of the item
 
 233     long            m_stateMask;// Which flags of m_state are valid (uses same flags)
 
 234     wxString        m_text;     // The label/header text
 
 235     int             m_image;    // The zero-based index into an image list
 
 236     long            m_data;     // App-defined data
 
 239     int             m_format;   // left, right, centre
 
 240     int             m_width;    // width of column
 
 245 //---------------------------------------------------------------------------
 
 249 // wxListEvent - the event class for the wxListCtrl notifications
 
 250 class wxListEvent: public wxNotifyEvent {
 
 252     wxListEvent(wxEventType commandType = wxEVT_NULL, int id = 0);
 
 264     %pythoncode { GetCode = GetKeyCode }
 
 268     %pythoncode { GetPosition = GetPoint }
 
 269     const wxString& GetLabel();
 
 270     const wxString& GetText();
 
 274     const wxListItem& GetItem();
 
 279     // was label editing canceled? (for wxEVT_COMMAND_LIST_END_LABEL_EDIT only)
 
 280     bool IsEditCancelled() const;
 
 281     void SetEditCanceled(bool editCancelled);
 
 284 /* List control event types */
 
 285 %constant wxEventType wxEVT_COMMAND_LIST_BEGIN_DRAG;
 
 286 %constant wxEventType wxEVT_COMMAND_LIST_BEGIN_RDRAG;
 
 287 %constant wxEventType wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT;
 
 288 %constant wxEventType wxEVT_COMMAND_LIST_END_LABEL_EDIT;
 
 289 %constant wxEventType wxEVT_COMMAND_LIST_DELETE_ITEM;
 
 290 %constant wxEventType wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS;
 
 291 %constant wxEventType wxEVT_COMMAND_LIST_GET_INFO;
 
 292 %constant wxEventType wxEVT_COMMAND_LIST_SET_INFO;
 
 293 %constant wxEventType wxEVT_COMMAND_LIST_ITEM_SELECTED;
 
 294 %constant wxEventType wxEVT_COMMAND_LIST_ITEM_DESELECTED;
 
 295 %constant wxEventType wxEVT_COMMAND_LIST_KEY_DOWN;
 
 296 %constant wxEventType wxEVT_COMMAND_LIST_INSERT_ITEM;
 
 297 %constant wxEventType wxEVT_COMMAND_LIST_COL_CLICK;
 
 298 %constant wxEventType wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK;
 
 299 %constant wxEventType wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK;
 
 300 %constant wxEventType wxEVT_COMMAND_LIST_ITEM_ACTIVATED;
 
 301 %constant wxEventType wxEVT_COMMAND_LIST_CACHE_HINT;
 
 302 %constant wxEventType wxEVT_COMMAND_LIST_COL_RIGHT_CLICK;
 
 303 %constant wxEventType wxEVT_COMMAND_LIST_COL_BEGIN_DRAG;
 
 304 %constant wxEventType wxEVT_COMMAND_LIST_COL_DRAGGING;
 
 305 %constant wxEventType wxEVT_COMMAND_LIST_COL_END_DRAG;
 
 306 %constant wxEventType wxEVT_COMMAND_LIST_ITEM_FOCUSED;
 
 312 EVT_LIST_BEGIN_DRAG        = wx.PyEventBinder(wxEVT_COMMAND_LIST_BEGIN_DRAG       , 1)
 
 313 EVT_LIST_BEGIN_RDRAG       = wx.PyEventBinder(wxEVT_COMMAND_LIST_BEGIN_RDRAG      , 1)
 
 314 EVT_LIST_BEGIN_LABEL_EDIT  = wx.PyEventBinder(wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT , 1)
 
 315 EVT_LIST_END_LABEL_EDIT    = wx.PyEventBinder(wxEVT_COMMAND_LIST_END_LABEL_EDIT   , 1)
 
 316 EVT_LIST_DELETE_ITEM       = wx.PyEventBinder(wxEVT_COMMAND_LIST_DELETE_ITEM      , 1)
 
 317 EVT_LIST_DELETE_ALL_ITEMS  = wx.PyEventBinder(wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS , 1)
 
 318 EVT_LIST_GET_INFO          = wx.PyEventBinder(wxEVT_COMMAND_LIST_GET_INFO         , 1)
 
 319 EVT_LIST_SET_INFO          = wx.PyEventBinder(wxEVT_COMMAND_LIST_SET_INFO         , 1)
 
 320 EVT_LIST_ITEM_SELECTED     = wx.PyEventBinder(wxEVT_COMMAND_LIST_ITEM_SELECTED    , 1)
 
 321 EVT_LIST_ITEM_DESELECTED   = wx.PyEventBinder(wxEVT_COMMAND_LIST_ITEM_DESELECTED  , 1)
 
 322 EVT_LIST_KEY_DOWN          = wx.PyEventBinder(wxEVT_COMMAND_LIST_KEY_DOWN         , 1)
 
 323 EVT_LIST_INSERT_ITEM       = wx.PyEventBinder(wxEVT_COMMAND_LIST_INSERT_ITEM      , 1)
 
 324 EVT_LIST_COL_CLICK         = wx.PyEventBinder(wxEVT_COMMAND_LIST_COL_CLICK        , 1)
 
 325 EVT_LIST_ITEM_RIGHT_CLICK  = wx.PyEventBinder(wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK , 1)
 
 326 EVT_LIST_ITEM_MIDDLE_CLICK = wx.PyEventBinder(wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK, 1)
 
 327 EVT_LIST_ITEM_ACTIVATED    = wx.PyEventBinder(wxEVT_COMMAND_LIST_ITEM_ACTIVATED   , 1)
 
 328 EVT_LIST_CACHE_HINT        = wx.PyEventBinder(wxEVT_COMMAND_LIST_CACHE_HINT       , 1)
 
 329 EVT_LIST_COL_RIGHT_CLICK   = wx.PyEventBinder(wxEVT_COMMAND_LIST_COL_RIGHT_CLICK  , 1)
 
 330 EVT_LIST_COL_BEGIN_DRAG    = wx.PyEventBinder(wxEVT_COMMAND_LIST_COL_BEGIN_DRAG   , 1)
 
 331 EVT_LIST_COL_DRAGGING      = wx.PyEventBinder(wxEVT_COMMAND_LIST_COL_DRAGGING     , 1)
 
 332 EVT_LIST_COL_END_DRAG      = wx.PyEventBinder(wxEVT_COMMAND_LIST_COL_END_DRAG     , 1)
 
 333 EVT_LIST_ITEM_FOCUSED      = wx.PyEventBinder(wxEVT_COMMAND_LIST_ITEM_FOCUSED     , 1)
 
 336 //---------------------------------------------------------------------------
 
 340 %{ // Python aware sorting function for wxPyListCtrl
 
 341     static int wxCALLBACK wxPyListCtrl_SortItems(long item1, long item2, long funcPtr) {
 
 343         PyObject* func = (PyObject*)funcPtr;
 
 344         bool blocked = wxPyBeginBlockThreads();
 
 346         PyObject* args = Py_BuildValue("(ii)", item1, item2);
 
 347         PyObject* result = PyEval_CallObject(func, args);
 
 350             retval = PyInt_AsLong(result);
 
 354         wxPyEndBlockThreads(blocked);
 
 361 %{  // C++ Version of a Python aware class
 
 362 class wxPyListCtrl : public wxListCtrl {
 
 363     DECLARE_ABSTRACT_CLASS(wxPyListCtrl);
 
 365     wxPyListCtrl() : wxListCtrl() {}
 
 366     wxPyListCtrl(wxWindow* parent, wxWindowID id,
 
 370                  const wxValidator& validator,
 
 371                  const wxString& name) :
 
 372         wxListCtrl(parent, id, pos, size, style, validator, name) {}
 
 374     bool Create(wxWindow* parent, wxWindowID id,
 
 378                 const wxValidator& validator,
 
 379                 const wxString& name) {
 
 380         return wxListCtrl::Create(parent, id, pos, size, style, validator, name);
 
 383     DEC_PYCALLBACK_STRING_LONGLONG(OnGetItemText);
 
 384     DEC_PYCALLBACK_INT_LONG(OnGetItemImage);
 
 385     DEC_PYCALLBACK_LISTATTR_LONG(OnGetItemAttr);
 
 390 IMPLEMENT_ABSTRACT_CLASS(wxPyListCtrl, wxListCtrl);
 
 392 IMP_PYCALLBACK_STRING_LONGLONG(wxPyListCtrl, wxListCtrl, OnGetItemText);
 
 393 IMP_PYCALLBACK_INT_LONG(wxPyListCtrl, wxListCtrl, OnGetItemImage);
 
 394 IMP_PYCALLBACK_LISTATTR_LONG(wxPyListCtrl, wxListCtrl, OnGetItemAttr);
 
 401 %name(ListCtrl)class wxPyListCtrl : public wxControl {
 
 404     %pythonAppend wxPyListCtrl         "self._setOORInfo(self);self._setCallbackInfo(self, ListCtrl)"
 
 405     %pythonAppend wxPyListCtrl()       ""
 
 407     wxPyListCtrl(wxWindow* parent, wxWindowID id = -1,
 
 408                  const wxPoint& pos = wxDefaultPosition,
 
 409                  const wxSize& size = wxDefaultSize,
 
 410                  long style = wxLC_ICON,
 
 411                  const wxValidator& validator = wxDefaultValidator,
 
 412                  const wxString& name = wxPyListCtrlNameStr);
 
 413     %name(PreListCtrl)wxPyListCtrl();
 
 415     bool Create(wxWindow* parent, wxWindowID id = -1,
 
 416                  const wxPoint& pos = wxDefaultPosition,
 
 417                  const wxSize& size = wxDefaultSize,
 
 418                  long style = wxLC_ICON,
 
 419                  const wxValidator& validator = wxDefaultValidator,
 
 420                  const wxString& name = wxPyListCtrlNameStr);
 
 422     void _setCallbackInfo(PyObject* self, PyObject* _class);
 
 425     // Set the control colours
 
 426     bool SetForegroundColour(const wxColour& col);
 
 427     bool SetBackgroundColour(const wxColour& col);
 
 429     // Gets information about this column
 
 430     %pythonAppend GetColumn "if val is not None: val.thisown = 1";  // %newobject doesn't work with OOR typemap
 
 432         wxListItem* GetColumn(int col) {
 
 434             item.SetMask( wxLIST_MASK_STATE |
 
 442             if (self->GetColumn(col, item))
 
 443                 return new wxListItem(item);
 
 449     // Sets information about this column
 
 450     bool SetColumn(int col, wxListItem& item) ;
 
 452     // Gets the column width
 
 453     int GetColumnWidth(int col) const;
 
 455     // Sets the column width
 
 456     bool SetColumnWidth(int col, int width) ;
 
 458     // Gets the number of items that can fit vertically in the
 
 459     // visible area of the list control (list or report view)
 
 460     // or the total number of items in the list control (icon
 
 461     // or small icon view)
 
 462     int GetCountPerPage() const;
 
 464     // return the total area occupied by all the items (icon/small icon only)
 
 465     wxRect GetViewRect() const;
 
 468     // Gets the edit control for editing labels.
 
 469     wxTextCtrl* GetEditControl() const;
 
 472     // Gets information about the item
 
 473     %pythonAppend GetItem "if val is not None: val.thisown = 1";  // %newobject doesn't work with OOR typemap
 
 475         wxListItem* GetItem(long itemId, int col=0) {
 
 476             wxListItem* info = new wxListItem;
 
 477             info->m_itemId = itemId;
 
 479             info->m_mask = 0xFFFF;
 
 480             self->GetItem(*info);
 
 485     // Sets information about the item
 
 486     bool SetItem(wxListItem& info) ;
 
 488     // Sets a string field at a particular column
 
 489     %name(SetStringItem)long SetItem(long index, int col, const wxString& label, int imageId = -1);
 
 491     // Gets the item state
 
 492     int  GetItemState(long item, long stateMask) const ;
 
 494     // Sets the item state
 
 495     bool SetItemState(long item, long state, long stateMask) ;
 
 497     // Sets the item image
 
 498     bool SetItemImage(long item, int image, int selImage) ;
 
 500     // Gets the item text
 
 501     wxString GetItemText(long item) const ;
 
 503     // Sets the item text
 
 504     void SetItemText(long item, const wxString& str) ;
 
 506     // Gets the item data
 
 507     long GetItemData(long item) const ;
 
 509     // Sets the item data
 
 510     bool SetItemData(long item, long data) ;
 
 513     //bool GetItemRect(long item, wxRect& rect, int code = wxLIST_RECT_BOUNDS) const ;
 
 514     //bool GetItemPosition(long item, wxPoint& pos) const ;
 
 516     // Gets the item position
 
 518         wxPoint GetItemPosition(long item) {
 
 520             self->GetItemPosition(item, pos);
 
 523         // Gets the item rectangle
 
 524         wxRect GetItemRect(long item, int code = wxLIST_RECT_BOUNDS) {
 
 526             self->GetItemRect(item, rect, code);
 
 532     // Sets the item position
 
 533     bool SetItemPosition(long item, const wxPoint& pos) ;
 
 535     // Gets the number of items in the list control
 
 536     int GetItemCount() const;
 
 538     // Gets the number of columns in the list control
 
 539     int GetColumnCount() const;
 
 541     // get the horizontal and vertical components of the item spacing
 
 542     wxSize GetItemSpacing() const;
 
 545     void SetItemSpacing( int spacing, bool isSmall = False );
 
 548     // Gets the number of selected items in the list control
 
 549     int GetSelectedItemCount() const;
 
 551     // Gets the text colour of the listview
 
 552     wxColour GetTextColour() const;
 
 554     // Sets the text colour of the listview
 
 555     void SetTextColour(const wxColour& col);
 
 557     // Gets the index of the topmost visible item when in
 
 558     // list or report view
 
 559     long GetTopItem() const ;
 
 561     // Add or remove a single window style
 
 562     void SetSingleStyle(long style, bool add = True) ;
 
 564     // Set the whole window style
 
 565     void SetWindowStyleFlag(long style) ;
 
 567     // Searches for an item, starting from 'item'.
 
 568     // item can be -1 to find the first item that matches the
 
 570     // Returns the item or -1 if unsuccessful.
 
 571     long GetNextItem(long item, int geometry = wxLIST_NEXT_ALL, int state = wxLIST_STATE_DONTCARE) const ;
 
 573     // Gets one of the three image lists
 
 574     wxImageList *GetImageList(int which) const ;
 
 576     // Sets the image list
 
 577     void SetImageList(wxImageList *imageList, int which);
 
 579     // is there a way to tell SWIG to disown this???
 
 581     %apply SWIGTYPE *DISOWN { wxImageList *imageList };
 
 582     void AssignImageList(wxImageList *imageList, int which);
 
 583     %clear wxImageList *imageList;
 
 585     // are we in report mode?
 
 586     bool InReportView() const;
 
 588     // returns True if it is a virtual list control
 
 589     bool IsVirtual() const;
 
 591     // refresh items selectively (only useful for virtual list controls)
 
 592     void RefreshItem(long item);
 
 593     void RefreshItems(long itemFrom, long itemTo);
 
 595     // Arranges the items
 
 596     bool Arrange(int flag = wxLIST_ALIGN_DEFAULT);
 
 599     bool DeleteItem(long item);
 
 602     bool DeleteAllItems() ;
 
 605     bool DeleteColumn(int col);
 
 607     // Deletes all columns
 
 608     bool DeleteAllColumns();
 
 610     // Clears items, and columns if there are any.
 
 615     wxTextCtrl* EditLabel(long item /*, wxClassInfo* textControlClass = CLASSINFO(wxTextCtrl)*/);
 
 617     // End label editing, optionally cancelling the edit
 
 618     bool EndEditLabel(bool cancel);
 
 620     void EditLabel(long item);
 
 623     // Ensures this item is visible
 
 624     bool EnsureVisible(long item) ;
 
 626     // Find an item whose label matches this string, starting from the item after 'start'
 
 627     // or the beginning if 'start' is -1.
 
 628     long FindItem(long start, const wxString& str, bool partial = False);
 
 630     // Find an item whose data matches this data, starting from the item after 'start'
 
 631     // or the beginning if 'start' is -1.
 
 632     %name(FindItemData) long FindItem(long start, long data);
 
 634     // Find an item nearest this position in the specified direction, starting from
 
 635     // the item after 'start' or the beginning if 'start' is -1.
 
 636     %name(FindItemAtPos) long FindItem(long start, const wxPoint& pt, int direction);
 
 640         long, HitTest(const wxPoint& point, int& OUTPUT),
 
 641         "HitTest(Point point) -> (item, where)",
 
 642         "Determines which item (if any) is at the specified point,\n"
 
 643         "giving details in the second return value (see wxLIST_HITTEST_... flags.)");
 
 645     // Inserts an item, returning the index of the new item if successful,
 
 647     long InsertItem(wxListItem& info);
 
 649     // Insert a string item
 
 650     %name(InsertStringItem) long InsertItem(long index, const wxString& label);
 
 652     // Insert an image item
 
 653     %name(InsertImageItem) long InsertItem(long index, int imageIndex);
 
 655     // Insert an image/string item
 
 656     %name(InsertImageStringItem) long InsertItem(long index, const wxString& label, int imageIndex);
 
 658     // For list view mode (only), inserts a column.
 
 659     %name(InsertColumnInfo) long InsertColumn(long col, wxListItem& info);
 
 661     long InsertColumn(long col,
 
 662                       const wxString& heading,
 
 663                       int format = wxLIST_FORMAT_LEFT,
 
 666     // set the number of items in a virtual list control
 
 667     void SetItemCount(long count);
 
 669     // Scrolls the list control. If in icon, small icon or report view mode,
 
 670     // x specifies the number of pixels to scroll. If in list view mode, x
 
 671     // specifies the number of columns to scroll.
 
 672     // If in icon, small icon or list view mode, y specifies the number of pixels
 
 673     // to scroll. If in report view mode, y specifies the number of lines to scroll.
 
 674     bool ScrollList(int dx, int dy);
 
 676     void SetItemTextColour( long item, const wxColour& col);
 
 677     wxColour GetItemTextColour( long item ) const;
 
 678     void SetItemBackgroundColour( long item, const wxColour &col);
 
 679     wxColour GetItemBackgroundColour( long item ) const;
 
 685     def Select(self, idx, on=1):
 
 686         '''[de]select an item'''
 
 687         if on: state = wx.LIST_STATE_SELECTED
 
 689         self.SetItemState(idx, state, wx.LIST_STATE_SELECTED)
 
 691     def Focus(self, idx):
 
 692         '''Focus and show the given item'''
 
 693         self.SetItemState(idx, wx.LIST_STATE_FOCUSED, wx.LIST_STATE_FOCUSED)
 
 694         self.EnsureVisible(idx)
 
 696     def GetFocusedItem(self):
 
 697         '''get the currently focused item or -1 if none'''
 
 698         return self.GetNextItem(-1, wx.LIST_NEXT_ALL, wx.LIST_STATE_FOCUSED)
 
 700     def GetFirstSelected(self, *args):
 
 701         '''return first selected item, or -1 when none'''
 
 702         return self.GetNextSelected(-1)
 
 704     def GetNextSelected(self, item):
 
 705         '''return subsequent selected items, or -1 when no more'''
 
 706         return self.GetNextItem(item, wx.LIST_NEXT_ALL, wx.LIST_STATE_SELECTED)
 
 708     def IsSelected(self, idx):
 
 709         '''return True if the item is selected'''
 
 710         return self.GetItemState(idx, wx.LIST_STATE_SELECTED) != 0
 
 712     def SetColumnImage(self, col, image):
 
 713         item = self.GetColumn(col)
 
 714         %# preserve all other attributes too
 
 715         item.SetMask( wx.LIST_MASK_STATE |
 
 721                       wx.LIST_MASK_FORMAT )
 
 723         self.SetColumn(col, item)
 
 725     def ClearColumnImage(self, col):
 
 726         self.SetColumnImage(col, -1)
 
 728     def Append(self, entry):
 
 729         '''Append an item to the list control.  The entry parameter should be a
 
 730            sequence with an item for each column'''
 
 736             pos = self.GetItemCount()
 
 737             self.InsertStringItem(pos, cvtfunc(entry[0]))
 
 738             for i in range(1, len(entry)):
 
 739                 self.SetStringItem(pos, i, cvtfunc(entry[i]))
 
 744     // bool SortItems(wxListCtrlCompare fn, long data);
 
 747         // func is a function which takes 2 long arguments: item1, item2.
 
 748         // item1 is the long data associated with a first item (NOT the index).
 
 749         // item2 is the long data associated with a second item (NOT the index).
 
 750         // The return value is a negative number if the first item should precede the second
 
 751         // item, a positive number of the second item should precede the first,
 
 752         // or zero if the two items are equivalent.
 
 753         bool SortItems(PyObject* func) {
 
 754             if (!PyCallable_Check(func))
 
 756             return self->SortItems((wxListCtrlCompare)wxPyListCtrl_SortItems, (long)func);
 
 762         wxWindow* GetMainWindow() {
 
 766             return (wxWindow*)self->m_mainWin;
 
 771     static wxVisualAttributes
 
 772     GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
 
 777 //---------------------------------------------------------------------------
 
 781 // wxListView: a class which provides a little better API for list control
 
 782 class wxListView : public wxPyListCtrl
 
 785     %pythonAppend wxListView         "self._setOORInfo(self)"
 
 786     %pythonAppend wxListView()       ""
 
 788     wxListView( wxWindow *parent,
 
 790                 const wxPoint& pos = wxDefaultPosition,
 
 791                 const wxSize& size = wxDefaultSize,
 
 792                 long style = wxLC_REPORT,
 
 793                 const wxValidator& validator = wxDefaultValidator,
 
 794                 const wxString& name = wxPyListCtrlNameStr);
 
 795     %name(PreListView)wxListView();
 
 797     bool Create( wxWindow *parent,
 
 799                 const wxPoint& pos = wxDefaultPosition,
 
 800                 const wxSize& size = wxDefaultSize,
 
 801                 long style = wxLC_REPORT,
 
 802                 const wxValidator& validator = wxDefaultValidator,
 
 803                 const wxString& name = wxPyListCtrlNameStr);
 
 805     // [de]select an item
 
 806     void Select(long n, bool on = True);
 
 808     // focus and show the given item
 
 809     void Focus(long index);
 
 811     // get the currently focused item or -1 if none
 
 812     long GetFocusedItem() const;
 
 814     // get first and subsequent selected items, return -1 when no more
 
 815     long GetNextSelected(long item) const;
 
 816     long GetFirstSelected() const;
 
 818     // return True if the item is selected
 
 819     bool IsSelected(long index);
 
 821     void SetColumnImage(int col, int image);
 
 822     void ClearColumnImage(int col);
 
 827 //---------------------------------------------------------------------------
 
 830     // Map renamed classes back to their common name for OOR
 
 831     wxPyPtrTypeMap_Add("wxListCtrl", "wxPyListCtrl");
 
 834 //---------------------------------------------------------------------------