diff options
Diffstat (limited to 'lib/gui/edit_json/editable_list.py')
| -rw-r--r-- | lib/gui/edit_json/editable_list.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/gui/edit_json/editable_list.py b/lib/gui/edit_json/editable_list.py new file mode 100644 index 00000000..51026a0c --- /dev/null +++ b/lib/gui/edit_json/editable_list.py @@ -0,0 +1,39 @@ +import wx +from wx.lib.mixins.listctrl import TextEditMixin + + +class EditableListCtrl(wx.ListCtrl, TextEditMixin): + + def __init__(self, parent, ID=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.DefaultSize, style=0): + wx.ListCtrl.__init__(self, parent, ID, pos, size, style) + TextEditMixin.__init__(self) + + def OpenEditor(self, column, row): + self.original_data = self.GetItemText(row, column) + if column == 2: + TextEditMixin.OpenEditor(self, column, row) + self.editor.Bind(wx.EVT_KEY_DOWN, self.on_escape) + + def on_escape(self, event=None): + keycode = event.GetKeyCode() + if keycode == wx.WXK_ESCAPE: + self.CloseEditor(event=None, swap=True) + event.Skip() + + def CloseEditor(self, event=None, swap=False): + text = self.editor.GetValue() + if swap: + self.editor.Hide() + TextEditMixin.CloseEditor(self, event) + return + + if text: + try: + float(text) + except ValueError: + swap = True + + if swap: + self.editor.SetValue(self.original_data) + + TextEditMixin.CloseEditor(self, event) |
