From ca23d4561e90cc7f89bad7c96cd2a8ce4a052b1b Mon Sep 17 00:00:00 2001 From: Sven Augustin Date: Sat, 29 Oct 2022 18:47:14 +0200 Subject: [PATCH] added possibility to remove bad chars via escape press --- slic/gui/widgets/entries.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/slic/gui/widgets/entries.py b/slic/gui/widgets/entries.py index acdea1bd..fef6f51d 100644 --- a/slic/gui/widgets/entries.py +++ b/slic/gui/widgets/entries.py @@ -220,16 +220,32 @@ class FilenameEntry(wx.TextCtrl, PersistableWidget, AlarmMixin): self.SetInsertionPoint(ins) - def on_key_lift(self, _event): + def on_key_lift(self, event): self.check_value() + self.on_escape(event) + + + def on_escape(self, event): + code = event.GetKeyCode() + if code != wx.WXK_ESCAPE: + event.Skip() + return + + if self._alarm: + cleaned = "".join(i for i in self.GetValue() if i in ALLOWED_CHARS) + self.SetValue(cleaned) + self._unset_alarm() def check_value(self): + msg_allowed = "\nPlease use only ASCII letters (a–z and A–Z), digits (0–9), minus (-) or underscore (_)." + msg_remove = "\nPress escape to remove unsupported characters." + value = self.GetValue() leftover = set(value) - ALLOWED_CHARS if leftover: leftover = "".join(sorted(leftover)) - msg = f"Cannot use the following characters: {leftover}\nPlease use only ASCII letters (a–z and A–Z), digits (0–9), minus (-) or underscore (_)." + msg = f"Cannot use the following characters: {leftover}" + msg_allowed + msg_remove self._set_alarm(msg) else: self._unset_alarm()