#!/usr/bin/env python
import PySimpleGUIWeb as sg
import time

# ----------------  Create Form  ----------------
layout = [
    [sg.Text('', background_color='black')],
    [sg.Text('00:00', size=(30, 1), font=('Helvetica', 30), justification='center',
          text_color='white', key='text', background_color='black')],
    [sg.Text('', background_color='black')],
    [sg.Button('Pause', key='button', button_color=('white', '#001480')),
     sg.Button('Reset', button_color=('white', '#007339'), key='Reset'),
     sg.Exit(button_color=('white', '#8B1A1A'), key='Exit', )],
]

window = sg.Window('Running Timer', layout,
            background_color='black', font='Helvetica 18')

# ----------------  main loop  ----------------
current_time = 0
paused = False
start_time = int(round(time.time() * 100))
while True:
    # --------- read and update window --------
    if not paused:
        event, values = window.read(timeout=0)
        current_time = int(round(time.time() * 100)) - start_time
    else:
        event, values = window.read()
    print(event, values) if event != sg.TIMEOUT_KEY else None

    if event == 'button':
        event = window[event].GetText()
    # --------- Do Button Operations --------
    
    if event in (None, 'Exit'):        # ALWAYS give a way out of program
        break
    
    if event == 'Reset':
        start_time = int(round(time.time() * 100))
        current_time = 0
        paused_time = start_time
    
    elif event == 'Pause':
        paused = True
        paused_time = int(round(time.time() * 100))
        element = window['button']
        element.update(text='Run')
    
    elif event == 'Run':
        paused = False
        start_time = start_time + int(round(time.time() * 100)) - paused_time
        element = window['button']
        element.update(text='Pause')

    # --------- Display timer in window --------
    window['text'].update('{:02d}:{:02d}.{:02d}'.format((current_time // 100) // 60,
                                                                    (current_time //
                                                                     100) % 60,
                                                                    current_time % 100))
# --------- After loop --------
window.close()