75 lines
2.0 KiB
Python
75 lines
2.0 KiB
Python
from PyQt5.QtGui import QPixmap
|
|
from PyQt5.QtCore import pyqtSlot, pyqtSignal, QObject
|
|
from threads import UpdateSpaceWeatherThread, ThreadStatus
|
|
|
|
|
|
class SpaceWeatherData(QObject):
|
|
update_complete = pyqtSignal(bool)
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.xray = ''
|
|
self.prot_el = ''
|
|
self.ak_index = ''
|
|
self.sgas = ''
|
|
self.geo_storm = ''
|
|
self.images = [
|
|
QPixmap(),
|
|
QPixmap(),
|
|
QPixmap(),
|
|
QPixmap(),
|
|
QPixmap(),
|
|
QPixmap(),
|
|
QPixmap(),
|
|
QPixmap(),
|
|
QPixmap()
|
|
]
|
|
self.__update_thread = UpdateSpaceWeatherThread(self)
|
|
self.__update_thread.finished.connect(self.__parse_and_emit_signal)
|
|
|
|
@property
|
|
def is_updating(self):
|
|
return self.__update_thread.isRunning()
|
|
|
|
@pyqtSlot()
|
|
def update(self):
|
|
self.__update_thread.start()
|
|
|
|
def __parse_data(self):
|
|
double_split = lambda string: [i.split() for i in string.splitlines()]
|
|
self.xray = double_split(self.xray)
|
|
self.prot_el = double_split(self.prot_el)
|
|
self.ak_index = double_split(self.ak_index)
|
|
self.sgas = double_split(self.sgas)
|
|
self.geo_storm = double_split(self.geo_storm)
|
|
|
|
def remove_data(self):
|
|
self.xray = ''
|
|
self.prot_el = ''
|
|
self.ak_index = ''
|
|
self.sgas = ''
|
|
self.geo_storm = ''
|
|
self.images = [
|
|
QPixmap(),
|
|
QPixmap(),
|
|
QPixmap(),
|
|
QPixmap(),
|
|
QPixmap(),
|
|
QPixmap(),
|
|
QPixmap(),
|
|
QPixmap(),
|
|
QPixmap()
|
|
]
|
|
|
|
@pyqtSlot()
|
|
def __parse_and_emit_signal(self):
|
|
status_ok = False
|
|
if self.__update_thread.status is ThreadStatus.OK:
|
|
status_ok = True
|
|
self.__parse_data()
|
|
self.update_complete.emit(status_ok)
|
|
|
|
def shutdown_thread(self):
|
|
self.__update_thread.terminate()
|
|
self.__update_thread.wait()
|