main_window.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #!/usr/bin/env python3
  2. import worker
  3. from PySide2 import QtCore, QtWidgets, QtGui
  4. class MainWindow(QtWidgets.QWidget):
  5. def __init__(self, app):
  6. super().__init__()
  7. self.app = app
  8. self.setGeometry(500, 400, 500, 400)
  9. self.setWindowModified(True)
  10. self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
  11. self.setWindowIcon(QtGui.QIcon(app.get_icon()))
  12. qRect = self.frameGeometry()
  13. qRect.moveCenter(QtWidgets.QDesktopWidget().availableGeometry().center())
  14. self.move(qRect.topLeft())
  15. layout = QtWidgets.QVBoxLayout()
  16. self.setLayout(layout)
  17. img = QtGui.QPixmap(app.get_icon())
  18. logo = QtWidgets.QLabel(self)
  19. logo.setPixmap(img)
  20. logo.setAlignment(QtCore.Qt.AlignBaseline| QtCore.Qt.AlignCenter)
  21. layout.addWidget(logo, 1, QtCore.Qt.AlignBaseline| QtCore.Qt.AlignCenter)
  22. title = QtWidgets.QLabel(self)
  23. title.setText("OZW Admin")
  24. title.setFont(QtGui.QFont("Times", 28, QtGui.QFont.Bold))
  25. layout.addWidget(title, 0, QtCore.Qt.AlignBaseline| QtCore.Qt.AlignCenter)
  26. self.header = QtWidgets.QLabel(self)
  27. self.header.setText("Checking plugs")
  28. self.header.setAlignment(QtCore.Qt.AlignCenter)
  29. layout.addWidget(self.header, 0, QtCore.Qt.AlignBaseline| QtCore.Qt.AlignCenter)
  30. self.desc = QtWidgets.QLabel(self)
  31. self.desc.setText('...')
  32. self.desc.setAlignment(QtCore.Qt.AlignCenter)
  33. layout.addWidget(self.desc, 0, QtCore.Qt.AlignBaseline| QtCore.Qt.AlignCenter)
  34. self.pgbar = QtWidgets.QProgressBar(self)
  35. layout.addWidget(self.pgbar)
  36. self.plugs = []
  37. self.pgval = 0
  38. self.pw = worker.PlugsWorker(self)
  39. self.exit_code = 0
  40. def close(self):
  41. return super().close()
  42. def quit(self):
  43. self.pw.stop()
  44. self.close()
  45. self.app.exit(self.exit_code)
  46. def updateExitCode(self, code):
  47. if code in [0, 255, 256]:
  48. self.exit_code = code
  49. def showEvent(self, event):
  50. super().showEvent(event)
  51. self.pw.run()
  52. def updateFinised(self):
  53. if self.exit_code != 0:
  54. self.header.setText(f'{self.header.text()} - A manual restart is required!')
  55. self.desc.setText("Exit and launch OZWAdmin again.")
  56. self.layout().removeWidget(self.pgbar)
  57. self.pgbar.deleteLater()
  58. button = QtWidgets.QPushButton("Exit")
  59. button.clicked.connect(self.quit)
  60. self.layout().addWidget(button)
  61. else:
  62. self.quit()
  63. def updateProgress(self):
  64. self.pgval = (self.pgval + 1)
  65. self.pgbar.setValue(self.pgval)
  66. def updateText(self, header, desc):
  67. self.header.setText(header)
  68. self.desc.setText(desc)
  69. def get_plugs(self):
  70. if len(self.plugs) != 0:
  71. return self.plugs
  72. yaml = self.app.get_yaml()
  73. for app_data in yaml['apps'].values():
  74. for plug in app_data['plugs']:
  75. provider = None
  76. for xplug, values in yaml['plugs'].items():
  77. if xplug != plug:
  78. continue
  79. provider = values['default-provider']
  80. break
  81. self.plugs.append({'provider': provider, 'name': plug})
  82. self.pgbar.setRange(0,len(self.plugs))
  83. return self.plugs