X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cf694132f1c28509a9f84377ce8d374bae4177ad..c5145d41777d5c47a0d82120d1d99a6cb66e91c7:/utils/wxPython/demo/wxListCtrl.py diff --git a/utils/wxPython/demo/wxListCtrl.py b/utils/wxPython/demo/wxListCtrl.py index a3d4daed82..fd521a8bb5 100644 --- a/utils/wxPython/demo/wxListCtrl.py +++ b/utils/wxPython/demo/wxListCtrl.py @@ -15,6 +15,49 @@ from wxPython.wx import * #--------------------------------------------------------------------------- +musicdata = { +1 : ("Bad English", "The Price Of Love", "Rock"), +2 : ("DNA featuring Suzanne Vega", "Tom's Diner", "Rock"), +3 : ("George Michael", "Praying For Time", "Rock"), +4 : ("Gloria Estefan", "Here We Are", "Rock"), +5 : ("Linda Ronstadt", "Don't Know Much", "Rock"), +6 : ("Michael Bolton", "How Am I Supposed To Live Without You", "Blues"), +7 : ("Paul Young", "Oh Girl", "Rock"), +8 : ("Paula Abdul", "Opposites Attract", "Rock"), +9 : ("Richard Marx", "Should've Known Better", "Rock"), +10: ("Rod Stewart", "Forever Young", "Rock"), +11: ("Roxette", "Dangerous", "Rock"), +12: ("Sheena Easton", "The Lover In Me", "Rock"), +13: ("Sinead O'Connor", "Nothing Compares 2 U", "Rock"), +14: ("Stevie B.", "Because I Love You", "Rock"), +15: ("Taylor Dayne", "Love Will Lead You Back", "Rock"), +16: ("The Bangles", "Eternal Flame", "Rock"), +17: ("Wilson Phillips", "Release Me", "Rock"), +18: ("Billy Joel", "Blonde Over Blue", "Rock"), +19: ("Billy Joel", "Famous Last Words", "Rock"), +20: ("Billy Joel", "Lullabye (Goodnight, My Angel)", "Rock"), +21: ("Billy Joel", "The River Of Dreams", "Rock"), +22: ("Billy Joel", "Two Thousand Years", "Rock"), +23: ("Janet Jackson", "Alright", "Rock"), +24: ("Janet Jackson", "Black Cat", "Rock"), +25: ("Janet Jackson", "Come Back To Me", "Rock"), +26: ("Janet Jackson", "Escapade", "Rock"), +27: ("Janet Jackson", "Love Will Never Do (Without You)", "Rock"), +28: ("Janet Jackson", "Miss You Much", "Rock"), +29: ("Janet Jackson", "Rhythm Nation", "Rock"), +30: ("Janet Jackson", "State Of The World", "Rock"), +31: ("Janet Jackson", "The Knowledge", "Rock"), +32: ("Spyro Gyra", "End of Romanticism", "Jazz"), +33: ("Spyro Gyra", "Heliopolis", "Jazz"), +34: ("Spyro Gyra", "Jubilee", "Jazz"), +35: ("Spyro Gyra", "Little Linda", "Jazz"), +36: ("Spyro Gyra", "Morning Dance", "Jazz"), +37: ("Spyro Gyra", "Song for Lorraine", "Jazz"), +38: ("Yes", "Owner Of A Lonely Heart", "Rock"), +39: ("Yes", "Rhythm Of Love", "Rock"), +} + + class TestListCtrlPanel(wxPanel): def __init__(self, parent, log): wxPanel.__init__(self, parent, -1) @@ -23,7 +66,7 @@ class TestListCtrlPanel(wxPanel): tID = NewId() self.il = wxImageList(16, 16) - idx1 = self.il.Add(wxNoRefBitmap('bitmaps/smiles.bmp', wxBITMAP_TYPE_BMP)) + idx1 = self.il.Add(wxBitmap('bitmaps/smiles.bmp', wxBITMAP_TYPE_BMP)) self.list = wxListCtrl(self, tID, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxSUNKEN_BORDER) @@ -32,18 +75,103 @@ class TestListCtrlPanel(wxPanel): self.list.SetToolTip(wxToolTip("This is a ToolTip!")) wxToolTip_Enable(true) - self.list.InsertColumn(0, "Column 0") - self.list.InsertColumn(1, "Column 1") - self.list.InsertColumn(2, "One More Column (2)") - for x in range(50): - self.list.InsertImageStringItem(x, "This is item %d" % x, idx1) - self.list.SetStringItem(x, 1, "Col 1, item %d" % x) - self.list.SetStringItem(x, 2, "item %d in column 2" % x) + self.list.InsertColumn(0, "Artist") + self.list.InsertColumn(1, "Title") + self.list.InsertColumn(2, "Genre") + items = musicdata.items() + for x in range(len(items)): + key, data = items[x] + self.list.InsertImageStringItem(x, data[0], idx1) + self.list.SetStringItem(x, 1, data[1]) + self.list.SetStringItem(x, 2, data[2]) + self.list.SetItemData(x, key) self.list.SetColumnWidth(0, wxLIST_AUTOSIZE) self.list.SetColumnWidth(1, wxLIST_AUTOSIZE) - self.list.SetColumnWidth(2, wxLIST_AUTOSIZE) - + ##self.list.SetColumnWidth(2, wxLIST_AUTOSIZE) + + self.list.SetItemState(5, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED) + + self.currentItem = 0 + EVT_LIST_ITEM_SELECTED(self, tID, self.OnItemSelected) + EVT_LIST_DELETE_ITEM(self, tID, self.OnItemDelete) + EVT_LIST_COL_CLICK(self, tID, self.OnColClick) + EVT_LEFT_DCLICK(self.list, self.OnDoubleClick) + EVT_RIGHT_DOWN(self.list, self.OnRightDown) + + # for wxMSW + EVT_COMMAND_RIGHT_CLICK(self.list, tID, self.OnRightClick) + + # for wxGTK + EVT_RIGHT_UP(self.list, self.OnRightClick) + + + def OnRightDown(self, event): + self.x = event.GetX() + self.y = event.GetY() + self.log.WriteText("x, y = %s\n" % str((self.x, self.y))) + event.Skip() + + def OnItemSelected(self, event): + self.currentItem = event.m_itemIndex + self.log.WriteText("OnItemSelected: %s\n" % self.list.GetItemText(self.currentItem)) + + def OnItemDelete(self, event): + self.log.WriteText("OnItemDelete\n") + + def OnColClick(self, event): + self.log.WriteText("OnColClick: %d\n" % event.m_col) + self.col = event.m_col + self.list.SortItems(self.ColumnSorter) + + def ColumnSorter(self, key1, key2): + item1 = musicdata[key1][self.col] + item2 = musicdata[key2][self.col] + if item1 == item2: return 0 + elif item1 < item2: return -1 + else: return 1 + + + def OnDoubleClick(self, event): + self.log.WriteText("OnDoubleClick item %s\n" % self.list.GetItemText(self.currentItem)) + + + def OnRightClick(self, event): + self.log.WriteText("OnRightClick %s\n" % self.list.GetItemText(self.currentItem)) + menu = wxMenu() + tPopupID1 = 0 + tPopupID2 = 1 + tPopupID3 = 2 + tPopupID4 = 3 + tPopupID5 = 5 + menu.Append(tPopupID1, "One") + menu.Append(tPopupID2, "Two") + menu.Append(tPopupID3, "Three") + menu.Append(tPopupID4, "DeleteAllItems") + menu.Append(tPopupID5, "GetItem") + EVT_MENU(self, tPopupID1, self.OnPopupOne) + EVT_MENU(self, tPopupID2, self.OnPopupTwo) + EVT_MENU(self, tPopupID3, self.OnPopupThree) + EVT_MENU(self, tPopupID4, self.OnPopupFour) + EVT_MENU(self, tPopupID5, self.OnPopupFive) + self.PopupMenu(menu, wxPoint(self.x, self.y)) + menu.Destroy() + + def OnPopupOne(self, event): + self.log.WriteText("Popup one\n") + + def OnPopupTwo(self, event): + self.log.WriteText("Popup two\n") + + def OnPopupThree(self, event): + self.log.WriteText("Popup three\n") + + def OnPopupFour(self, event): + self.list.DeleteAllItems() + + def OnPopupFive(self, event): + item = self.list.GetItem(self.currentItem) + print item.m_text, item.m_itemId, self.list.GetItemData(self.currentItem) def OnSize(self, event): w,h = self.GetClientSizeTuple() @@ -52,6 +180,8 @@ class TestListCtrlPanel(wxPanel): + + #--------------------------------------------------------------------------- def runTest(frame, nb, log):