X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f6bcfd974ef26faf6f91a62cac09827e09463fd1..b6e5eaa59701315ca06996ff845872ca4122695f:/wxPython/demo/wxListCtrl.py diff --git a/wxPython/demo/wxListCtrl.py b/wxPython/demo/wxListCtrl.py index 4374d82d33..86d9c01ce2 100644 --- a/wxPython/demo/wxListCtrl.py +++ b/wxPython/demo/wxListCtrl.py @@ -57,26 +57,29 @@ musicdata = { 39: ("Yes", "Rhythm Of Love", "Rock"), } +import images class TestListCtrlPanel(wxPanel): def __init__(self, parent, log): - wxPanel.__init__(self, parent, -1) + wxPanel.__init__(self, parent, -1, style=wxWANTS_CHARS) self.log = log tID = wxNewId() self.il = wxImageList(16, 16) - idx1 = self.il.Add(wxBitmap('bitmaps/smiles.bmp', wxBITMAP_TYPE_BMP)) + bmp = images.getSmilesBitmap() + #idx1 = self.il.AddWithColourMask(bmp, wxWHITE) + idx1 = self.il.Add(bmp) - self.list = wxListCtrl(self, tID, wxDefaultPosition, wxDefaultSize, - wxLC_REPORT|wxSUNKEN_BORDER) + self.list = wxListCtrl(self, tID, + style=wxLC_REPORT|wxSUNKEN_BORDER)#|wxLC_VRULES|wxLC_HRULES) self.list.SetImageList(self.il, wxIMAGE_LIST_SMALL) + # Why doesn't this show up on MSW??? self.list.SetToolTip(wxToolTip("This is a ToolTip!")) - wxToolTip_Enable(true) self.list.InsertColumn(0, "Artist") - self.list.InsertColumn(1, "Title") + self.list.InsertColumn(1, "Title", wxLIST_FORMAT_RIGHT) self.list.InsertColumn(2, "Genre") items = musicdata.items() for x in range(len(items)): @@ -92,9 +95,22 @@ class TestListCtrlPanel(wxPanel): self.list.SetItemState(5, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED) + #self.list.SetItemState(25, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED) + #self.list.EnsureVisible(25) + + # show how to change the colour of an item + item = self.list.GetItem(1) + item.SetTextColour(wxBLUE) + self.list.SetItem(item) + + item = self.list.GetItem(4) + item.SetTextColour(wxRED) + self.list.SetItem(item) + self.currentItem = 0 EVT_SIZE(self, self.OnSize) EVT_LIST_ITEM_SELECTED(self, tID, self.OnItemSelected) + EVT_LIST_ITEM_ACTIVATED(self, tID, self.OnItemActivated) EVT_LIST_DELETE_ITEM(self, tID, self.OnItemDelete) EVT_LIST_COL_CLICK(self, tID, self.OnColClick) EVT_LEFT_DCLICK(self.list, self.OnDoubleClick) @@ -113,9 +129,28 @@ class TestListCtrlPanel(wxPanel): self.log.WriteText("x, y = %s\n" % str((self.x, self.y))) event.Skip() + + def getColumnText(self, index, col): + item = self.list.GetItem(index, col) + return item.GetText() + + def OnItemSelected(self, event): self.currentItem = event.m_itemIndex - self.log.WriteText("OnItemSelected: %s\n" % self.list.GetItemText(self.currentItem)) + self.log.WriteText("OnItemSelected: %s, %s, %s, %s\n" % + (self.currentItem, + self.list.GetItemText(self.currentItem), + self.getColumnText(self.currentItem, 1), + self.getColumnText(self.currentItem, 2))) + if self.currentItem == 10: + self.log.WriteText("OnItemSelected: Veto'd selection\n") + #event.Veto() # doesn't work + # this does + self.list.SetItemState(10, 0, wxLIST_STATE_SELECTED) + + def OnItemActivated(self, event): + self.currentItem = event.m_itemIndex + self.log.WriteText("OnItemActivated: %s\n" % self.list.GetItemText(self.currentItem)) def OnItemDelete(self, event): self.log.WriteText("OnItemDelete\n") @@ -128,14 +163,16 @@ class TestListCtrlPanel(wxPanel): def ColumnSorter(self, key1, key2): item1 = musicdata[key1][self.col] item2 = musicdata[key2][self.col] - if item1 == item2: return 0 + + # when the items are identical, compare someting else to make the sort key unique... + if item1 == item2: return key1 - key2 elif item1 < item2: return -1 else: return 1 def OnDoubleClick(self, event): self.log.WriteText("OnDoubleClick item %s\n" % self.list.GetItemText(self.currentItem)) - + event.Skip() def OnRightClick(self, event): self.log.WriteText("OnRightClick %s\n" % self.list.GetItemText(self.currentItem)) @@ -145,7 +182,10 @@ class TestListCtrlPanel(wxPanel): tPopupID3 = 2 tPopupID4 = 3 tPopupID5 = 5 - menu.Append(tPopupID1, "One") + #menu.Append(tPopupID1, "One") + item = wxMenuItem(menu, tPopupID1,"One") + item.SetBitmap(images.getSmilesBitmap()) + menu.AppendItem(item) menu.Append(tPopupID2, "Two") menu.Append(tPopupID3, "Three") menu.Append(tPopupID4, "DeleteAllItems") @@ -157,6 +197,7 @@ class TestListCtrlPanel(wxPanel): EVT_MENU(self, tPopupID5, self.OnPopupFive) self.PopupMenu(menu, wxPoint(self.x, self.y)) menu.Destroy() + event.Skip() def OnPopupOne(self, event): self.log.WriteText("Popup one\n") @@ -209,29 +250,4 @@ def runTest(frame, nb, log): overview = """\ A list control presents lists in a number of formats: list view, report view, icon view and small icon view. Elements are numbered from zero. -wxListCtrl() ------------------------- - -Default constructor. - -wxListCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, const wxString& name = "listCtrl") - -Constructor, creating and showing a list control. - -Parameters -------------------- - -parent = Parent window. Must not be NULL. - -id = Window identifier. A value of -1 indicates a default value. - -pos = Window position. - -size = Window size. If the default size (-1, -1) is specified then the window is sized appropriately. - -style = Window style. See wxListCtrl. - -validator = Window validator. - -name = Window name. """