#!/usr/bin/env python3
import os
import sqlite3
import sys
from argparse import ArgumentParser
import utils.database_create as database_create
from PyQt5 import QtWidgets as Qt
from PyQt5.QtCore import QTranslator
from controllers.mainwindow_controller import MainWindow
from utils.database import Database
from utils.globals import Global
from resources import resources_rc


def main():
    script_path = os.path.dirname(os.path.abspath(__file__))
    parser = ArgumentParser()
    parser.add_argument(
        '-d',
        '--database',
        default=script_path + '/database.db',
        help='use specified file as database file, if not specified the default file (script_path/database.db} is used',
        metavar='PATH'
    )
    parser.add_argument(
        '-fc',
        '--force-database-create',
        action='store_true',
        help='force creation of database - program then overwrites file specified in -d or the default one!'
    )
    args = parser.parse_args()
    # clear and create database if -fc was given or create database if given file doesn't exist
    if args.force_database_create is True or not os.path.isfile(args.database):
        if os.path.isfile(args.database):
            overwrite = input("Are you sure, you want to overwrite file '" + args.database + "'?[Y/N]\n")
            if overwrite.upper() != 'Y':
                exit()
            os.remove(args.database)
        database_create.create_db(args.database)

    try:
        Global.db = Database(args.database)
    except (sqlite3.DatabaseError, sqlite3.OperationalError) as e:
        print('The specified database file is invalid.\nTry rerunning with -fc?')
        exit()
    app = Qt.QApplication(sys.argv)
    translator = QTranslator()
    translator.load(script_path + "translations/czech.qm")
    app.installTranslator(translator)
    form = MainWindow()
    form.show()
    app.exec_()

if __name__ == '__main__':
    main()