# Copyright: (c) 1998 by Total Control Software
# Licence: wxWindows license
#----------------------------------------------------------------------------
-#
-# 11/20/2003 - Jeff Grimmett (grimmtooth@softhome.net)
-#
-# o Updated for wx namespace
-#
-# 11/29/2003 - Jeff Grimmett (grimmtooth@softhome.net)
-#
-# o listctrl mixin needs wx renamer.
-# o wx.ListItem.GetText() returns a wxString pointer, not the text.
-#
-# 12/14/2003 - Jeff Grimmett (grimmtooth@softhome.net)
-#
-# o ColumnSorterMixin implementation was broke - added event.Skip()
-# to column click event to allow event to fall through to mixin.
-#
-# 12/21/2003 - Jeff Grimmett (grimmtooth@softhome.net)
-#
-# o wxColumnSorterMixin -> ColumnSorterMixin
-# o wxListCtrlAutoWidthMixin -> ListCtrlAutoWidthMixin
-#
+import sys
import wx
import wx.lib.mixins.listctrl as listmix
self.log = log
tID = wx.NewId()
-
+
+ sizer = wx.BoxSizer(wx.VERTICAL)
+
+ if wx.Platform == "__WXMAC__" and \
+ hasattr(wx.GetApp().GetTopWindow(), "LoadDemo"):
+ self.useNative = wx.CheckBox(self, -1, "Use native listctrl")
+ self.useNative.SetValue(
+ not wx.SystemOptions.GetOptionInt("mac.listctrl.always_use_generic") )
+ self.Bind(wx.EVT_CHECKBOX, self.OnUseNative, self.useNative)
+ sizer.Add(self.useNative, 0, wx.ALL | wx.ALIGN_RIGHT, 4)
+
self.il = wx.ImageList(16, 16)
self.idx1 = self.il.Add(images.getSmilesBitmap())
self.list = TestListCtrl(self, tID,
style=wx.LC_REPORT
- | wx.SUNKEN_BORDER
+ #| wx.BORDER_SUNKEN
+ | wx.BORDER_NONE
| wx.LC_EDIT_LABELS
- #| wxLC_NO_HEADER
- #| wxLC_VRULES | wxLC_HRULES
+ | wx.LC_SORT_ASCENDING
+ #| wx.LC_NO_HEADER
+ #| wx.LC_VRULES
+ #| wx.LC_HRULES
+ #| wx.LC_SINGLE_SEL
)
-
+
self.list.SetImageList(self.il, wx.IMAGE_LIST_SMALL)
+ sizer.Add(self.list, 1, wx.EXPAND)
self.PopulateList()
# Now that the list exists we can init the other base class,
- # see wxPython/lib/mixins/listctrl.py
+ # see wx/lib/mixins/listctrl.py
self.itemDataMap = musicdata
listmix.ColumnSorterMixin.__init__(self, 3)
#self.SortListItems(0, True)
- self.Bind(wx.EVT_SIZE, self.OnSize)
+ self.SetSizer(sizer)
+ self.SetAutoLayout(True)
self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected, self.list)
self.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnItemDeselected, self.list)
self.list.Bind(wx.EVT_RIGHT_UP, self.OnRightClick)
+ def OnUseNative(self, event):
+ wx.SystemOptions.SetOptionInt("mac.listctrl.always_use_generic", not event.IsChecked())
+ wx.GetApp().GetTopWindow().LoadDemo("ListCtrl")
+
def PopulateList(self):
if 0:
# for normal, simple columns, you can add them like this:
self.list.InsertColumnInfo(2, info)
items = musicdata.items()
- for x in range(len(items)):
- key, data = items[x]
- self.list.InsertImageStringItem(x, data[0], self.idx1)
- self.list.SetStringItem(x, 1, data[1])
- self.list.SetStringItem(x, 2, data[2])
- self.list.SetItemData(x, key)
+ for key, data in items:
+ index = self.list.InsertImageStringItem(sys.maxint, data[0], self.idx1)
+ self.list.SetStringItem(index, 1, data[1])
+ self.list.SetStringItem(index, 2, data[2])
+ self.list.SetItemData(index, key)
self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE)
self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE)
self.currentItem = 0
- # Used by the ColumnSorterMixin, see wxPython/lib/mixins/listctrl.py
+ # Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py
def GetListCtrl(self):
return self.list
- # Used by the ColumnSorterMixin, see wxPython/lib/mixins/listctrl.py
+ # Used by the ColumnSorterMixin, see wx/lib/mixins/listctrl.py
def GetSortImages(self):
return (self.sm_dn, self.sm_up)
def OnRightDown(self, event):
- self.x = event.GetX()
- self.y = event.GetY()
- self.log.WriteText("x, y = %s\n" % str((self.x, self.y)))
- item, flags = self.list.HitTest((self.x, self.y))
+ x = event.GetX()
+ y = event.GetY()
+ self.log.WriteText("x, y = %s\n" % str((x, y)))
+ item, flags = self.list.HitTest((x, y))
- if flags & wx.LIST_HITTEST_ONITEM:
+ if item != wx.NOT_FOUND and flags & wx.LIST_HITTEST_ONITEM:
self.list.Select(item)
event.Skip()
# Popup the menu. If an item is selected then its handler
# will be called before PopupMenu returns.
- self.PopupMenu(menu, (self.x, self.y))
+ self.PopupMenu(menu)
menu.Destroy()
self.list.EditLabel(self.currentItem)
- def OnSize(self, event):
- w,h = self.GetClientSizeTuple()
- self.list.SetDimensions(0, 0, w, h)
-
-
-
#---------------------------------------------------------------------------
def runTest(frame, nb, log):
if __name__ == '__main__':
import sys,os
import run
- run.main(['', os.path.basename(sys.argv[0])])
+ run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])