From 8427211b78aaf4e8fedd3b2eea672ae7e096ec62 Mon Sep 17 00:00:00 2001 From: flandre Date: Wed, 19 Feb 2025 00:05:14 +0800 Subject: [PATCH] fix many --- src/nodes/Loader.py | 15 ++++++++------- src/nodes/MainUI.py | 38 +++++++++++++++++++++++++++----------- src/ui/Main.py | 2 +- src/ui/Main.ui | 2 +- src/utils/Msg.py | 4 ---- 5 files changed, 37 insertions(+), 24 deletions(-) diff --git a/src/nodes/Loader.py b/src/nodes/Loader.py index 6ff7652..76ce17f 100644 --- a/src/nodes/Loader.py +++ b/src/nodes/Loader.py @@ -7,7 +7,7 @@ import zmq from config import PLAYBACK_SOCKET_PORT, SOFTWARE_CONFIG from nodes.Node import Node -from utils.Msg import MoveAxisMsg, KillMsg, SelectSeqMsg, SetSeqMetaMsg, SeqIdMinMax, SetBaseMsg, SeqListMsg, SeqIdList, \ +from utils.Msg import MoveAxisMsg, KillMsg, SetSeqMetaMsg, SeqIdMinMax, SetBaseMsg, SeqListMsg, SeqIdList, \ SetSidMsg from utils.RfFile import RfSequence @@ -15,7 +15,7 @@ logger = logging.getLogger(__name__) class Loader(Node): - topics = [MoveAxisMsg, SelectSeqMsg, SetBaseMsg, SetSidMsg] + topics = [MoveAxisMsg, SetSeqMetaMsg, SetBaseMsg, SetSidMsg] def loop(self): playback_socket = self.context.socket(zmq.PUSH) @@ -37,13 +37,14 @@ class Loader(Node): buffer.write(struct.pack('=iqi', 114514, frame.meta.sequence_id, frame.meta.encoder)) buffer.write(frame.bytes) playback_socket.send(buffer.getvalue()) - elif isinstance(msg, SelectSeqMsg): + elif isinstance(msg, SetSeqMetaMsg): if base is None: continue - rff = RfSequence.from_folder(base / msg.value) - self.send(SetSeqMetaMsg('playback', rff.meta.name)) - self.send(SeqIdMinMax(*rff.seq_id_minmax)) - self.send(SeqIdList([f.meta.sequence_id for f in rff.frames])) + if msg.target == 'playback': + rff = RfSequence.from_folder(base / msg.name) + self.send(SeqIdMinMax(*rff.seq_id_minmax)) + self.send(SeqIdList([f.meta.sequence_id for f in rff.frames])) + self.send(SetSidMsg(0)) elif isinstance(msg, SetBaseMsg): base = Path(msg.value) seq_list = [f.name for f in base.glob('*')] diff --git a/src/nodes/MainUI.py b/src/nodes/MainUI.py index 95211a7..d16bc45 100644 --- a/src/nodes/MainUI.py +++ b/src/nodes/MainUI.py @@ -6,6 +6,7 @@ from enum import Enum, auto from pathlib import Path from PyQt6 import QtCore +from PyQt6 import QtGui from PyQt6.QtCore import QByteArray from PyQt6.QtWidgets import QMainWindow, QApplication, QFrame, QMessageBox, QFileDialog @@ -13,7 +14,7 @@ from Main import Ui_MainWindow from ZMQReceiver import ZMQReceiver from config import DS, SOFTWARE_CONFIG from nodes.Node import Node -from utils.Msg import KillMsg, Msg, ImageArgMsg, SelectSeqMsg, SeqIdMinMax, MoveAxisMsg, SeqListMsg, SetBaseMsg, \ +from utils.Msg import KillMsg, Msg, ImageArgMsg, SeqIdMinMax, MoveAxisMsg, SeqListMsg, SetBaseMsg, \ SetSeqMetaMsg, SetPlayMode, DeviceConnectedMsg, DeviceEnabledMsg, DeviceOnlineMsg, SetDeviceEnabledMsg, \ SetDeviceConnectedMsg, DeviceConfigListMsg, SetDeviceConfigMsg, SetRecordMsg, RobotRtsiMsg, RecordFrameMsg, \ SeqIdList, SetWindowVisibleMsg, SetSidMsg @@ -59,7 +60,8 @@ class Adv(QMainWindow, Ui_MainWindow): self.s_t_start.valueChanged.connect(self.on_t_start) self.s_t_end.valueChanged.connect(self.on_t_end) self.c_playback_seq_name.currentIndexChanged.connect(self.on_select_plyayback_seq_name) - self.s_sid.valueChanged.connect(self.c_sid) + self.s_sid.valueChanged.connect(self.on_s_sid) + self.sp_sid.valueChanged.connect(self.on_sp_sid) self.arg = ImageArgMsg('ui', t_start=0, t_end=1499) self.b_base.clicked.connect(self.on_base_open) self.seq_meta: RfSequenceMeta | None = None @@ -73,6 +75,10 @@ class Adv(QMainWindow, Ui_MainWindow): # self.b_device_connected.clicked.connect(lambda: self.p.send(SetDeviceConnectedMsg(not self.device_connected))) self.c_live_seq_name.currentIndexChanged.connect(self.on_seq_meta) self.l_base.setText(SOFTWARE_CONFIG.base_dir.__str__()) + self.l_base.textChanged.connect(lambda e: + self.l_base.setStyleSheet("") + if Path(e).exists() else + self.l_base.setStyleSheet("background-color: pink;")) self.b1, self.b2 = False, False self.b3, self.b4 = False, False @@ -250,7 +256,7 @@ class Adv(QMainWindow, Ui_MainWindow): if msg.name == '': self.close() elif isinstance(msg, ImageArgMsg): - self.s_t_end.setValue(msg.t_start) + self.s_t_start.setValue(msg.t_start) self.s_t_end.setValue(msg.t_end) elif isinstance(msg, MoveAxisMsg): match msg.axis: @@ -260,6 +266,7 @@ class Adv(QMainWindow, Ui_MainWindow): # self.l_seq_current.setText(str(self.seq_id_list[msg.value])) elif isinstance(msg, SetSidMsg): self.s_sid.setValue(msg.value) + self.sp_sid.setValue(msg.value) self.l_seq_current.setText(str(self.seq_id_list[msg.value])) elif isinstance(msg, SeqIdList): self.seq_id_list = msg.li @@ -274,13 +281,14 @@ class Adv(QMainWindow, Ui_MainWindow): for name in msg.value: self.c_playback_seq_name.addItem(name) if msg.value.__len__() > 0: - self.p.send( - SelectSeqMsg(self.c_playback_seq_name.itemText(self.c_playback_seq_name.currentIndex()))) + self.p.send(SetSeqMetaMsg('playback', self.c_playback_seq_name.itemText( + self.c_playback_seq_name.currentIndex()))) self.b_play_playback.setEnabled(True) elif isinstance(msg, SetSeqMetaMsg): self.seq_meta = RfSequenceMeta.from_name(msg.name) - self.s_t_start.setMaximum(max(self.seq_meta.shape)) - self.s_t_end.setMaximum(max(self.seq_meta.shape)) + mmax_shape0 = max(self.seq_meta.shape) + self.s_t_start.setMaximum(mmax_shape0) + self.s_t_end.setMaximum(mmax_shape0) elif isinstance(msg, DeviceConnectedMsg): if msg.value: self.set_device_connection(LinkStatus.GREEN) @@ -345,14 +353,17 @@ class Adv(QMainWindow, Ui_MainWindow): @QtCore.pyqtSlot(int) def on_select_plyayback_seq_name(self, v): if self.c_playback_seq_name.sender() is None or isinstance(self.c_playback_seq_name.sender(), QFrame): - self.p.send(SelectSeqMsg(self.c_playback_seq_name.itemText(v))) + self.p.send(SetSeqMetaMsg('playback', self.c_playback_seq_name.itemText(v))) @QtCore.pyqtSlot(int) - def c_sid(self, v): + def on_s_sid(self, v): if self.s_sid.sender() is None: - self.sp_sid.setValue(v) self.p.send(SetSidMsg(v)) - # self.p.send(MoveAxisMsg('ui', 'S', v)) + + @QtCore.pyqtSlot(int) + def on_sp_sid(self, v): + if self.sp_sid.sender() is None: + self.p.send(SetSidMsg(v)) @QtCore.pyqtSlot(int) def on_seq_meta(self, v): @@ -377,9 +388,14 @@ class MainUI(Node): def loop(self): try: app = QApplication(sys.argv) + app.setDesktopFileName('TestTest') if platform.system() == 'Windows': app.setStyle('windowsvista') MainWindow = Adv(self) + # icon = QtGui.QIcon() + # icon.addPixmap(QtGui.QPixmap("remilia3.png"), + # QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off) + # MainWindow.setApp(icon) # MainWindow.move(int(px), int(py)) # MainWindow.resize(int(sx), int(sy)) MainWindow.show() diff --git a/src/ui/Main.py b/src/ui/Main.py index e3f5166..e44b38e 100644 --- a/src/ui/Main.py +++ b/src/ui/Main.py @@ -370,7 +370,7 @@ class Ui_MainWindow(object): def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate - MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) + MainWindow.setWindowTitle(_translate("MainWindow", "Scarlet Flandre Control Panel")) self.label_20.setText(_translate("MainWindow", "DeviceConfig")) self.c_live_seq_name.setItemText(0, _translate("MainWindow", "Empty")) self.b_device_enable.setText(_translate("MainWindow", "Disconnect")) diff --git a/src/ui/Main.ui b/src/ui/Main.ui index 827e684..603846c 100644 --- a/src/ui/Main.ui +++ b/src/ui/Main.ui @@ -11,7 +11,7 @@ - MainWindow + Scarlet Flandre Control Panel diff --git a/src/utils/Msg.py b/src/utils/Msg.py index 0767477..9e4dc39 100644 --- a/src/utils/Msg.py +++ b/src/utils/Msg.py @@ -13,7 +13,6 @@ class BG(Enum): StrMsg = auto() MoveAxisMsg = auto() ImageArgMsg = auto() - SelectSeqMsg = auto() SetSeqMetaMsg = auto() SeqIdMinMax = auto() SetBaseMsg = auto() @@ -143,9 +142,6 @@ class SeqListMsg(Msg): value: list[str] -class SelectSeqMsg(StrMsg): - pass - class SetPlayMode(StrMsg): pass