Set an edit widget's text

Also make the width calculation take into account the Edit's cursor.
This commit is contained in:
Joscha 2019-06-12 16:12:04 +00:00
parent 1307a9d06b
commit 8b0740778c

View file

@ -30,12 +30,16 @@ class EditWidget(urwid.WidgetWrap):
def width(self) -> int: def width(self) -> int:
prompt_width, _ = self._prompt.pack(None) prompt_width, _ = self._prompt.pack(None)
edit_width, _ = self._edit.pack(None) edit_width, _ = self._edit.pack(None)
return max(prompt_width, edit_width) return max(prompt_width, edit_width + 1)
@property @property
def text(self) -> str: def text(self) -> str:
return self._edit.edit_text return self._edit.edit_text
@text.setter
def text(self, text: str) -> None:
self._edit.edit_text = text
class PasswordEditWidget(urwid.WidgetWrap): class PasswordEditWidget(urwid.WidgetWrap):
def __init__(self, def __init__(self,
@ -65,12 +69,16 @@ class PasswordEditWidget(urwid.WidgetWrap):
def width(self) -> int: def width(self) -> int:
prompt_width, _ = self._prompt.pack(None) prompt_width, _ = self._prompt.pack(None)
edit_width, _ = self._edit.pack(None) edit_width, _ = self._edit.pack(None)
return max(prompt_width, edit_width) return max(prompt_width, edit_width + 1)
@property @property
def text(self) -> str: def text(self) -> str:
return self._edit.edit_text return self._edit.edit_text
@text.setter
def text(self, text: str) -> None:
self._edit.edit_text = text
def update_fake_edit(self) -> None: def update_fake_edit(self) -> None:
fake_text = self._mask_char * len(self._edit.edit_text) fake_text = self._mask_char * len(self._edit.edit_text)
self._fake_edit.edit_text = fake_text self._fake_edit.edit_text = fake_text