68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
import sys, os
|
|
from PyQt5.QtWidgets import QApplication, QWidget, QListWidget, QListWidgetItem, QVBoxLayout, QPushButton, QLabel, QHBoxLayout
|
|
from multi_logger import MultiLogger
|
|
|
|
scriptDir = os.path.dirname(os.path.realpath(__file__))
|
|
DEFAULT_OUTDIR = os.path.join(scriptDir, "logs")
|
|
|
|
class ListItemWidget(QWidget):
|
|
def __init__(self, label, worker):
|
|
super().__init__()
|
|
self.worker = worker
|
|
lay = QHBoxLayout(self)
|
|
lay.addWidget(QLabel(label))
|
|
lay.addStretch()
|
|
self.btn_start = QPushButton("Start")
|
|
self.btn_stop = QPushButton("Stop")
|
|
self.btn_stop.setEnabled(False)
|
|
self.btn_start.clicked.connect(self._on_start)
|
|
self.btn_stop.clicked.connect(self._on_stop)
|
|
lay.addWidget(self.btn_start)
|
|
lay.addWidget(self.btn_stop)
|
|
lay.setContentsMargins(5,2,5,2)
|
|
|
|
def _on_start(self):
|
|
self.worker.start()
|
|
self.btn_start.setEnabled(False)
|
|
self.btn_stop.setEnabled(True)
|
|
|
|
def _on_stop(self):
|
|
self.worker.stop()
|
|
self.btn_start.setEnabled(True)
|
|
self.btn_stop.setEnabled(False)
|
|
|
|
class MainWindow(QWidget):
|
|
def __init__(self, mlog: MultiLogger):
|
|
super().__init__()
|
|
self.mlog = mlog
|
|
self.setWindowTitle("Multi-Geräte-Logger")
|
|
self.resize(420, 320)
|
|
|
|
main = QVBoxLayout(self)
|
|
self.list = QListWidget()
|
|
main.addWidget(self.list)
|
|
|
|
for w in self.mlog.workers:
|
|
item = QListWidgetItem()
|
|
widget = ListItemWidget(w.serial, w)
|
|
item.setSizeHint(widget.sizeHint())
|
|
self.list.addItem(item)
|
|
self.list.setItemWidget(item, widget)
|
|
|
|
if __name__ == "__main__":
|
|
# 1) Logger + Geräte
|
|
ml = MultiLogger(outdir=DEFAULT_OUTDIR, filter_window_size=10, interval=0.1)
|
|
print("Gefundene Geräte:", [w.serial for w in ml.workers])
|
|
ml.set_default_modes()
|
|
ml.start_session()
|
|
|
|
# 3) GUI
|
|
app = QApplication(sys.argv)
|
|
win = MainWindow(ml)
|
|
win.show()
|
|
rc = app.exec_()
|
|
|
|
# 4) Sauber beenden
|
|
ml.stop_all()
|
|
ml.shutdown()
|
|
sys.exit(rc) |