From bb6784e0e1a385cdd20b41d3254093e89a210332 Mon Sep 17 00:00:00 2001 From: pescuma Date: Wed, 31 Dec 2008 21:12:58 +0000 Subject: skins: Added SkinLib git-svn-id: http://pescuma.googlecode.com/svn/trunk/Miranda@120 c086bb3d-8645-0410-b8da-73a8550f86e7 --- Plugins/skins/SkinLib/V8Script.cpp | 220 +++++++++++++++++++++++++++++++++++++ 1 file changed, 220 insertions(+) create mode 100644 Plugins/skins/SkinLib/V8Script.cpp (limited to 'Plugins/skins/SkinLib/V8Script.cpp') diff --git a/Plugins/skins/SkinLib/V8Script.cpp b/Plugins/skins/SkinLib/V8Script.cpp new file mode 100644 index 0000000..9fa5767 --- /dev/null +++ b/Plugins/skins/SkinLib/V8Script.cpp @@ -0,0 +1,220 @@ +#include "globals.h" +#include "V8Script.h" + +#include "utf8_helpers.h" + +using namespace v8; + + + +V8Script::V8Script() : exceptionCallback(NULL), exceptionCallbackParam(NULL) +{ +} + +V8Script::~V8Script() +{ + dispose(); +} + +bool V8Script::compile(const TCHAR *source, Dialog *dlg) +{ + dispose(); + + HandleScope handle_scope; + + context = Context::New(); + + Context::Scope context_scope(context); + + context->Global()->Set(String::New("window"), wrappers.createDialogWrapper(), ReadOnly); + context->Global()->Set(String::New("opts"), wrappers.createOptionsWrapper(), ReadOnly); + for(unsigned int i = 0; i < dlg->fields.size(); i++) + { + Field *field = dlg->fields[i]; + context->Global()->Set(String::New(field->getName()), wrappers.createWrapper(field->getType()), ReadOnly); + } + wrappers.clearTemplates(); + + TryCatch try_catch; + Local