import os import sys from asciimatics.exceptions import ResizeScreenError from asciimatics.scene import Scene from asciimatics.screen import Screen from .ConfirmView import ConfirmView from .ErrorView import ErrorView from .Model import Model from .ResultView import ResultView from .TransactionView import TransactionView from .WelcomeView import WelcomeView from .databases.CreateDatabaseView import CreateDatabaseView from .databases.CreateDatabaseResultView import CreateDatabaseResultView from .databases.ResetDatabasePasswordView import ResetDatabasePasswordView from .databases.ResetDatabasePasswordResultView import ResetDatabasePasswordResultView from .groups.AddGroupView import AddGroupView from .groups.AddMemberToGroupView import AddMemberToGroupView from .groups.GetGroupView import GetGroupView from .groups.GetGroupResultView import GetGroupResultView from .groups.RemoveMemberFromGroupView import RemoveMemberFromGroupView from .members.AddUserTransactionView import AddUserTransactionView from .members.AddUserView import AddUserView from .members.ChangeLoginShellView import ChangeLoginShellView from .members.GetUserView import GetUserView from .members.GetUserResultView import GetUserResultView from .members.RenewUserView import RenewUserView from .members.ResetPasswordView import ResetPasswordView from .members.ResetPasswordResultView import ResetPasswordResultView from .members.SetForwardingAddressesView import SetForwardingAddressesView from .positions import GetPositionsView, SetPositionsView # tuples of (name, view) views = [] def screen_wrapper(screen, last_scene, model): global views width = min(screen.width, 90) height = min(screen.height, 24) views = [ ('Welcome', WelcomeView(screen, width, height, model)), ('Confirm', ConfirmView(screen, width, height, model)), ('Transaction', TransactionView(screen, width, height, model)), ('Result', ResultView(screen, width, height, model)), ('Error', ErrorView(screen, width, height, model)), ('AddUser', AddUserView(screen, width, height, model)), ('AddUserTransaction', AddUserTransactionView(screen, width, height, model)), ('RenewUser', RenewUserView(screen, width, height, model)), ('GetUser', GetUserView(screen, width, height, model)), ('GetUserResult', GetUserResultView(screen, width, height, model)), ('ResetPassword', ResetPasswordView(screen, width, height, model)), ('ResetPasswordResult', ResetPasswordResultView(screen, width, height, model)), ('ChangeLoginShell', ChangeLoginShellView(screen, width, height, model)), ('SetForwardingAddresses', SetForwardingAddressesView(screen, width, height, model)), ('AddGroup', AddGroupView(screen, width, height, model)), ('GetGroup', GetGroupView(screen, width, height, model)), ('GetGroupResult', GetGroupResultView(screen, width, height, model)), ('AddMemberToGroup', AddMemberToGroupView(screen, width, height, model)), ('RemoveMemberFromGroup', RemoveMemberFromGroupView(screen, width, height, model)), ('CreateDatabase', CreateDatabaseView(screen, width, height, model)), ('CreateDatabaseResult', CreateDatabaseResultView(screen, width, height, model)), ('ResetDatabasePassword', ResetDatabasePasswordView(screen, width, height, model)), ('ResetDatabasePasswordResult', ResetDatabasePasswordResultView(screen, width, height, model)), ('GetPositions', GetPositionsView(screen, width, height, model)), ('SetPositions', SetPositionsView(screen, width, height, model)), ] scenes = [ Scene([view], -1, name=name) for name, view in views ] model.screen = screen model.views = [view for name, view in views] screen.play( scenes, stop_on_resize=True, start_scene=last_scene, allow_int=True, ) def main(): last_scene = None model = Model() try: Screen.wrapper(screen_wrapper, arguments=[last_scene, model]) sys.exit(0) except ResizeScreenError: os.system('reset') print('Unfortunately, ceo does not currently support dynamic resizing.') sys.exit(1)