Physics Simulation & Visualization Tool 0.1
A C++ physics simulation engine with real-time 3D visualization
Loading...
Searching...
No Matches
InspectorRow.h
Go to the documentation of this file.
1#pragma once
2#include <qpushbutton.h>
3#include <vector>
4#include <functional>
5#include <QWidget>
6#include <QString>
7#include <QHBoxLayout>
8#include <glm/glm.hpp>
9
10class QCheckBox;
11class Vector3Widget;
12class ScalarWidget;
13
15public:
16 explicit InspectorRow(const QString &lbl, QWidget* parent = nullptr);
17 // Pass through constructor for complex widgets
18 InspectorRow(const QString &lbl, QWidget* customEditor, std::function<void()> updateLogic);
19
20 InspectorRow& addVec3(const std::function<glm::vec3()> &get, const std::function<void(glm::vec3)> &set, const QString& unit = "", const std::function<void(Vector3Widget*)> &onInit = nullptr);
21 InspectorRow& addScalar(const std::function<double()> &get, const std::function<void(double)> &set, const QString& unit = "", const std::function<void(ScalarWidget*)> &onInit = nullptr);
22 InspectorRow& addCheckbox(const std::function<bool()> &get, const std::function<void(bool)> &set, const std::function<void(QCheckBox*)> &onInit = nullptr);
23 InspectorRow& addButton(const QString& text, const std::function<void()> &onClick, const std::function<void(QPushButton*)> &onInit = nullptr);
24
25 QString getLabel() const { return label; }
26 QWidget* getEditor() const { return container; }
27
28 void refresh() {
29 for (auto& fn : updaters) {
30 fn();
31 }
32 }
33
34 void setEnabled(bool enabled) {
35 if (container)
36 container->setEnabled(enabled);
37 }
38
39private:
40 QString label;
41 QWidget* container;
42 QHBoxLayout* layout;
43
44 std::vector<std::function<void()>> updaters;
45};
QString getLabel() const
InspectorRow & addButton(const QString &text, const std::function< void()> &onClick, const std::function< void(QPushButton *)> &onInit=nullptr)
InspectorRow & addCheckbox(const std::function< bool()> &get, const std::function< void(bool)> &set, const std::function< void(QCheckBox *)> &onInit=nullptr)
InspectorRow & addVec3(const std::function< glm::vec3()> &get, const std::function< void(glm::vec3)> &set, const QString &unit="", const std::function< void(Vector3Widget *)> &onInit=nullptr)
QWidget * getEditor() const
void setEnabled(bool enabled)
InspectorRow & addScalar(const std::function< double()> &get, const std::function< void(double)> &set, const QString &unit="", const std::function< void(ScalarWidget *)> &onInit=nullptr)