X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6537ccf8cd09e49cfdffb7779928308171e19bbd..15513a8066caaed1d1265cc06c47fc5c8ec1127e:/wxPython/demo/ListCtrl_edit.py diff --git a/wxPython/demo/ListCtrl_edit.py b/wxPython/demo/ListCtrl_edit.py new file mode 100644 index 0000000000..cba1e24007 --- /dev/null +++ b/wxPython/demo/ListCtrl_edit.py @@ -0,0 +1,142 @@ +#---------------------------------------------------------------------------- +# Name: ListCtrl_edit.py +# Purpose: Testing editing a ListCtrl +# +# Author: Pim van Heuven +# +# Created: 2004/10/15 +# Copyright: (c) Pim Van Heuven +# Licence: wxWindows license +#---------------------------------------------------------------------------- + +import sys +import wx +import wx.lib.mixins.listctrl as listmix + +#--------------------------------------------------------------------------- + +listctrldata = { +1 : ("Hey!", "You can edit", "me!"), +2 : ("Try changing the contents", "by", "clicking"), +3 : ("in", "a", "cell"), +4 : ("See how the length columns", "change", "?"), +5 : ("You can use", "TAB,", "cursor down,"), +6 : ("and cursor up", "to", "navigate"), +} + +#--------------------------------------------------------------------------- + +class TestListCtrl(wx.ListCtrl, + listmix.ListCtrlAutoWidthMixin, + listmix.TextEditMixin): + + def __init__(self, parent, ID, pos=wx.DefaultPosition, + size=wx.DefaultSize, style=0): + wx.ListCtrl.__init__(self, parent, ID, pos, size, style) + + # Divide remaining space over all columns + listmix.ListCtrlAutoWidthMixin.__init__(self, 0, 3) + self.Populate() + listmix.TextEditMixin.__init__(self) + + def Populate(self): + # for normal, simple columns, you can add them like this: + self.InsertColumn(0, "Column 1") + self.InsertColumn(1, "Column 2") + self.InsertColumn(2, "Column 3") + self.InsertColumn(3, "Len 1", wx.LIST_FORMAT_RIGHT) + self.InsertColumn(4, "Len 2", wx.LIST_FORMAT_RIGHT) + self.InsertColumn(5, "Len 3", wx.LIST_FORMAT_RIGHT) + + items = listctrldata.items() + for key, data in items: + index = self.InsertStringItem(sys.maxint, data[0]) + self.SetStringItem(index, 0, data[0]) + self.SetStringItem(index, 1, data[1]) + self.SetStringItem(index, 2, data[2]) + self.SetItemData(index, key) + + self.SetColumnWidth(0, wx.LIST_AUTOSIZE) + self.SetColumnWidth(1, wx.LIST_AUTOSIZE) + self.SetColumnWidth(2, 100) + + self.currentItem = 0 + + + def SetStringItem(self, index, col, data): + if col in range(3): + wx.ListCtrl.SetStringItem(self, index, col, data) + wx.ListCtrl.SetStringItem(self, index, 3+col, str(len(data))) + else: + try: + datalen = int(data) + except: + return + + wx.ListCtrl.SetStringItem(self, index, col, data) + + data = self.GetItem(index, col-3).GetText() + wx.ListCtrl.SetStringItem(self, index, col-3, data[0:datalen]) + + + + +class TestListCtrlPanel(wx.Panel): + def __init__(self, parent, log): + wx.Panel.__init__(self, parent, -1, style=wx.WANTS_CHARS) + + self.log = log + tID = wx.NewId() + + self.list = TestListCtrl(self, tID, + style=wx.LC_REPORT + | wx.BORDER_NONE + | wx.LC_SORT_ASCENDING + ) + + self.Bind(wx.EVT_SIZE, self.OnSize) + + + def OnSize(self, event): + w,h = self.GetClientSizeTuple() + self.list.SetDimensions(0, 0, w, h) + + + +#--------------------------------------------------------------------------- + +def runTest(frame, nb, log): + win = TestListCtrlPanel(nb, log) + return win + +#--------------------------------------------------------------------------- + + +overview = """\ + +
+ +This demo demonstrates direct editing of all cells of a ListCtrl. To +enable it just include the TextEditMixin. The ListCtrl can be +navigated with the TAB and up/down cursor keys. + +Another facet of this demo is that the remaining space of the
+ListCtrls is divided over the first three columns. This is achieved
+with the extended syntax of ListCtrlAutoWidthMixin:
+listmix.ListCtrlAutoWidthMixin.__init__(self, startcol, endcol)
+(Look at the general ListCtrl demo for more information about the
+ListCtrlAutoWidthMixin)
+
+
Finally, the ListCtrl is automatically scrolled, if needed, when +TAB is pressed consecutively (Windows only). + + + +""" + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:]) +