git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38122 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			97 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import sys
 | |
| import wx
 | |
| from wx.lib.mixins.listctrl import CheckListCtrlMixin
 | |
| 
 | |
| from ListCtrl import musicdata
 | |
| 
 | |
| #----------------------------------------------------------------------
 | |
| 
 | |
| class CheckListCtrl(wx.ListCtrl, CheckListCtrlMixin):
 | |
|     def __init__(self, parent, log):
 | |
|         wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT)
 | |
|         CheckListCtrlMixin.__init__(self)
 | |
|         self.log = log
 | |
|         self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated)
 | |
| 
 | |
| 
 | |
|     def OnItemActivated(self, evt):
 | |
|         self.ToggleItem(evt.m_itemIndex)
 | |
| 
 | |
| 
 | |
|     # this is called by the base class when an item is checked/unchecked
 | |
|     def OnCheckItem(self, index, flag):
 | |
|         data = self.GetItemData(index)
 | |
|         title = musicdata[data][1]
 | |
|         if flag:
 | |
|             what = "checked"
 | |
|         else:
 | |
|             what = "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.iteritems():
 | |
|             index = self.list.InsertStringItem(sys.maxint, data[0])
 | |
|             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.list.SetColumnWidth(2, 100)
 | |
| 
 | |
|         self.list.CheckItem(4)
 | |
|         self.list.CheckItem(7)
 | |
| 
 | |
|         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.m_itemIndex)
 | |
|         
 | |
|     def OnItemDeselected(self, evt):
 | |
|         self.log.write('item deselected: %s\n' % evt.m_itemIndex)
 | |
|         
 | |
| 
 | |
| #----------------------------------------------------------------------
 | |
| 
 | |
| def runTest(frame, nb, log):
 | |
|     win = TestPanel(nb, log)
 | |
|     return win
 | |
| 
 | |
| #----------------------------------------------------------------------
 | |
| 
 | |
| 
 | |
| 
 | |
| overview = """<html><body>
 | |
| <h2><centerCheckListCtrlMixin></center></h2>
 | |
| 
 | |
| CheckListCtrlMixin is a simple mixin class that can add a checkbox to
 | |
| the first column of a wx.ListCtrl.
 | |
| 
 | |
| </body></html>
 | |
| """
 | |
| 
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     import sys,os
 | |
|     import run
 | |
|     run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
 | |
| 
 |