47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
import sys
|
|
|
|
from asciimatics.event import KeyboardEvent
|
|
from asciimatics.exceptions import ResizeScreenError, StopApplication
|
|
from asciimatics.scene import Scene
|
|
from asciimatics.screen import Screen
|
|
|
|
from .ConfirmView import ConfirmView
|
|
from .Model import Model
|
|
from .TransactionView import TransactionView
|
|
from .WelcomeView import WelcomeView
|
|
from .members.AddUserView import AddUserView
|
|
|
|
|
|
def unhandled(event):
|
|
if isinstance(event, KeyboardEvent):
|
|
c = event.key_code
|
|
# Stop on 'q' or 'Esc'
|
|
if c in (113, 27):
|
|
raise StopApplication("User terminated app")
|
|
|
|
|
|
def screen_wrapper(screen, scene, model):
|
|
model.screen = screen
|
|
width = min(screen.width, 90)
|
|
height = min(screen.height, 24)
|
|
scenes = [
|
|
Scene([WelcomeView(screen, width, height, model)], -1, name='Welcome'),
|
|
Scene([AddUserView(screen, width, height, model)], -1, name='AddUser'),
|
|
Scene([ConfirmView(screen, width, height, model)], -1, name='Confirm'),
|
|
Scene([TransactionView(screen, width, height, model)], -1, name='Transaction'),
|
|
]
|
|
screen.play(
|
|
scenes, stop_on_resize=True, start_scene=scene, allow_int=True,
|
|
unhandled_input=unhandled)
|
|
|
|
|
|
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
|