X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cb78099221e64fa9c09a6181a37a6b73a9d65d80..f50de1504e002ba3afac3491c8b4817870c850d8:/wxPython/wx/lib/mixins/listctrl.py?ds=inline diff --git a/wxPython/wx/lib/mixins/listctrl.py b/wxPython/wx/lib/mixins/listctrl.py index 9f334af49e..2de4d3bbca 100644 --- a/wxPython/wx/lib/mixins/listctrl.py +++ b/wxPython/wx/lib/mixins/listctrl.py @@ -62,7 +62,7 @@ class ColumnSorterMixin: list = self.GetListCtrl() if not list: raise ValueError, "No wx.ListCtrl available" - self.Bind(wx.EVT_LIST_COL_CLICK, self.__OnColClick, list) + list.Bind(wx.EVT_LIST_COL_CLICK, self.__OnColClick, list) def SetColumnCount(self, newNumColumns): @@ -209,7 +209,7 @@ class ListCtrlAutoWidthMixin: 'minWidth' is the preferred minimum width for the last column. """ - self.resizeColumn(self, minWidth) + self.resizeColumn(minWidth) def resizeColumn(self, minWidth): @@ -226,7 +226,10 @@ class ListCtrlAutoWidthMixin: We automatically resize the last column in the list. """ - wx.CallAfter(self._doResize) + if 'gtk2' in wx.PlatformInfo: + self._doResize() + else: + wx.CallAfter(self._doResize) event.Skip() @@ -402,6 +405,9 @@ class TextEditMixin: Authors: Steve Zatz, Pim Van Heuven (pim@think-wize.com) """ + + editorBgColour = wx.Colour(255,255,175) # Yellow + editorFgColour = wx.Colour(0,0,0) # black def __init__(self): #editor = wx.TextCtrl(self, -1, pos=(-1,-1), size=(-1,-1), @@ -425,7 +431,8 @@ class TextEditMixin: }[col_style] editor.Create(self, -1, style=style) - editor.SetBackgroundColour(wx.Colour(red=255,green=255,blue=175)) #Yellow + editor.SetBackgroundColour(self.editorBgColour) + editor.SetForegroundColour(self.editorFgColour) font = self.GetFont() editor.SetFont(font) @@ -561,16 +568,33 @@ class TextEditMixin: self.curCol = col + # FIXME: this function is usually called twice - second time because + # it is binded to wx.EVT_KILL_FOCUS. Can it be avoided? (MW) def CloseEditor(self, evt=None): ''' Close the editor and save the new value to the ListCtrl. ''' text = self.editor.GetValue() self.editor.Hide() - if self.IsVirtual(): - # replace by whather you use to populate the virtual ListCtrl - # data source - self.SetVirtualData(self.curRow, self.curCol, text) - else: - self.SetStringItem(self.curRow, self.curCol, text) + self.SetFocus() + + # post wxEVT_COMMAND_LIST_END_LABEL_EDIT + # Event can be vetoed. It doesn't has SetEditCanceled(), what would + # require passing extra argument to CloseEditor() + evt = wx.ListEvent(wx.wxEVT_COMMAND_LIST_END_LABEL_EDIT, self.GetId()) + evt.m_itemIndex = self.curRow + evt.m_col = self.curCol + item = self.GetItem(self.curRow, self.curCol) + evt.m_item.SetId(item.GetId()) + evt.m_item.SetColumn(item.GetColumn()) + evt.m_item.SetData(item.GetData()) + evt.m_item.SetText(text) #should be empty string if editor was canceled + ret = self.GetEventHandler().ProcessEvent(evt) + if not ret or evt.IsAllowed(): + if self.IsVirtual(): + # replace by whather you use to populate the virtual ListCtrl + # data source + self.SetVirtualData(self.curRow, self.curCol, text) + else: + self.SetStringItem(self.curRow, self.curCol, text) self.RefreshItem(self.curRow) def _SelectIndex(self, row):