# # video_demo.py # # Simple statemachine demo, based on the state transitions given in videostate.pystate # import statemachine import videostate class Video(videostate.VideoStateMixin): def __init__(self, title): self.initialize_state(videostate.Stopped) self.title = title # ==== main loop - a REPL ==== v = Video("Die Hard.mp4") while True: print(v.state) cmd = input("Command ({})> ".format('/'.join(videostate.VideoState.transition_names))).lower().strip() if not cmd: continue if cmd in ('?', 'h', 'help'): print('enter a transition {!r}'.format(videostate.VideoState.transition_names)) print(' q - quit') print(' ?, h, help - this message') continue # quitting out if cmd.startswith('q'): break # get transition function for given command state_transition_fn = getattr(v, cmd, None) if state_transition_fn is None: print('???') continue # invoke the input transition, handle invalid commands try: state_transition_fn() except videostate.VideoState.InvalidTransitionException as e: print(e)