Add behavior for "long backspace" press in keyboard

what this actually does must be specified by parent i guess, so far
that is in 2 places.  if many more would be nice to standardize that a
bit more somehow
This commit is contained in:
Lance Edgar 2023-09-26 10:04:13 -05:00
parent 78e6704639
commit 32fc71691e
3 changed files with 25 additions and 4 deletions

View file

@ -117,7 +117,8 @@ class WuttaCustomerLookup(WuttaControl):
], ],
), ),
ft.Divider(), ft.Divider(),
WuttaKeyboard(self.config, on_keypress=self.keypress), WuttaKeyboard(self.config, on_keypress=self.keypress,
on_long_backspace=self.long_backspace),
ft.Divider(), ft.Divider(),
ft.Row( ft.Row(
[ [
@ -162,6 +163,11 @@ class WuttaCustomerLookup(WuttaControl):
self.searchbox.focus() self.searchbox.focus()
self.update() self.update()
def long_backspace(self):
self.searchbox.value = self.searchbox.value[:-10]
self.searchbox.focus()
self.update()
def lookup(self, e=None): def lookup(self, e=None):
entry = self.searchbox.value entry = self.searchbox.value
if not entry: if not entry:

View file

@ -71,7 +71,8 @@ class WuttaFeedback(WuttaControl):
ft.Divider(), ft.Divider(),
self.message, self.message,
ft.Divider(), ft.Divider(),
WuttaKeyboard(self.config, on_keypress=self.keypress), WuttaKeyboard(self.config, on_keypress=self.keypress,
on_long_backspace=self.long_backspace),
], ],
expand=True, expand=True,
), ),
@ -121,6 +122,11 @@ class WuttaFeedback(WuttaControl):
self.message.focus() self.message.focus()
self.update() self.update()
def long_backspace(self):
self.message.value = self.message.value[:-10]
self.message.focus()
self.update()
def cancel(self, e): def cancel(self, e):
self.dlg.open = False self.dlg.open = False
self.page.update() self.page.update()

View file

@ -36,6 +36,7 @@ class WuttaKeyboard(WuttaControl):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.on_keypress = kwargs.pop('on_keypress', None) self.on_keypress = kwargs.pop('on_keypress', None)
self.on_long_backspace = kwargs.pop('on_long_backspace', None)
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
@ -127,10 +128,16 @@ class WuttaKeyboard(WuttaControl):
if self.shift: if self.shift:
self.update_shift(False) self.update_shift(False)
def long_backspace(self, e):
if self.on_long_backspace:
self.on_long_backspace()
def build(self): def build(self):
self.keys = {} self.keys = {}
def make_key(key, data=None, on_click=self.simple_keypress, def make_key(key, data=None,
on_click=self.simple_keypress,
on_long_press=None,
width=self.default_button_size, width=self.default_button_size,
bgcolor=None): bgcolor=None):
button = ft.Container(content=ft.Text(key, size=self.default_font_size, button = ft.Container(content=ft.Text(key, size=self.default_font_size,
@ -139,6 +146,7 @@ class WuttaKeyboard(WuttaControl):
height=self.default_button_size, height=self.default_button_size,
width=width, width=width,
on_click=on_click, on_click=on_click,
on_long_press=on_long_press,
alignment=ft.alignment.center, alignment=ft.alignment.center,
border=ft.border.all(1, 'black'), border=ft.border.all(1, 'black'),
border_radius=ft.border_radius.all(5), border_radius=ft.border_radius.all(5),
@ -162,7 +170,8 @@ class WuttaKeyboard(WuttaControl):
self.shift_key.bgcolor = 'blue' self.shift_key.bgcolor = 'blue'
rows = [ rows = [
[make_key(k) for k in "`1234567890-="] + [make_key('', bgcolor='yellow')], [make_key(k) for k in "`1234567890-="] + [make_key('', bgcolor='yellow',
on_long_press=self.long_backspace)],
[make_key(k) for k in "qwertyuiop[]\\"], [make_key(k) for k in "qwertyuiop[]\\"],
[self.caps_key] + [make_key(k) for k in "asdfghjkl;'"] + [make_key('', bgcolor='blue')], [self.caps_key] + [make_key(k) for k in "asdfghjkl;'"] + [make_key('', bgcolor='blue')],
[self.shift_key] + [make_key(k) for k in "zxcvbnm,./"], [self.shift_key] + [make_key(k) for k in "zxcvbnm,./"],