🛰️航天仿真算法库 SpaceAST 0.3.1
载入中...
搜索中...
未找到
EditFigureDialog.hpp
浏览该文件的文档.
1
8#pragma once
9
10#include "AstGlobal.h"
11#include <QDialog>
12#include <QTreeWidget>
13#include <QStackedWidget>
14#include <QPushButton>
15#include <QDialogButtonBox>
16#include <QIcon>
17
18#ifdef AST_WITH_MATPLOT
19namespace matplot {
20 class figure_type;
21 class axes_type;
22 class axes_object;
23}
24
25AST_NAMESPACE_BEGIN
26
27class AxesPropertyPage;
28class LinePropertyPage;
29class SurfacePropertyPage;
30
31class AST_CHART_API EditFigureDialog : public QDialog {
32 Q_OBJECT
33public:
34 explicit EditFigureDialog(matplot::figure_type* figure, QWidget* parent = nullptr);
35 EditFigureDialog(const EditFigureDialog&) = delete;
36 EditFigureDialog& operator=(const EditFigureDialog&) = delete;
37
38 void selectPlotItem(int axesIndex, int itemIndex);
39
40private slots:
41 void onTreeSelectionChanged();
42 void onApply();
43
44private:
45 void setupUi();
46 void buildTree();
47 QIcon loadIcon(const QString& name) const;
48
49 enum NodeType { TypeFigure, TypeAxes, TypePlotItem };
50 enum DataRole { TypeRole = Qt::UserRole, AxesIndexRole = Qt::UserRole + 1, ItemIndexRole = Qt::UserRole + 2 };
51
52 matplot::figure_type* figure_{};
53 QTreeWidget* tree_{};
54 QStackedWidget* stack_{};
55 AxesPropertyPage* axesPage_{};
56 LinePropertyPage* linePage_{};
57 SurfacePropertyPage* surfacePage_{};
58 QWidget* placeholder_{};
59 QPushButton* applyBtn_{};
60};
61
62AST_NAMESPACE_END
63#endif