main.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. """
  2. [App documentation here]
  3. @author:[author], [year]
  4. """
  5. import sys
  6. from PyQt5.Qt import QApplication
  7. from PyQt5.QtWidgets import QMessageBox
  8. from core import db
  9. from core.indexer import Indexer
  10. from core.logging_ import Logger
  11. from ui.window import MainWindow
  12. try:
  13. # Necessary to ensure that stacktraces are printed when using PyQt5
  14. # Tough, could make pythonw.exe crash
  15. import ipdb # @UnusedImport
  16. except:
  17. pass
  18. logger = Logger.get()
  19. main_window = None
  20. # Configure how errors are processed
  21. sys_err = sys.excepthook
  22. def err_handler(typ, value, trace):
  23. QApplication.restoreOverrideCursor()
  24. if main_window:
  25. QMessageBox.critical(main_window, "Erreur: {}".format(typ.__name__), """{}""".format(value))
  26. sys_err(typ, value, trace)
  27. sys.excepthook = err_handler
  28. # Create db if not existing
  29. try:
  30. db.create()
  31. except FileExistsError:
  32. pass
  33. # Start UI
  34. logger.info("-- Start --")
  35. app = QApplication(sys.argv)
  36. indexer = Indexer()
  37. indexer.start()
  38. main_window = MainWindow()
  39. main_window.show()
  40. try:
  41. r = app.exec_()
  42. finally:
  43. indexer.stop()
  44. db.close()
  45. logger.info("-- Closed --")