+ self.PopulateList()
+
+ # Now that the list exists we can init the other base class,
+ # see wxPython/lib/mixins/listctrl.py
+ self.itemDataMap = musicdata
+ listmix.wxColumnSorterMixin.__init__(self, 3)
+ #self.SortListItems(0, True)
+
+ self.Bind(wx.EVT_SIZE, self.OnSize)
+
+ self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnItemSelected, self.list)
+ self.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.OnItemDeselected, self.list)
+ self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnItemActivated, self.list)
+ self.Bind(wx.EVT_LIST_DELETE_ITEM, self.OnItemDelete, self.list)
+ self.Bind(wx.EVT_LIST_COL_CLICK, self.OnColClick, self.list)
+ self.Bind(wx.EVT_LIST_COL_RIGHT_CLICK, self.OnColRightClick, self.list)
+ self.Bind(wx.EVT_LIST_COL_BEGIN_DRAG, self.OnColBeginDrag, self.list)
+ self.Bind(wx.EVT_LIST_COL_DRAGGING, self.OnColDragging, self.list)
+ self.Bind(wx.EVT_LIST_COL_END_DRAG, self.OnColEndDrag, self.list)
+ self.Bind(wx.EVT_LIST_BEGIN_LABEL_EDIT, self.OnBeginEdit, self.list)
+
+ self.list.Bind(wx.EVT_LEFT_DCLICK, self.OnDoubleClick)
+ self.list.Bind(wx.EVT_RIGHT_DOWN, self.OnRightDown)
+
+ # for wxMSW
+ self.list.Bind(wx.EVT_COMMAND_RIGHT_CLICK, self.OnRightClick)
+
+ # for wxGTK
+ self.list.Bind(wx.EVT_RIGHT_UP, self.OnRightClick)
+
+
+ def PopulateList(self):
+ if 0:
+ # for normal, simple columns, you can add them like this:
+ self.list.InsertColumn(0, "Artist")
+ self.list.InsertColumn(1, "Title", wx.LIST_FORMAT_RIGHT)
+ self.list.InsertColumn(2, "Genre")
+ else:
+ # but since we want images on the column header we have to do it the hard way:
+ info = wx.ListItem()
+ info.m_mask = wx.LIST_MASK_TEXT | wx.LIST_MASK_IMAGE | wx.LIST_MASK_FORMAT
+ info.m_image = -1
+ info.m_format = 0
+ info.m_text = "Artist"
+ self.list.InsertColumnInfo(0, info)
+
+ info.m_format = wx.LIST_FORMAT_RIGHT
+ info.m_text = "Title"
+ self.list.InsertColumnInfo(1, info)
+
+ info.m_format = 0
+ info.m_text = "Genre"
+ self.list.InsertColumnInfo(2, info)