🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
UiPilotToolbar.hpp
浏览该文件的文档.
1
7
8#pragma once
9
10#include "AstGlobal.h"
11#include <QWidget>
12#include <QLabel>
13#include <QPushButton>
14#include <QListWidget>
15#include <QTimer>
16#include <QElapsedTimer>
17
18AST_NAMESPACE_BEGIN
19
20class PilotCommander;
21class PilotRecorder;
22class PilotPlayer;
23class PilotSession;
24
28class AST_UIPILOT_API UiPilotToolbar : public QWidget
29{
30 Q_OBJECT
31
32public:
33 explicit UiPilotToolbar(PilotCommander* commander, PilotSession* session,
34 PilotRecorder* recorder, QWidget* parent = nullptr);
35 ~UiPilotToolbar() override;
36 UiPilotToolbar(const UiPilotToolbar&) = delete;
37 UiPilotToolbar& operator=(const UiPilotToolbar&) = delete;
38
39Q_SIGNALS:
40 void consoleToggleRequested();
41 void closed();
42
43protected:
44 void mousePressEvent(QMouseEvent* event) override;
45 void mouseMoveEvent(QMouseEvent* event) override;
46 void mouseDoubleClickEvent(QMouseEvent* event) override;
47 void paintEvent(QPaintEvent* event) override;
48
49private Q_SLOTS:
50 void onRecordToggle();
51 void onPauseResumeToggle();
52 void onReplay();
53 void onPolish();
54 void onCopy();
55
56 void onRecordingStarted();
57 void onRecordingStopped();
58 void onRecordingPaused();
59 void onRecordingResumed();
60 void onStepRecorded(int index, const std::string& description);
61
62 void onReplayStepStarted(int index, const std::string& description);
63 void onReplayStepCompleted(int index, const std::string& result);
64 void onReplayStepFailed(int index, const std::string& error);
65 void onReplayFinished();
66
67private:
68 enum class EState { Idle, Recording, Paused, Stopped, Replaying };
69
70 void setupUi();
71 void applyState(EState state);
72 void updateElapsedDisplay();
73 void scrollToBottom();
74 void rebuildStepListFromRecorder();
75
76 PilotCommander* commander_{};
77 PilotSession* session_{};
78 PilotRecorder* recorder_{};
79 PilotPlayer* player_ = nullptr;
80
81 // 顶部
82 QLabel* recIndicator_{};
83 QLabel* elapsedLabel_{};
84 QLabel* stepStatLabel_{};
85
86 // 步骤
87 QListWidget* stepList_{};
88
89 // 底部按钮
90 QPushButton* recordBtn_{}; // ⏺ 开始录制 / ⏹ 停止录制
91 QPushButton* pauseBtn_{}; // ⏸ 暂停 / ▶ 继续
92 QPushButton* replayBtn_{}; // ▶ 回放 / ⏹ 停止回放
93 QPushButton* polishBtn_{}; // 💎 润色
94 QPushButton* copyBtn_{}; // 📋 复制
95
96 // 计时
97 QTimer* elapsedTimer_{};
98 QElapsedTimer recordingStart_{};
99 int stepCount_ = 0;
100 EState state_ = EState::Idle;
101
102 // 拖拽
103 QPoint dragStartPos_{};
104 bool dragging_ = false;
105};
106
107AST_NAMESPACE_END
命令调度器
定义 PilotCommander.hpp:44
录制脚本回放器
定义 PilotPlayer.hpp:28
界面操作录制器
定义 PilotRecorder.hpp:39
AstUiPilot 对话会话
定义 PilotSession.hpp:40
浮动录制工具栏
定义 UiPilotToolbar.hpp:29