main.py 1.2 KB

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