def __OnColClick(self, evt):
oldCol = self._col
self._col = col = evt.GetColumn()
- self._colSortFlag[col] = not self._colSortFlag[col]
+ self._colSortFlag[col] = int(not self._colSortFlag[col])
self.GetListCtrl().SortItems(self.GetColumnSorter())
self.__updateImages(oldCol)
evt.Skip()
def make_editor(self, col_style=wx.LIST_FORMAT_LEFT):
- editor = wx.PreTextCtrl()
style =wx.TE_PROCESS_ENTER|wx.TE_PROCESS_TAB|wx.TE_RICH2
style |= {wx.LIST_FORMAT_LEFT: wx.TE_LEFT,
wx.LIST_FORMAT_CENTRE : wx.TE_CENTRE
}[col_style]
- editor.Create(self, -1, style=style)
+ editor = wx.TextCtrl(self, -1, style=style)
editor.SetBackgroundColour(self.editorBgColour)
editor.SetForegroundColour(self.editorFgColour)
font = self.GetFont()
self.curCol = 0
editor.Hide()
+ if hasattr(self, 'editor'):
+ self.editor.Destroy()
self.editor = editor
self.col_style = col_style
def OpenEditor(self, col, row):
''' Opens an editor at the current position. '''
+ # give the derived class a chance to Allow/Veto this edit.
+ evt = wx.ListEvent(wx.wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT, self.GetId())
+ evt.m_itemIndex = row
+ evt.m_col = col
+ item = self.GetItem(row, col)
+ evt.m_item.SetId(item.GetId())
+ evt.m_item.SetColumn(item.GetColumn())
+ evt.m_item.SetData(item.GetData())
+ evt.m_item.SetText(item.GetText())
+ ret = self.GetEventHandler().ProcessEvent(evt)
+ if ret and not evt.IsAllowed():
+ return # user code doesn't allow the edit.
+
if self.GetColumn(col).m_format != self.col_style:
self.make_editor(self.GetColumn(col).m_format)
# 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. '''
+ if not self.editor.IsShown():
+ return
text = self.editor.GetValue()
self.editor.Hide()
self.SetFocus()