From de4ef8a65afd0c38f8bbdfcb3b90ff82a98d1483 Mon Sep 17 00:00:00 2001 From: pescuma Date: Sat, 24 Jan 2009 05:38:13 +0000 Subject: skins: fix for floats and added valign (not used yet) git-svn-id: http://pescuma.googlecode.com/svn/trunk/Miranda@133 c086bb3d-8645-0410-b8da-73a8550f86e7 --- Plugins/skins/SkinLib/FieldState_v8_wrapper.cpp | 128 ++++++++++++++++++++++-- 1 file changed, 120 insertions(+), 8 deletions(-) (limited to 'Plugins/skins/SkinLib/FieldState_v8_wrapper.cpp') diff --git a/Plugins/skins/SkinLib/FieldState_v8_wrapper.cpp b/Plugins/skins/SkinLib/FieldState_v8_wrapper.cpp index 31e0e7d..937ad69 100644 --- a/Plugins/skins/SkinLib/FieldState_v8_wrapper.cpp +++ b/Plugins/skins/SkinLib/FieldState_v8_wrapper.cpp @@ -43,7 +43,7 @@ static void Set_FieldState_x(Local property, Local value, const A if (tmp == NULL) return; - if (!value.IsEmpty() && value->IsInt32()) + if (!value.IsEmpty() && value->IsNumber()) tmp->setX(value->Int32Value()); } @@ -77,7 +77,7 @@ static void Set_FieldState_y(Local property, Local value, const A if (tmp == NULL) return; - if (!value.IsEmpty() && value->IsInt32()) + if (!value.IsEmpty() && value->IsNumber()) tmp->setY(value->Int32Value()); } @@ -111,7 +111,7 @@ static void Set_FieldState_width(Local property, Local value, con if (tmp == NULL) return; - if (!value.IsEmpty() && value->IsInt32()) + if (!value.IsEmpty() && value->IsNumber()) tmp->setWidth(value->Int32Value()); } @@ -145,7 +145,7 @@ static void Set_FieldState_height(Local property, Local value, co if (tmp == NULL) return; - if (!value.IsEmpty() && value->IsInt32()) + if (!value.IsEmpty() && value->IsNumber()) tmp->setHeight(value->Int32Value()); } @@ -179,7 +179,7 @@ static void Set_FieldState_left(Local property, Local value, cons if (tmp == NULL) return; - if (!value.IsEmpty() && value->IsInt32()) + if (!value.IsEmpty() && value->IsNumber()) tmp->setLeft(value->Int32Value()); } @@ -213,7 +213,7 @@ static void Set_FieldState_top(Local property, Local value, const if (tmp == NULL) return; - if (!value.IsEmpty() && value->IsInt32()) + if (!value.IsEmpty() && value->IsNumber()) tmp->setTop(value->Int32Value()); } @@ -247,7 +247,7 @@ static void Set_FieldState_right(Local property, Local value, con if (tmp == NULL) return; - if (!value.IsEmpty() && value->IsInt32()) + if (!value.IsEmpty() && value->IsNumber()) tmp->setRight(value->Int32Value()); } @@ -281,7 +281,7 @@ static void Set_FieldState_bottom(Local property, Local value, co if (tmp == NULL) return; - if (!value.IsEmpty() && value->IsInt32()) + if (!value.IsEmpty() && value->IsNumber()) tmp->setBottom(value->Int32Value()); } @@ -374,6 +374,116 @@ static void Set_FieldState_toolTip(Local property, Local value, c } +static Handle Get_FieldState_hAlign(Local property, const AccessorInfo &info) +{ + HandleScope scope; + + Local self = info.Holder(); + Local wrap = Local::Cast(self->GetInternalField(0)); + if (wrap.IsEmpty()) + return scope.Close( Undefined() ); + + FieldState *tmp = (FieldState *) wrap->Value(); + if (tmp == NULL) + return scope.Close( Undefined() ); + + switch(tmp->getHAlign()) + { + case HORIZONTAL_ALIGN_LEFT: return scope.Close( String::New((const V8_TCHAR *) _T("LEFT")) ); + case HORIZONTAL_ALIGN_CENTER: return scope.Close( String::New((const V8_TCHAR *) _T("CENTER")) ); + case HORIZONTAL_ALIGN_RIGHT: return scope.Close( String::New((const V8_TCHAR *) _T("RIGHT")) ); + } + return scope.Close( Undefined() ); +} + +static void Set_FieldState_hAlign(Local property, Local value, const AccessorInfo& info) +{ + HandleScope scope; + + Local self = info.Holder(); + Local wrap = Local::Cast(self->GetInternalField(0)); + if (wrap.IsEmpty()) + return; + + FieldState *tmp = (FieldState *) wrap->Value(); + if (tmp == NULL) + return; + + if (!value.IsEmpty() && value->IsString()) + { + String::Utf8Value utf8_value(value); + Utf8ToTchar tval(*utf8_value); + if ( lstrcmpi(_T("HORIZONTAL_ALIGN_LEFT"), tval) == 0 ) + tmp->setHAlign(HORIZONTAL_ALIGN_LEFT); + else if ( lstrcmpi(_T("LEFT"), tval) == 0 ) + tmp->setHAlign(HORIZONTAL_ALIGN_LEFT); + else if ( lstrcmpi(_T("HORIZONTAL_ALIGN_CENTER"), tval) == 0 ) + tmp->setHAlign(HORIZONTAL_ALIGN_CENTER); + else if ( lstrcmpi(_T("CENTER"), tval) == 0 ) + tmp->setHAlign(HORIZONTAL_ALIGN_CENTER); + else if ( lstrcmpi(_T("HORIZONTAL_ALIGN_RIGHT"), tval) == 0 ) + tmp->setHAlign(HORIZONTAL_ALIGN_RIGHT); + else if ( lstrcmpi(_T("RIGHT"), tval) == 0 ) + tmp->setHAlign(HORIZONTAL_ALIGN_RIGHT); + } +} + + +static Handle Get_FieldState_vAlign(Local property, const AccessorInfo &info) +{ + HandleScope scope; + + Local self = info.Holder(); + Local wrap = Local::Cast(self->GetInternalField(0)); + if (wrap.IsEmpty()) + return scope.Close( Undefined() ); + + FieldState *tmp = (FieldState *) wrap->Value(); + if (tmp == NULL) + return scope.Close( Undefined() ); + + switch(tmp->getVAlign()) + { + case VERTICAL_ALIGN_TOP: return scope.Close( String::New((const V8_TCHAR *) _T("TOP")) ); + case VERTICAL_ALIGN_CENTER: return scope.Close( String::New((const V8_TCHAR *) _T("CENTER")) ); + case VERTICAL_ALIGN_BOTTOM: return scope.Close( String::New((const V8_TCHAR *) _T("BOTTOM")) ); + } + return scope.Close( Undefined() ); +} + +static void Set_FieldState_vAlign(Local property, Local value, const AccessorInfo& info) +{ + HandleScope scope; + + Local self = info.Holder(); + Local wrap = Local::Cast(self->GetInternalField(0)); + if (wrap.IsEmpty()) + return; + + FieldState *tmp = (FieldState *) wrap->Value(); + if (tmp == NULL) + return; + + if (!value.IsEmpty() && value->IsString()) + { + String::Utf8Value utf8_value(value); + Utf8ToTchar tval(*utf8_value); + if ( lstrcmpi(_T("VERTICAL_ALIGN_TOP"), tval) == 0 ) + tmp->setVAlign(VERTICAL_ALIGN_TOP); + else if ( lstrcmpi(_T("TOP"), tval) == 0 ) + tmp->setVAlign(VERTICAL_ALIGN_TOP); + else if ( lstrcmpi(_T("VERTICAL_ALIGN_CENTER"), tval) == 0 ) + tmp->setVAlign(VERTICAL_ALIGN_CENTER); + else if ( lstrcmpi(_T("CENTER"), tval) == 0 ) + tmp->setVAlign(VERTICAL_ALIGN_CENTER); + else if ( lstrcmpi(_T("VERTICAL_ALIGN_BOTTOM"), tval) == 0 ) + tmp->setVAlign(VERTICAL_ALIGN_BOTTOM); + else if ( lstrcmpi(_T("BOTTOM"), tval) == 0 ) + tmp->setVAlign(VERTICAL_ALIGN_BOTTOM); + } +} + + static Handle Get_FieldState_borders(Local property, const AccessorInfo &info) { HandleScope scope; @@ -423,5 +533,7 @@ void AddFieldStateAcessors(Handle &templ) templ->SetAccessor(String::New("visible"), Get_FieldState_visible, Set_FieldState_visible); templ->SetAccessor(String::New("enabled"), Get_FieldState_enabled, NULL, Handle(), DEFAULT, ReadOnly); templ->SetAccessor(String::New("toolTip"), Get_FieldState_toolTip, Set_FieldState_toolTip); + templ->SetAccessor(String::New("hAlign"), Get_FieldState_hAlign, Set_FieldState_hAlign); + templ->SetAccessor(String::New("vAlign"), Get_FieldState_vAlign, Set_FieldState_vAlign); templ->SetAccessor(String::New("borders"), Get_FieldState_borders, Set_FieldState_borders); } -- cgit v1.2.3