connect.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. from PyQt5 import QtWidgets
  2. from PyQt5.QtCore import QObject, pyqtSignal, QThread
  3. from PyQt5.uic import loadUi
  4. from lyberry_qt.helpers import relative_path
  5. class Connector(QObject):
  6. finished = pyqtSignal(bool)
  7. def __init__(self, lbry):
  8. self._lbry = lbry
  9. super().__init__()
  10. def run(self):
  11. items = []
  12. for i,code in enumerate(self._lbry.connect()):
  13. if code == 0:
  14. self.finished.emit(True)
  15. break
  16. elif code == 1:
  17. self.finished.emit(False)
  18. break
  19. class ConnectingWidget(QtWidgets.QDialog):
  20. change_url = pyqtSignal(str)
  21. def __init__(self, lbry):
  22. super(ConnectingWidget, self).__init__()
  23. loadUi(relative_path('designer/connecting.ui'), self)
  24. self._lbry = lbry
  25. self.reconnect_button.clicked.connect(self.reconnect)
  26. self.thread = QThread()
  27. self.url = 'about:connecting'
  28. def reconnect(self):
  29. self.status.setText('RECONNECTING')
  30. if self._lbry.online():
  31. self.close()
  32. elif self._lbry.initialising():
  33. self.status.setText('INITIALISING')
  34. self.reconnect_button.setEnabled(False)
  35. self.worker = Connector(self._lbry)
  36. self.worker.moveToThread(self.thread)
  37. self.thread.started.connect(self.worker.run)
  38. self.worker.finished.connect(self.close)
  39. self.worker.finished.connect(self.worker.deleteLater)
  40. self.worker.finished.connect(self.thread.quit)
  41. self.thread.start()
  42. else:
  43. self.status.setText('OFFLINE')