Advertisement
olemis

olemis

Nov 18th, 2009
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.96 KB | None | 0 0
  1. class GridCellSetEditor(wx.grid.PyGridCellEditor):
  2.   def __init__(self, choices):
  3.     wx.grid.PyGridCellEditor.__init__(self)
  4.     self._choices = choices
  5.   def Create(self, parent, id, evtHandler):
  6.     self._dlg = wx.MultiChoiceDialog(parent, "Select items from the list", \
  7.                                     "Choices", self._choices)
  8.     self._tc = wx.TextCtrl(parent, id=id, style=wx.TE_READONLY)
  9.     if evtHandler:
  10.       self._tc.PushEventHandler(evtHandler)
  11.     self.SetControl(self._tc)
  12.   def SetSize(self, rect):
  13.     self._tc.SetDimensions(rect.x, rect.y, rect.width+2, \
  14.                             rect.height+2, wx.SIZE_ALLOW_MINUS_ONE)
  15.   def _idx(self, value):
  16.     try :
  17.       return self._choices.index(value)
  18.     except ValueError :
  19.       return None
  20.   def BeginEdit(self, row, col, grid):
  21.     self.startValue = value = grid.GetTable().GetValue(row, col)
  22.     self._tc.SetValue(','.join(self.startValue))
  23.     if isinstance(value, basestring):
  24.       value = [value]
  25.     self._dlg.SetSelections(filter(lambda x: x is not None, \
  26.                                 (self._idx(x) for x in value)))
  27.     self.result = self._dlg.ShowModal()
  28.     self.value = (self.result == wx.ID_OK and
  29.                       ([self._choices[x] for x in self._dlg.GetSelections()],)
  30.                       or (self.startValue,))[0]
  31.     self._tc.SetValue(','.join(self.value))
  32.     grid.HideCellEditControl()
  33. #    grid.SaveEditControlValue()
  34. @@    if row == 0 :
  35. @@      grid.MoveCursorDown(False)
  36. @@      grid.MoveCursorUp(False)
  37. @@    else :
  38. @@      grid.MoveCursorUp(False)
  39. @@      grid.MoveCursorDown(False)
  40.   def EndEdit(self, row, col, grid):
  41.     try:
  42.       changed = self.result == wx.ID_OK
  43.     except AttributeError:
  44.       return False
  45.     else :
  46.       if changed :
  47.         grid.GetTable().SetValue(row, col, self.value)
  48.       del self.result
  49.       return changed
  50.   def Reset(self):
  51.     pass
  52.   def Clone(self):
  53.     return GridCellSetEditor(self._choices)
  54.  
  55.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement