#!/usr/bin/env python import sys import wx from ListCtrl import musicdata #---------------------------------------------------------------------- class CheckListCtrl(wx.ListCtrl): def __init__(self, parent, log): wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT) self.log = log self.EnableCheckBoxes() self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated) self.Bind(wx.EVT_LIST_ITEM_CHECKED, self.OnItemCheckChanged) self.Bind(wx.EVT_LIST_ITEM_UNCHECKED, self.OnItemCheckChanged) def ToggleItem(self, index): toggle = not self.IsItemChecked(index) self.CheckItem(index, toggle) def OnItemActivated(self, evt): self.ToggleItem(evt.Index) def OnItemCheckChanged(self, evt): index = evt.Index data = self.GetItemData(index) title = musicdata[data][1] what = "checked" if self.IsItemChecked(index) else "unchecked" self.log.write('item "%s", at index %d was %s\n' % (title, index, what)) class TestPanel(wx.Panel): def __init__(self, parent, log): self.log = log wx.Panel.__init__(self, parent, -1) self.list = CheckListCtrl(self, log) sizer = wx.BoxSizer() sizer.Add(self.list, 1, wx.EXPAND) self.SetSizer(sizer) self.list.InsertColumn(0, "Artist") self.list.InsertColumn(1, "Title", wx.LIST_FORMAT_RIGHT) self.list.InsertColumn(2, "Genre") for key, data in musicdata.items(): index = self.list.InsertItem(self.list.GetItemCount(), data[0]) self.list.SetItem(index, 1, data[1]) self.list.SetItem(index, 2, data[2]) self.list.SetItemData(index, key) self.list.SetColumnWidth(0, wx.LIST_AUTOSIZE) self.list.SetColumnWidth(1, wx.LIST_AUTOSIZE) self.list.SetColumnWidth(2, 100) self.list.CheckItem(4, True) self.list.CheckItem(7, True) self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected, self.list) self.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnItemDeselected, self.list) def OnItemSelected(self, evt): self.log.write('item selected: %s\n' % evt.Index) def OnItemDeselected(self, evt): self.log.write('item deselected: %s\n' % evt.Index) #---------------------------------------------------------------------- def runTest(frame, nb, log): win = TestPanel(nb, log) return win #---------------------------------------------------------------------- overview = """