pyceo/ceo/tui/start.py

87 lines
3.8 KiB
Python
Raw Normal View History

2021-08-28 23:09:02 -04:00
import sys
2021-09-08 18:28:29 -04:00
from asciimatics.exceptions import ResizeScreenError
2021-08-28 23:09:02 -04:00
from asciimatics.scene import Scene
from asciimatics.screen import Screen
from .ConfirmView import ConfirmView
2021-09-06 12:40:05 -04:00
from .ErrorView import ErrorView
2021-08-28 23:09:02 -04:00
from .Model import Model
2021-09-06 12:40:05 -04:00
from .ResultView import ResultView
2021-08-28 23:09:02 -04:00
from .TransactionView import TransactionView
from .WelcomeView import WelcomeView
2021-09-12 02:08:15 -04:00
from .databases.CreateDatabaseView import CreateDatabaseView
from .databases.CreateDatabaseResultView import CreateDatabaseResultView
from .databases.ResetDatabasePasswordView import ResetDatabasePasswordView
from .databases.ResetDatabasePasswordResultView import ResetDatabasePasswordResultView
2021-09-07 01:02:34 -04:00
from .groups.AddGroupView import AddGroupView
2021-09-07 22:59:56 -04:00
from .groups.AddMemberToGroupView import AddMemberToGroupView
2021-09-07 01:22:20 -04:00
from .groups.GetGroupView import GetGroupView
from .groups.GetGroupResultView import GetGroupResultView
2021-09-07 23:20:51 -04:00
from .groups.RemoveMemberFromGroupView import RemoveMemberFromGroupView
2021-08-28 23:09:02 -04:00
from .members.AddUserView import AddUserView
from .members.ChangeLoginShellView import ChangeLoginShellView
2021-09-06 22:29:53 -04:00
from .members.GetUserView import GetUserView
from .members.GetUserResultView import GetUserResultView
2021-09-06 12:40:05 -04:00
from .members.RenewUserView import RenewUserView
2021-09-06 23:03:30 -04:00
from .members.ResetPasswordView import ResetPasswordView
from .members.ResetPasswordResultView import ResetPasswordResultView
from .members.SetForwardingAddressesView import SetForwardingAddressesView
2021-08-28 23:09:02 -04:00
2021-09-05 18:48:20 -04:00
# tuples of (name, view)
views = []
def screen_wrapper(screen, last_scene, model):
global views
# unload the old views
for name, view in views:
2021-09-06 22:29:53 -04:00
if hasattr(view, '_on_ceoframe_unload'):
view._on_ceoframe_unload()
2021-08-28 23:09:02 -04:00
width = min(screen.width, 90)
height = min(screen.height, 24)
2021-09-05 18:48:20 -04:00
views = [
('Welcome', WelcomeView(screen, width, height, model)),
('Confirm', ConfirmView(screen, width, height, model)),
('Transaction', TransactionView(screen, width, height, model)),
2021-09-06 12:40:05 -04:00
('Result', ResultView(screen, width, height, model)),
('Error', ErrorView(screen, width, height, model)),
('AddUser', AddUserView(screen, width, height, model)),
('RenewUser', RenewUserView(screen, width, height, model)),
2021-09-06 22:29:53 -04:00
('GetUser', GetUserView(screen, width, height, model)),
('GetUserResult', GetUserResultView(screen, width, height, model)),
2021-09-06 23:03:30 -04:00
('ResetPassword', ResetPasswordView(screen, width, height, model)),
('ResetPasswordResult', ResetPasswordResultView(screen, width, height, model)),
('ChangeLoginShell', ChangeLoginShellView(screen, width, height, model)),
('SetForwardingAddresses', SetForwardingAddressesView(screen, width, height, model)),
2021-09-07 01:02:34 -04:00
('AddGroup', AddGroupView(screen, width, height, model)),
2021-09-07 01:22:20 -04:00
('GetGroup', GetGroupView(screen, width, height, model)),
('GetGroupResult', GetGroupResultView(screen, width, height, model)),
2021-09-07 22:59:56 -04:00
('AddMemberToGroup', AddMemberToGroupView(screen, width, height, model)),
2021-09-07 23:20:51 -04:00
('RemoveMemberFromGroup', RemoveMemberFromGroupView(screen, width, height, model)),
2021-09-12 02:08:15 -04:00
('CreateDatabase', CreateDatabaseView(screen, width, height, model)),
('CreateDatabaseResult', CreateDatabaseResultView(screen, width, height, model)),
('ResetDatabasePassword', ResetDatabasePasswordView(screen, width, height, model)),
('ResetDatabasePasswordResult', ResetDatabasePasswordResultView(screen, width, height, model)),
2021-09-05 18:48:20 -04:00
]
2021-08-28 23:09:02 -04:00
scenes = [
2021-09-05 18:48:20 -04:00
Scene([view], -1, name=name) for name, view in views
2021-08-28 23:09:02 -04:00
]
2021-09-06 22:29:53 -04:00
model.screen = screen
model.views = [view for name, view in views]
2021-08-28 23:09:02 -04:00
screen.play(
2021-09-05 18:48:20 -04:00
scenes, stop_on_resize=True, start_scene=last_scene, allow_int=True,
2021-09-08 18:28:29 -04:00
)
2021-08-28 23:09:02 -04:00
def main():
last_scene = None
model = Model()
while True:
try:
Screen.wrapper(screen_wrapper, arguments=[last_scene, model])
sys.exit(0)
except ResizeScreenError as e:
last_scene = e.scene