X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6f48b1b53fe666431a45338a01da8969e9b0b258..61940a7061d0b5d5122b1e1e939cfa2d72596999:/wxPython/demo/wxListCtrl_virtual.py?ds=sidebyside diff --git a/wxPython/demo/wxListCtrl_virtual.py b/wxPython/demo/wxListCtrl_virtual.py index 3e9a8fa7c1..75f5d97573 100644 --- a/wxPython/demo/wxListCtrl_virtual.py +++ b/wxPython/demo/wxListCtrl_virtual.py @@ -1,14 +1,31 @@ - -from wxPython.wx import * +# 11/20/2003 - Jeff Grimmett (grimmtooth@softhome.net) +# +# o Updated for wx namespace +# +# 11/29/2003 - Jeff Grimmett (grimmtooth@softhome.net) +# +# o wx.ListItem.GetText() returns a wxString pointer, not the text. +# + +import wx +import images #---------------------------------------------------------------------- -class TestVirtualList(wxListCtrl): +class TestVirtualList(wx.ListCtrl): def __init__(self, parent, log): - wxListCtrl.__init__(self, parent, -1, - style=wxLC_REPORT|wxLC_VIRTUAL|wxLC_HRULES|wxLC_VRULES) + wx.ListCtrl.__init__( + self, parent, -1, + style=wx.LC_REPORT|wx.LC_VIRTUAL|wx.LC_HRULES|wx.LC_VRULES + ) + self.log = log + self.il = wx.ImageList(16, 16) + self.idx1 = self.il.Add(images.getSmilesBitmap()) + self.SetImageList(self.il, wx.IMAGE_LIST_SMALL) + + self.InsertColumn(0, "First") self.InsertColumn(1, "Second") self.InsertColumn(2, "Third") @@ -18,14 +35,15 @@ class TestVirtualList(wxListCtrl): self.SetItemCount(1000000) - self.attr1 = wxListItemAttr() + self.attr1 = wx.ListItemAttr() self.attr1.SetBackgroundColour("yellow") - self.attr2 = wxListItemAttr() + self.attr2 = wx.ListItemAttr() self.attr2.SetBackgroundColour("light blue") - EVT_LIST_ITEM_SELECTED(self, self.GetId(), self.OnItemSelected) - EVT_LIST_ITEM_ACTIVATED(self, self.GetId(), self.OnItemActivated) + self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected) + self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated) + self.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnItemDeselected) def OnItemSelected(self, event): @@ -38,22 +56,31 @@ class TestVirtualList(wxListCtrl): def OnItemActivated(self, event): self.currentItem = event.m_itemIndex - self.log.WriteText("OnItemActivated: %s\n" % self.GetItemText(self.currentItem)) + self.log.WriteText("OnItemActivated: %s\nTopItem: %s\n" % + (self.GetItemText(self.currentItem), self.GetTopItem())) def getColumnText(self, index, col): item = self.GetItem(index, col) return item.GetText() + def OnItemDeselected(self, evt): + self.log.WriteText("OnItemDeselected: %s" % evt.m_itemIndex) + + #--------------------------------------------------- # These methods are callbacks for implementing the - # "virtualness" of the list... + # "virtualness" of the list... Normally you would + # determine the text, attributes and/or image based + # on values from some external data source, but for + # this demo we'll just calculate them def OnGetItemText(self, item, col): return "Item %d, column %d" % (item, col) - def OnGetItemImage(self, item): - return -1 # if used you should return the index in the ImageList - + if item % 3 == 0: + return self.idx1 + else: + return -1 def OnGetItemAttr(self, item): if item % 3 == 1: @@ -73,10 +100,12 @@ def runTest(frame, nb, log): #---------------------------------------------------------------------- - - - overview = """\ +This example demonstrates the ListCtrl's Virtual List features. A Virtual list +can contain any number of cells, but data is not loaded into the control itself. +It is loaded on demand via virtual methods OnGetItemText(), OnGetItemImage(), +and OnGetItemAttr(). This greatly reduces the amount of memory required +without limiting what can be done with the list control itself. """