Developer Documentation
ScriptSettings.cc
1#include "ScriptSettings.hh"
2
3#if QT_VERSION_MAJOR < 6
4#include <QScriptContext>
5#include <QScriptEngine>
6#endif
7#include <QWidget>
8
9#include "Widgets/BooleanWidget.hh"
10#include "Widgets/VectorWidget.hh"
11#include "Widgets/DoubleWidget.hh"
12
13#include "ScriptSettingsBoolean.hh"
14#include "ScriptSettingsDouble.hh"
15#include "ScriptSettingsVector.hh"
16
17
18ScriptSettings::ScriptSettings(QWidget *widget)
19{
20 if (widget) {
21 connect(widget, &QWidget::destroyed,
22 this, &QObject::deleteLater);
23 }
24}
25
26#if QT_VERSION_MAJOR < 6
27QScriptValue createSettingsScriptObject(QScriptContext *ctx, QWidget *widget)
28{
29 QScriptEngine *engine = ctx->engine();
30 ScriptSettings *obj = nullptr;
31 if (auto w = dynamic_cast<BooleanWidget*>(widget)) {
32 obj = new ScriptSettingsBoolean(w);
33 }
34 else if (auto w = dynamic_cast<DoubleWidget*>(widget)) {
35 obj = new ScriptSettingsDouble(w);
36 }
37 else if (auto w = dynamic_cast<VectorWidget*>(widget)) {
38 obj = new ScriptSettingsVector(w);
39 }
40
41 if (!obj) { // no ScriptSettings class implemented for this widget
42 return QScriptValue::SpecialValue::NullValue;
43 }
44 return engine->newQObject(obj,
45 QScriptEngine::QtOwnership,
46 QScriptEngine::ExcludeSuperClassMethods
47 | QScriptEngine::ExcludeSuperClassProperties
48 | QScriptEngine::ExcludeChildObjects
49 );
50}
51#endif