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