import os
import sys
from pathlib import Path

try:
    from PySide6.QtCore import QLibraryInfo, qVersion, QTime
    from PySide6.QtWidgets import QApplication,QWidget
except ImportError:
    from PySide2.QtCore import QLibraryInfo, qVersion, QTime
    from PySide2.QtWidgets import QApplication,QWidget


LOG_FILE = 'log.txt'
PID = os.getpid()


def log(msg):
    t = QTime.currentTime().toString()
    m = f'{t}:{PID}: {msg}'
    print(m)
    with open(LOG_FILE, 'a') as f:
        f.write(m)
        f.write('\n')


class Window(QWidget):
    def __init__(self):
        super(Window, self).__init__()


def about_to_quit():
    log('aboutToQuit')


def commit_data():
    log('commitDataRequest')


def application_state_changed(a):
    log(f'applicationStateChanged({a})')


if __name__ == '__main__':
    print(f'Logging to {LOG_FILE}')
    log('Start')
    log('Python {}.{}'.format(sys.version_info[0], sys.version_info[1]))    
    log(QLibraryInfo.build())    

    app = QApplication(sys.argv)
    log(f'sessionId="{app.sessionId()}", sessionKey="{app.sessionKey()}"')

    window = Window()
    window.setWindowTitle(qVersion())
    window.show()

    app.aboutToQuit.connect(about_to_quit)
    app.commitDataRequest.connect(commit_data)
    app.applicationStateChanged.connect(application_state_changed)

    ex = app.exec_()
    log(f'End, ex={ex}')
    sys.exit(ex)
