Advertisement
olemis

olemis

Nov 18th, 2009
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.57 KB | None | 0 0
  1. class (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.     if isinstance(value, basestring):
  23.       value = [value]
  24.     self._dlg.SetSelections(filter(lambda x: x is not None, \
  25.                                 (self._idx(x) for x in value)))
  26.     self.result = self._dlg.ShowModal()
  27.     self.value = (self.result == wx.ID_OK and
  28.                       ([self._choices[x] for x in self._dlg.GetSelections()],)
  29.                       or (self.startValue,))[0]
  30.     self._tc.SetValue(','.join(self.value))
  31.   def EndEdit(self, row, col, grid):
  32.     changed = self.result == wx.ID_OK
  33.     if changed :
  34.       grid.GetTable().SetValue(row, col, self.value)
  35.     del self.result
  36.     return changed
  37.   def Reset(self):
  38.     pass
  39.   def Clone(self):
  40.     return GridCellSetEditor(self._choices)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement