def _select_account(self):
row_len = 20
selected = 0
while True:
self.screen.clear()
self.screen.addstr(1, 2, "Select an account:")
rows = self._account_names + ["New account"]
for i, account in enumerate(rows):
row_string = " %s" % account
row_string += " " * (row_len - len(row_string))
if i == selected:
color = self._active_account_color()
else:
color = self._inactive_account_color()
self.screen.addstr(i + 3, 2, row_string, color)
self._display_status()
self.screen.refresh()
c = self.screen.getch()
if c == curses.KEY_UP:
selected -= 1
if selected < 0:
selected = len(rows) - 1
elif c == curses.KEY_DOWN:
selected += 1
if selected >= len(rows):
selected = 0
elif c == curses.KEY_ENTER or c == 10 or c == 13:
if selected == len(rows) - 1:
await self._new_account()
break
else:
account_name = rows[selected]
password = self._enter_password()
ec = await api.Account.set(self._ws, account_name, password)
if ec:
self.screen.addstr(10, 2, "Error: %s" % ec.name)
else:
return
评论列表
文章目录