🛰️航天仿真算法库 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
37Q_SIGNALS:
38 void consoleToggleRequested();
39 void closed();
40
41protected:
42 void mousePressEvent(QMouseEvent* event) override;
43 void mouseMoveEvent(QMouseEvent* event) override;
44 void mouseDoubleClickEvent(QMouseEvent* event) override;
45 void paintEvent(QPaintEvent* event) override;
46
47private Q_SLOTS:
48 void onRecordToggle();
49 void onPauseResumeToggle();
50 void onReplay();
51 void onPolish();
52 void onCopy();
53
54 void onRecordingStarted();
55 void onRecordingStopped();
56 void onRecordingPaused();
57 void onRecordingResumed();
58 void onStepRecorded(int index, const std::string& description);
59
60 void onReplayStepStarted(int index, const std::string& description);
61 void onReplayStepCompleted(int index, const std::string& result);
62 void onReplayStepFailed(int index, const std::string& error);
63 void onReplayFinished();
64
65private:
66 enum class EState { Idle, Recording, Paused, Stopped, Replaying };
67
68 void setupUi();
69 void applyState(EState state);
70 void updateElapsedDisplay();
71 void scrollToBottom();
72 void rebuildStepListFromRecorder();
73
74 PilotCommander* commander_;
75 PilotSession* session_;
76 PilotRecorder* recorder_;
77 PilotPlayer* player_ = nullptr;
78
79 // 顶部
80 QLabel* recIndicator_;
81 QLabel* elapsedLabel_;
82 QLabel* stepStatLabel_;
83
84 // 步骤
85 QListWidget* stepList_;
86
87 // 底部按钮
88 QPushButton* recordBtn_; // ⏺ 开始录制 / ⏹ 停止录制
89 QPushButton* pauseBtn_; // ⏸ 暂停 / ▶ 继续
90 QPushButton* replayBtn_; // ▶ 回放 / ⏹ 停止回放
91 QPushButton* polishBtn_; // 💎 润色
92 QPushButton* copyBtn_; // 📋 复制
93
94 // 计时
95 QTimer* elapsedTimer_;
96 QElapsedTimer recordingStart_;
97 int stepCount_ = 0;
98 EState state_ = EState::Idle;
99
100 // 拖拽
101 QPoint dragStartPos_;
102 bool dragging_ = false;
103};
104
105AST_NAMESPACE_END
命令调度器
定义 PilotCommander.hpp:44
录制脚本回放器
定义 PilotPlayer.hpp:28
界面操作录制器
定义 PilotRecorder.hpp:39
AstUiPilot 对话会话
定义 PilotSession.hpp:40
浮动录制工具栏
定义 UiPilotToolbar.hpp:29