brisonus_app_eq/app.py

117 lines
4.3 KiB
Python
Raw Normal View History

2025-02-21 17:49:10 +08:00
import time
2025-02-18 22:05:52 +08:00
from component.widget_main.widget_main import Widget_Main
from component.widget_channel.widget_channel import Widget_Channel
from component.widget_card.widget_card import Widget_Card
from component.widget_card.widget_card import CardData
from component.widget_filter.audio_filter_componet import AudioFilterWidget
from component.widget_filter.audio_filter_model import AudioFilterModel
from component.widget_filter.audio_filter_controller import AudioFilterController
from param_struct_test.service_manager import ServiceManager
from application.application_controller import ApplicationController
2025-02-18 22:05:52 +08:00
from datetime import date
from PySide6.QtWidgets import QMainWindow, QPushButton, QVBoxLayout
2025-02-18 22:05:52 +08:00
from PySide6.QtWidgets import QWidget
from PySide6.QtCore import QObject
2025-02-21 17:49:10 +08:00
2025-02-18 22:05:52 +08:00
class MainWindow(QWidget):
def __init__(self):
super().__init__()
# 初始化服务
2025-02-21 17:49:10 +08:00
ServiceManager.instance().init_services("192.168.5.4", 12345)
# 初始化应用控制器
self.app_controller = ApplicationController.instance()
2025-02-21 17:49:10 +08:00
2025-02-18 22:05:52 +08:00
self.widget_main = Widget_Main()
self.widget_channel = Widget_Channel()
self.widget_card = Widget_Card()
2025-02-21 17:49:10 +08:00
# 添加测试按钮
self.test_button = QPushButton("Get_All")
self.test_button.clicked.connect(self.Get_All)
self.widget_main.ui.ListWidget_vLayout.addWidget(self.test_button)
self.widget_main.ui.ListWidget_vLayout.addWidget(self.widget_card)
2025-02-18 22:05:52 +08:00
self.widget_main.ui.Channel_hLayout.addWidget(self.widget_channel)
2025-02-21 17:49:10 +08:00
2025-02-18 22:05:52 +08:00
self.widget_filter_list = []
self.filter_controllers = [] # 存储控制器实例
2025-02-18 22:05:52 +08:00
self.create_filter_widget()
self.setup_connections()
2025-02-21 17:49:10 +08:00
2025-02-18 22:05:52 +08:00
def create_filter_widget(self):
2025-02-21 17:49:10 +08:00
for i in range(1, 7):
# 创建widget
2025-02-18 22:05:52 +08:00
filter_widget = AudioFilterWidget()
filter_widget.set_channel_id(i)
2025-02-21 17:49:10 +08:00
filter_widget.set_channel_name(f"Channel {i}")
# 创建model和controller
2025-02-21 17:49:10 +08:00
model = AudioFilterModel(channel_id=i, channel_name=f"Channel {i}")
controller = AudioFilterController(model)
controller.set_widget(filter_widget)
2025-02-21 17:49:10 +08:00
# 连接控制器信号
controller.error_occurred.connect(lambda msg: print(f"Error: {msg}"))
controller.state_changed.connect(lambda state: print(f"State changed: {state}"))
controller.params_synced.connect(lambda: print("Params synced"))
2025-02-21 17:49:10 +08:00
# 存储实例
2025-02-18 22:05:52 +08:00
self.widget_filter_list.append(filter_widget)
self.filter_controllers.append(controller)
2025-02-18 22:05:52 +08:00
def setup_connections(self):
print("setup_connections")
self.widget_channel.channel_btn_clicked.connect(self.on_channel_btn_clicked)
def on_channel_btn_clicked(self, channel_id: int):
print(f"channel_id: {channel_id}")
self.widget_filter_list[channel_id].show()
def test_communication(self):
"""测试通信功能"""
print("Testing communication...")
2025-02-21 17:49:10 +08:00
# 测试第一个控制器的通信
if self.filter_controllers:
controller = self.filter_controllers[0]
2025-02-21 17:49:10 +08:00
# 测试从服务器加载数据
print("Testing load from server...")
controller.load_from_server()
2025-02-21 17:49:10 +08:00
# 测试同步数据到服务器
print("Testing sync to server...")
2025-02-21 17:49:10 +08:00
controller.sync_to_server()
def Get_All(self):
try:
for controller in self.filter_controllers:
controller.load_from_server()
break
time.sleep(1)
print("Successfully loaded all filter data")
except Exception as e:
print(f"Error loading filter data: {e}")
2025-02-18 22:05:52 +08:00
if __name__ == '__main__':
import sys
from PySide6.QtWidgets import QApplication
app = QApplication(sys.argv)
main_window = MainWindow()
2025-02-21 17:49:10 +08:00
# # 添加测试卡片
# for i in range(1, 11):
# data = CardData(
# name=f"项目 {i}",
# date=date.today().strftime("%Y-%m-%d"),
# description=f"这是项目 {i} 的详细描述信息,可以包含多行文本内容。这是一个较长的描述,用于测试换行效果。"
# )
# main_window.widget_card.add_card_item(data)
2025-02-21 17:49:10 +08:00
2025-02-18 22:05:52 +08:00
main_window.widget_main.show()
sys.exit(app.exec())