dlg_contact.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. """
  2. """
  3. import logging
  4. import os
  5. import platform
  6. from qgis.core import QgsProject
  7. import subprocess
  8. import unittest
  9. from PyQt5 import QtWidgets
  10. from PyQt5 import uic
  11. from PyQt5.QtCore import Qt, QFileInfo
  12. from PyQt5.QtGui import QIcon, QPixmap
  13. from PyQt5.QtWidgets import QTextBrowser
  14. from core.constants import MAIN, LOGDIR, RSCDIR, CONTACT, TESTDIR, DEBUG
  15. from path import Path
  16. from test._stream import TestStream
  17. logger = logging.getLogger("mncheck")
  18. Ui_Contact, _ = uic.loadUiType(MAIN / 'ui'/ 'dlg_contact.ui')
  19. class DlgContact(QtWidgets.QDialog):
  20. def __init__(self, parent=None):
  21. super().__init__(parent)
  22. self.createWidgets()
  23. def createWidgets(self):
  24. """ set up the interface """
  25. self.ui = Ui_Contact()
  26. self.ui.setupUi(self)
  27. self.setWindowIcon(QIcon(MAIN / "icon.png"))
  28. self.ui.lbl_mn_logo.setPixmap(QPixmap(RSCDIR / "mn_logo_mini.png"))
  29. self.ui.lbl_warning_logo.setPixmap(QPixmap(RSCDIR / "warning_16.png"))
  30. self.ui.lbl_mail.setText(f"<a href=\"mailto:{CONTACT}\">{CONTACT}</a>")
  31. self.ui.lbl_mail.setTextFormat(Qt.RichText)
  32. self.ui.lbl_mail.setTextInteractionFlags(Qt.TextBrowserInteraction)
  33. self.ui.lbl_mail.setOpenExternalLinks(True)
  34. self.ui.btn_open_log_dir.clicked.connect(self.open_log_dir)
  35. self.ui.btn_test.setVisible(DEBUG)
  36. self.ui.btn_test.clicked.connect(self.run_tests)
  37. def open_log_dir(self):
  38. path = Path(LOGDIR).abspath()
  39. if platform.system() == "Windows":
  40. os.startfile(path)
  41. else:
  42. subprocess.Popen(["open", path])
  43. def run_tests(self):
  44. _initial_project = QgsProject.instance().absoluteFilePath()
  45. if _initial_project:
  46. QgsProject.instance().write(QFileInfo(_initial_project))
  47. loader = unittest.TestLoader()
  48. tests = loader.discover(Path(TESTDIR).abspath())
  49. with open(LOGDIR / "checkup.txt", "w+") as f:
  50. runner = unittest.TextTestRunner(stream=f)
  51. runner.run(tests)
  52. if _initial_project:
  53. QgsProject.instance().clear()
  54. QgsProject.read(QFileInfo(_initial_project))
  55. with open(LOGDIR / "checkup.txt", "r") as f:
  56. dlg = QTextBrowser()
  57. dlg.setText(f.read())
  58. dlg.show()