#!/usr/bin/env python3

import sys
import pathlib
import os
sys.path.append(str(pathlib.Path(__file__).absolute().parent.parent / 'src'))

from nmreval.configs import check_for_config

# does a directory for config stuff exist? create it if not
check_for_config()

# pyqtgraph warns on Mac if QApplication is created when it is imported
# import pyqtgraph

from nmreval.lib.logger import handle_exception
sys.excepthook = handle_exception

from gui_qt import App
from gui_qt.Qt import QtCore

app = App(['NMReval'])

from gui_qt.main.mainwindow import NMRMainWindow
from gui_qt.lib.backup import BackupManager


def do_autosave():
    # autosave and update timestamp in db
    success = mplQt.autosave()
    if success:
        backuping.update_last_save()

# autosave stuff: keep track of instance and their backup files
backuping = BackupManager()

# look for autosaves in DB without running programs
files = backuping.search_unsaved()

# tell everyone what autosave files belongs to this process
pid = os.getpid()
bck_name = backuping.create_entry(pid)
mplQt = NMRMainWindow(bck_file=bck_name)

# one manual autosave to create the file
do_autosave()

# load all selected autosaves to program
for f in files:
    mplQt.management.load_files(f)
    f.unlink()

timer = QtCore.QTimer()
timer.timeout.connect(do_autosave)
timer.start(3 * 60 * 1000)

app.aboutToQuit.connect(backuping.close)

mplQt.show()

sys.exit(app.exec())
