{"id":"282eqGaQvM","url":"https://pastebin.ca/282eqGaQvM","raw_url":"https://raw.anybin.ca/282eqGaQvM","visibility":"public","access":"public","created_at":1786959222943,"expires_at":null,"fetch_limit":null,"fetches_used":0,"reads_remaining":null,"size_bytes":3809,"syntax_hint":null,"title":null,"filename":"view_configGenerator.h","change_note":null,"cipher":null,"cipher_meta":null,"parent_id":null,"root_id":"282eqGaQvM","version":1,"owner_id":"06G0Y46P106XKPNQDY7E0PJHTZ","recipient_id":null,"body":"#pragma once\n\n#include <QWidget>\n#include <QJsonObject>\n#include <QVector>\n#include <QList>\n#include \"e3d_motion_controller_base.h\"\n#include \"ui_view_configGenarater.h\"\n\nstruct data_ToolheadConfig;\nstruct data_motion_controller;\nclass QSpinBox;\nclass QPushButton;\nclass QLineEdit;\nclass QTableWidget;\nclass QListWidget;\nclass QTabWidget;\nclass QComboBox;\nclass QCheckBox;\nclass QGroupBox;\nstruct data_equipment;\n\nQT_BEGIN_NAMESPACE\nnamespace Ui { class e3d_configGenaraterClass; };\nQT_END_NAMESPACE\n\nclass view_configGenerator : public QWidget\n{\n\tQ_OBJECT\n\npublic:\n\texplicit view_configGenerator(QWidget *parent = nullptr);\n\t~view_configGenerator();\n\nprivate slots:\n\tvoid onLoadConfigFromFile();\n\tvoid onSaveConfigToFile();\n\tvoid onSaveTempClicked();\n\n\t// 1. 控制卡 Master-Detail 槽函数\n\tvoid onAddController();\n\tvoid onDeleteController();\n\tvoid onControllerSelected(int currentRow);\n\n\tvoid onAddAxis();\n\tvoid onDeleteAxis();\n\tvoid onAddIO(QTableWidget* table);\n\tvoid onDeleteIO(QTableWidget* table);\n\n\t// 2. 工具头 (Toolhead) Master-Detail 槽函数\n\tvoid onAddToolhead();\n\tvoid onDeleteToolhead();\n\tvoid onToolheadSelected(int currentRow);\n\tvoid onAddMountedDevice();\n\tvoid onDeleteMountedDevice();\n\nprivate:\n\tvoid initUI();\n\n\t// 顶级 UI 构建\n\tQWidget* createMotionControllerTab();\n\tQWidget* createCommsTab();\n\tQWidget* createHeightSensorTab();  // 测距传感器配置页\n\tQWidget* createDispenserTab();\n\tQWidget* createExternalDeviceTab(); // 物理坐标与通讯通道统一在此管理\n\tQWidget* createToolheadTab();       // 工作头配置页\n\tQWidget* createCommonTab();\n\n\tvoid updateTableRows(QTableWidget *table, int targetCount);\n\n\t// JSON 内存与 UI 数据同步\n\tQJsonObject saveToTempJson();\n\tvoid loadFromTempJson(const QJsonObject& json);\n\n\t// 控制卡辅助同步\n\tvoid saveCurrentControllerFromUI();\n\tvoid updateControllerRightPanel();\n\tvoid clearControllerRightPanel();\n\n\t// 工具头辅助同步\n\tvoid saveCurrentToolheadFromUI();\n\tvoid updateToolheadRightPanel();\n\tvoid clearToolheadRightPanel();\n\nprivate:\n\tUi::e3d_configGenaraterClass *ui;\n\tdata_equipment* currentData = nullptr;\n\n\t// 顶部通用控件\n\tQLineEdit *le_configPath;\n\tQPushButton *pb_loadConfig;\n\tQPushButton *pb_saveConfigToFile;\n\tQPushButton *pb_saveConfigToTemp;\n\tQLineEdit *le_softwareName;\n\n\t// 1. 控制卡页面控件\n\tQListWidget  *m_cardListWidget;\n\tQGroupBox    *m_controllerRightGroup; // 右侧整体面板容器，用于控制 Enable/Disable\n\tQLineEdit    *m_editCardName;\n\tQComboBox    *m_comboBrand;\n\tQLineEdit    *m_editIP;\n\tQSpinBox     *m_spinPort;\n\tQLineEdit    *m_editAllAxisHomePath;\n\tQCheckBox    *m_showSub;\n\n\tQTabWidget   *m_subConfigTab;\n\tQTableWidget *m_axisTable;\n\tQTableWidget *m_dinTable;\n\tQTableWidget *m_doutTable;\n\tQTableWidget *m_ainTable;\n\tQTableWidget *m_aoutTable;\n\tQTableWidget *m_surfaceAxisGroupTable;\n\n\tQList<data_motion_controller> m_controllerList;\n\tint m_currentCardIndex = -1;\n\n\t// 2. 通讯模块页面控件\n\tQSpinBox *sb_count_Comms;\n\tQTableWidget *tw_Comms;\n\n\t// 3. 测距传感器页面控件 (Height Sensor)\n\tQSpinBox *sb_count_HeightSensor;\n\tQTableWidget *tw_HeightSensor;\n\n\t// 4. 点胶机页面控件\n\tQSpinBox *sb_count_Dispenser;\n\tQTableWidget *tw_Dispenser;\n\n\t// 5. 全局外设页面控件 (包含 Pos X, Y, Z 以及 m_commsChannelName)\n\tQSpinBox *sb_count_ExternalDevice;\n\tQTableWidget *tw_ExternalDevice;\n\t\t\n\t// 6. 工作头 (Toolhead) 页面控件\n\tQListWidget  *m_toolheadListWidget;\n\tQGroupBox    *m_toolheadRightGroup; // 右侧整体面板容器，用于控制 Enable/Disable\n\tQLineEdit    *m_editToolheadName;\n\tQCheckBox    *m_chkIsVirtualToolhead;\n\tQLineEdit    *m_editBindMotionGroup;\n\tQLineEdit    *m_editBindZAxis;\n\tQTableWidget *m_mountedDevicesTable;\n\n\tQList<data_ToolheadConfig> m_toolheadList;\n\tint m_currentToolheadIndex = -1;\n};"}