split the interface code into multiple files
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
from helpers import HButtonSelect, spawnDialog, spawnSimplePopup, errorTxt, isValidUsername
|
||||
|
||||
from prompt_toolkit.application.current import get_app
|
||||
from prompt_toolkit.buffer import Buffer
|
||||
from prompt_toolkit.layout.containers import HSplit
|
||||
from prompt_toolkit.validation import Validator
|
||||
from prompt_toolkit.widgets import Box, Button, Dialog, Label, TextArea, ValidationToolbar
|
||||
|
||||
|
||||
class AccountSettings:
|
||||
|
||||
def __init__(self,name,guestLogin,server,floats):
|
||||
self.name = name
|
||||
self.server = server
|
||||
self.floats = floats
|
||||
acc = HButtonSelect([("Log out",self.logout),("Change username",self.changename),("Change password",self.changepass)])
|
||||
if guestLogin:
|
||||
acc = HSplit([
|
||||
Box(HButtonSelect([("Log out",self.logout)]),padding=0),
|
||||
Label("You are currently logged in as a guest."),
|
||||
])
|
||||
self.el = acc
|
||||
|
||||
def logout(self):
|
||||
get_app().exit(result="login")
|
||||
|
||||
def changename(self):
|
||||
usernameValidator = Validator.from_callable(isValidUsername, error_message='Invalid username')
|
||||
|
||||
def nameaccept(buf: Buffer):
|
||||
# get_app().layout.focus(okbtn)
|
||||
dlgclose(True)
|
||||
return True
|
||||
|
||||
nntxtfield = TextArea(
|
||||
text=self.name,
|
||||
multiline=False,
|
||||
password=False,
|
||||
completer=None,
|
||||
validator=usernameValidator,
|
||||
accept_handler=nameaccept,
|
||||
)
|
||||
|
||||
okbtn = Button("OK",handler=lambda: dlgclose(True))
|
||||
cancelbtn = Button("Cancel",handler=lambda: dlgclose(False))
|
||||
|
||||
async def _changename():
|
||||
res = await self.server.changename(nntxtfield.text)
|
||||
if res["type"]=="error":
|
||||
await spawnSimplePopup("Error",errorTxt(res),self.floats)
|
||||
else:
|
||||
get_app().exit(result="restart")
|
||||
|
||||
def dlgclose(res):
|
||||
despawn()
|
||||
if not res: return
|
||||
get_app().create_background_task(_changename())
|
||||
|
||||
dlg = Dialog(
|
||||
title="Change name",
|
||||
body=HSplit([
|
||||
Label(text="Insert your account's new name here:", dont_extend_height=True),
|
||||
nntxtfield,
|
||||
Label(text="Keep in mind that you can only change your name every 7 days.", dont_extend_height=True),
|
||||
ValidationToolbar(),
|
||||
]),
|
||||
buttons=[okbtn, cancelbtn]
|
||||
)
|
||||
|
||||
despawn = spawnDialog(dlg,self.floats)
|
||||
|
||||
def changepass(self):
|
||||
def oldaccept(buf: Buffer):
|
||||
get_app().layout.focus(newtxtfield)
|
||||
return True
|
||||
|
||||
def newaccept(buf: Buffer):
|
||||
# get_app().layout.focus(okbtn)
|
||||
dlgclose(True)
|
||||
return True
|
||||
|
||||
oldtxtfield = TextArea(
|
||||
text="",
|
||||
multiline=False,
|
||||
password=True,
|
||||
completer=None,
|
||||
validator=None,
|
||||
accept_handler=oldaccept,
|
||||
)
|
||||
|
||||
newtxtfield = TextArea(
|
||||
text="",
|
||||
multiline=False,
|
||||
password=True,
|
||||
completer=None,
|
||||
validator=None,
|
||||
accept_handler=newaccept,
|
||||
)
|
||||
|
||||
okbtn = Button("OK",handler=lambda: dlgclose(True))
|
||||
cancelbtn = Button("Cancel",handler=lambda: dlgclose(False))
|
||||
|
||||
async def _changepass():
|
||||
res = await self.server.changepass(oldtxtfield.text,newtxtfield.text)
|
||||
if res["type"]=="error":
|
||||
await spawnSimplePopup("Error",errorTxt(res),self.floats)
|
||||
|
||||
def dlgclose(res):
|
||||
despawn()
|
||||
if not res: return
|
||||
get_app().create_background_task(_changepass())
|
||||
|
||||
dlg = Dialog(
|
||||
title="Change password",
|
||||
body=HSplit([
|
||||
Label(text="Old password:", dont_extend_height=True),
|
||||
oldtxtfield,
|
||||
Label(text="New password:", dont_extend_height=True),
|
||||
newtxtfield,
|
||||
ValidationToolbar(),
|
||||
]),
|
||||
buttons=[okbtn, cancelbtn]
|
||||
)
|
||||
|
||||
despawn = spawnDialog(dlg,self.floats)
|
||||
Reference in New Issue
Block a user