Files
brewpi/brewpi_gui.py
T

73 lines
1.8 KiB
Python

from brewpi_win import Ui_MainWindow
from PyQt5 import QtWidgets
import sys
from ws.client.ws_client import WsClient
from ws.message import MessageDispatcher
from queue import Queue
import asyncio
from ws.connection import IConnection
class Window(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
QtWidgets.QMainWindow.__init__(self)
self.msg_dispatch = MessageDispatcher()
self.ws_client = WsClient(listener=self.msg_dispatch)
self.msg_pot = self.msg_dispatch.msgio_get('Pot')
self.msg_sensor = self.msg_dispatch.msgio_get('Sensor')
self.msg_heater = self.msg_dispatch.msgio_get('Heater')
self.msg_pot.set_recv_handler(self.on_pot_changed)
self.msg_sensor.set_recv_handler(self.on_sensor_changed)
self.msg_heater.set_recv_handler(self.on_heater_changed)
self.setupUi(self)
self.actionStart.triggered.connect(self.connect)
self.actionStop.triggered.connect(self.disconnect)
self.send_data = Queue()
def connect(self):
self.ws_client.connect(uri="ws://localhost:8765")
def disconnect(self):
self.ws_client.disconnect()
def on_pot_changed(self, msg):
print("on_pot_changed")
def on_sensor_changed(self, msg):
print("on_sensor_changed")
def on_heater_changed(self, msg):
print("on_heater_changed")
def on_connect(self):
self.send_data.put_nowait({'+': 'Pot'})
self.send_data.put_nowait({'+': 'Sensor'})
self.send_data.put_nowait({'+': 'Heater'})
def on_disconnect(self):
pass
async def on_recv(self, data):
pass
async def on_send(self):
try:
data = await asyncio.get_event_loop().run_in_executor(None, self.send_data.get, True, 1)
return data
except:
return None
def closeEvent(self, event):
print("Exitting gracefully!")
self.ws_client.disconnect()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec_())
print ("End of program.")