Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class GridCellSetEditor(wx.grid.PyGridCellEditor):
- def __init__(self, choices):
- wx.grid.PyGridCellEditor.__init__(self)
- self._choices = choices
- def Create(self, parent, id, evtHandler):
- self._dlg = wx.MultiChoiceDialog(parent, "Select items from the list", \
- "Choices", self._choices)
- self._tc = wx.TextCtrl(parent, id=id, style=wx.TE_READONLY)
- if evtHandler:
- self._tc.PushEventHandler(evtHandler)
- self.SetControl(self._tc)
- def SetSize(self, rect):
- self._tc.SetDimensions(rect.x, rect.y, rect.width+2, \
- rect.height+2, wx.SIZE_ALLOW_MINUS_ONE)
- def _idx(self, value):
- try :
- return self._choices.index(value)
- except ValueError :
- return None
- def BeginEdit(self, row, col, grid):
- self.startValue = value = grid.GetTable().GetValue(row, col)
- self._tc.SetValue(','.join(self.startValue))
- if isinstance(value, basestring):
- value = [value]
- self._dlg.SetSelections(filter(lambda x: x is not None, \
- (self._idx(x) for x in value)))
- self.result = self._dlg.ShowModal()
- self.value = (self.result == wx.ID_OK and
- ([self._choices[x] for x in self._dlg.GetSelections()],)
- or (self.startValue,))[0]
- self._tc.SetValue(','.join(self.value))
- grid.HideCellEditControl()
- # grid.SaveEditControlValue()
- @@ if row == 0 :
- @@ grid.MoveCursorDown(False)
- @@ grid.MoveCursorUp(False)
- @@ else :
- @@ grid.MoveCursorUp(False)
- @@ grid.MoveCursorDown(False)
- def EndEdit(self, row, col, grid):
- try:
- changed = self.result == wx.ID_OK
- except AttributeError:
- return False
- else :
- if changed :
- grid.GetTable().SetValue(row, col, self.value)
- del self.result
- return changed
- def Reset(self):
- pass
- def Clone(self):
- return GridCellSetEditor(self._choices)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement