summaryrefslogtreecommitdiffstats
path: root/wrappers/scriptwrappers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'wrappers/scriptwrappers.cpp')
-rw-r--r--wrappers/scriptwrappers.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/wrappers/scriptwrappers.cpp b/wrappers/scriptwrappers.cpp
index 2ae4cb1..de8e709 100644
--- a/wrappers/scriptwrappers.cpp
+++ b/wrappers/scriptwrappers.cpp
@@ -30,10 +30,13 @@
#include "scriptwrappers.h"
#include <QRect>
#include "utils/position.h"
+#include <QFileInfo>
+#include "qfileinfoprototype.h"
namespace Scripting {
namespace Internal {
+// ==================== Position ====================
QScriptValue scriptValueFromPosition(QScriptEngine *engine, const Position &pos)
{
QScriptValue obj = engine->newObject();
@@ -48,6 +51,7 @@ void PositionFromScriptValue(const QScriptValue &obj, Position& pos)
pos.setColumn( obj.property(QLatin1String("column")).toInt32() );
}
+// ==================== QRect ====================
QScriptValue scriptValueFromQRect(QScriptEngine *engine, const QRect &rect)
{
QScriptValue obj = engine->newObject();
@@ -66,11 +70,26 @@ void QRectFromScriptValue(const QScriptValue &obj, QRect& rect)
rect.setHeight( obj.property(QLatin1String("height")).toInt32() );
}
+// ==================== Prototypes ====================
+
+#define registerProtoType(WrappedType, Prototype) \
+{\
+ const int typeId = qRegisterMetaType<WrappedType>(#WrappedType);\
+ QScriptValue prototype = engine->newQObject(new Prototype );\
+ engine->setDefaultPrototype( typeId, prototype );\
+\
+ QScriptValue creator = engine->newFunction( Prototype::construct, prototype );\
+ engine->globalObject().setProperty(QLatin1String(#WrappedType), creator);\
+}
+
+
void registerWrappers(QScriptEngine* engine )
{
qScriptRegisterMetaType(engine, scriptValueFromPosition, PositionFromScriptValue );
qScriptRegisterMetaType(engine, scriptValueFromQRect, QRectFromScriptValue );
+
+ registerProtoType(QFileInfo, QFileInfoPrototype);
}
} // namespace Internal