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/SkinOption_v8_wrapper.cpp | 105 ++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 Plugins/skins/SkinLib/SkinOption_v8_wrapper.cpp (limited to 'Plugins/skins/SkinLib/SkinOption_v8_wrapper.cpp') diff --git a/Plugins/skins/SkinLib/SkinOption_v8_wrapper.cpp b/Plugins/skins/SkinLib/SkinOption_v8_wrapper.cpp new file mode 100644 index 0000000..61e1c14 --- /dev/null +++ b/Plugins/skins/SkinLib/SkinOption_v8_wrapper.cpp @@ -0,0 +1,105 @@ +#include "globals.h" +#include "SkinOption_v8_wrapper.h" +#include +#include "SkinOption.h" +#include "utf8_helpers.h" + +using namespace v8; + + +#ifdef UNICODE +# define V8_TCHAR uint16_t +#else +# define V8_TCHAR char +#endif + + +static Handle Get_SkinOption_description(Local property, const AccessorInfo &info) +{ + Local self = info.Holder(); + Local wrap = Local::Cast(self->GetInternalField(0)); + SkinOption *tmp = (SkinOption *) wrap->Value(); + return String::New((const V8_TCHAR *) tmp->getDescription()); +} + +static void Set_SkinOption_description(Local property, Local value, const AccessorInfo& info) +{ + Local self = info.Holder(); + Local wrap = Local::Cast(self->GetInternalField(0)); + SkinOption *tmp = (SkinOption *) wrap->Value(); + String::Utf8Value utf8_value(value); + tmp->setDescription(Utf8ToTchar(*utf8_value)); +} + + +static Handle Get_SkinOption_min(Local property, const AccessorInfo &info) +{ + Local self = info.Holder(); + Local wrap = Local::Cast(self->GetInternalField(0)); + SkinOption *tmp = (SkinOption *) wrap->Value(); + return Int32::New(tmp->getMin()); +} + +static void Set_SkinOption_min(Local property, Local value, const AccessorInfo& info) +{ + Local self = info.Holder(); + Local wrap = Local::Cast(self->GetInternalField(0)); + SkinOption *tmp = (SkinOption *) wrap->Value(); + tmp->setMin(value->Int32Value()); +} + + +static Handle Get_SkinOption_max(Local property, const AccessorInfo &info) +{ + Local self = info.Holder(); + Local wrap = Local::Cast(self->GetInternalField(0)); + SkinOption *tmp = (SkinOption *) wrap->Value(); + return Int32::New(tmp->getMax()); +} + +static void Set_SkinOption_max(Local property, Local value, const AccessorInfo& info) +{ + Local self = info.Holder(); + Local wrap = Local::Cast(self->GetInternalField(0)); + SkinOption *tmp = (SkinOption *) wrap->Value(); + tmp->setMax(value->Int32Value()); +} + + +static Handle Get_SkinOption_type(Local property, const AccessorInfo &info) +{ + Local self = info.Holder(); + Local wrap = Local::Cast(self->GetInternalField(0)); + SkinOption *tmp = (SkinOption *) wrap->Value(); + switch(tmp->getType()) + { + case CHECKBOX: return String::New((const V8_TCHAR *) _T("CHECKBOX")); + case NUMBER: return String::New((const V8_TCHAR *) _T("NUMBER")); + case TEXT: return String::New((const V8_TCHAR *) _T("TEXT")); + } + return Undefined(); +} + +static void Set_SkinOption_type(Local property, Local value, const AccessorInfo& info) +{ + Local self = info.Holder(); + Local wrap = Local::Cast(self->GetInternalField(0)); + SkinOption *tmp = (SkinOption *) wrap->Value(); + String::Utf8Value utf8_value(value); + Utf8ToTchar tval(*utf8_value); + if ( lstrcmpi(_T("CHECKBOX"), tval) == 0) + tmp->setType(CHECKBOX); + else if ( lstrcmpi(_T("NUMBER"), tval) == 0) + tmp->setType(NUMBER); + else if ( lstrcmpi(_T("TEXT"), tval) == 0) + tmp->setType(TEXT); +} + + +void AddSkinOptionAcessors(Handle &templ) +{ + templ->SetAccessor(String::New("description"), Get_SkinOption_description, Set_SkinOption_description); + templ->SetAccessor(String::New("min"), Get_SkinOption_min, Set_SkinOption_min); + templ->SetAccessor(String::New("max"), Get_SkinOption_max, Set_SkinOption_max); + templ->SetAccessor(String::New("type"), Get_SkinOption_type, Set_SkinOption_type); +} -- cgit v1.2.3