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):
'minWidth' is the preferred minimum width for the last column.
"""
- self.resizeColumn(self, minWidth)
+ self.resizeColumn(minWidth)
def resizeColumn(self, minWidth):
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()
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),
}[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)
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):