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/Docs/skins_changelog.txt | 4 + Plugins/skins/MirandaSkinnedDialog.cpp | 10 +- Plugins/skins/MirandaSkinnedDialog.h | 4 +- Plugins/skins/SkinLib/BorderState_v8_wrapper.cpp | 8 +- Plugins/skins/SkinLib/DialogState_v8_wrapper.cpp | 4 +- Plugins/skins/SkinLib/FieldState.cpp | 22 +++- Plugins/skins/SkinLib/FieldState.h | 21 +++- Plugins/skins/SkinLib/FieldState.rec | 3 +- Plugins/skins/SkinLib/FieldState_v8_wrapper.cpp | 128 +++++++++++++++++++-- Plugins/skins/SkinLib/FontState_v8_wrapper.cpp | 4 +- Plugins/skins/SkinLib/SkinOption_v8_wrapper.cpp | 10 +- Plugins/skins/SkinLib/TextFieldState.cpp | 12 +- Plugins/skins/SkinLib/TextFieldState.h | 4 - .../skins/SkinLib/TextFieldState_v8_wrapper.cpp | 50 -------- Plugins/skins/SkinLib/V8Templates.cpp | 15 ++- Plugins/skins/SkinLib/V8Wrappers.cpp | 15 +-- Plugins/skins/m_skins.h | 7 +- Plugins/skins/m_skins_cpp.h | 3 +- Plugins/skins/options.cpp | 2 +- Plugins/skins/skins.cpp | 19 +-- Plugins/skins/skins.vcproj | 6 +- 21 files changed, 229 insertions(+), 122 deletions(-) (limited to 'Plugins') diff --git a/Plugins/skins/Docs/skins_changelog.txt b/Plugins/skins/Docs/skins_changelog.txt index 14e9344..e982db6 100644 --- a/Plugins/skins/Docs/skins_changelog.txt +++ b/Plugins/skins/Docs/skins_changelog.txt @@ -2,5 +2,9 @@ Skins Changelog: +. 0.0.0.2 + * Fix for float numbers + + Added valign (not used yet) + . 0.0.0.1 + Initial version \ No newline at end of file diff --git a/Plugins/skins/MirandaSkinnedDialog.cpp b/Plugins/skins/MirandaSkinnedDialog.cpp index ebc224c..26c3cb5 100644 --- a/Plugins/skins/MirandaSkinnedDialog.cpp +++ b/Plugins/skins/MirandaSkinnedDialog.cpp @@ -4,8 +4,9 @@ #define SETTING_NAME_SIZE 256 -MirandaSkinnedDialog::MirandaSkinnedDialog(const char *name, const char *aModule) - : SkinnedDialog(name), module(aModule), skinChangedCallback(NULL), skinChangedCallbackParam(NULL) +MirandaSkinnedDialog::MirandaSkinnedDialog(const char *name, const char *aDescription, const char *aModule) + : SkinnedDialog(name), description(aDescription), module(aModule), + skinChangedCallback(NULL), skinChangedCallbackParam(NULL) { getSettting("Skin", _T(DEFAULT_SKIN_NAME), skinName); } @@ -14,6 +15,11 @@ MirandaSkinnedDialog::~MirandaSkinnedDialog() { } +const char * MirandaSkinnedDialog::getDescription() const +{ + return description.c_str(); +} + const char * MirandaSkinnedDialog::getModule() const { return module.c_str(); diff --git a/Plugins/skins/MirandaSkinnedDialog.h b/Plugins/skins/MirandaSkinnedDialog.h index 4615126..3cb65b3 100644 --- a/Plugins/skins/MirandaSkinnedDialog.h +++ b/Plugins/skins/MirandaSkinnedDialog.h @@ -12,9 +12,10 @@ typedef void (*MirandaSkinnedCallback)(void *param, const MirandaSkinnedDialog * class MirandaSkinnedDialog : public SkinnedDialog { public: - MirandaSkinnedDialog(const char *name, const char *module); + MirandaSkinnedDialog(const char *name, const char *description, const char *module); virtual ~MirandaSkinnedDialog(); + virtual const char * getDescription() const; virtual const char * getModule() const; virtual const TCHAR * getSkinName() const; @@ -30,6 +31,7 @@ protected: virtual int compile(); private: + std::string description; std::string module; std::tstring skinName; MirandaSkinnedCallback skinChangedCallback; diff --git a/Plugins/skins/SkinLib/BorderState_v8_wrapper.cpp b/Plugins/skins/SkinLib/BorderState_v8_wrapper.cpp index 732ca29..71cc057 100644 --- a/Plugins/skins/SkinLib/BorderState_v8_wrapper.cpp +++ b/Plugins/skins/SkinLib/BorderState_v8_wrapper.cpp @@ -42,7 +42,7 @@ static void Set_BorderState_left(Local property, Local value, con if (tmp == NULL) return; - if (!value.IsEmpty() && value->IsInt32()) + if (!value.IsEmpty() && value->IsNumber()) tmp->setLeft(value->Int32Value()); } @@ -76,7 +76,7 @@ static void Set_BorderState_right(Local property, Local value, co if (tmp == NULL) return; - if (!value.IsEmpty() && value->IsInt32()) + if (!value.IsEmpty() && value->IsNumber()) tmp->setRight(value->Int32Value()); } @@ -110,7 +110,7 @@ static void Set_BorderState_top(Local property, Local value, cons if (tmp == NULL) return; - if (!value.IsEmpty() && value->IsInt32()) + if (!value.IsEmpty() && value->IsNumber()) tmp->setTop(value->Int32Value()); } @@ -144,7 +144,7 @@ static void Set_BorderState_bottom(Local property, Local value, c if (tmp == NULL) return; - if (!value.IsEmpty() && value->IsInt32()) + if (!value.IsEmpty() && value->IsNumber()) tmp->setBottom(value->Int32Value()); } diff --git a/Plugins/skins/SkinLib/DialogState_v8_wrapper.cpp b/Plugins/skins/SkinLib/DialogState_v8_wrapper.cpp index 4ab4951..5739414 100644 --- a/Plugins/skins/SkinLib/DialogState_v8_wrapper.cpp +++ b/Plugins/skins/SkinLib/DialogState_v8_wrapper.cpp @@ -42,7 +42,7 @@ static void Set_DialogState_width(Local property, Local value, co if (tmp == NULL) return; - if (!value.IsEmpty() && value->IsInt32()) + if (!value.IsEmpty() && value->IsNumber()) tmp->setWidth(value->Int32Value()); } @@ -76,7 +76,7 @@ static void Set_DialogState_height(Local property, Local value, c if (tmp == NULL) return; - if (!value.IsEmpty() && value->IsInt32()) + if (!value.IsEmpty() && value->IsNumber()) tmp->setHeight(value->Int32Value()); } diff --git a/Plugins/skins/SkinLib/FieldState.cpp b/Plugins/skins/SkinLib/FieldState.cpp index 5a8b493..1d112cc 100644 --- a/Plugins/skins/SkinLib/FieldState.cpp +++ b/Plugins/skins/SkinLib/FieldState.cpp @@ -15,7 +15,7 @@ FieldState::FieldState(DialogState *aDialog, Field *aField) : field(aField), dialog(aDialog), size(-1, -1), pos(0, 0), usingX(0), usingY(0), visible(aField->isEnabled()), borders(0,0,0,0), - tooltipSet(false) + tooltipSet(false), halign(HORIZONTAL_ALIGN_LEFT), valign(VERTICAL_ALIGN_TOP) { } @@ -251,6 +251,26 @@ RECT FieldState::getRect() const return ret; } +HORIZONTAL_ALIGN FieldState::getHAlign() const +{ + return halign; +} + +void FieldState::setHAlign(HORIZONTAL_ALIGN halign) +{ + this->halign = halign; +} + +VERTICAL_ALIGN FieldState::getVAlign() const +{ + return valign; +} + +void FieldState::setVAlign(VERTICAL_ALIGN valign) +{ + this->valign = valign; +} + RECT FieldState::getInsideRect() const { RECT ret = {0}; diff --git a/Plugins/skins/SkinLib/FieldState.h b/Plugins/skins/SkinLib/FieldState.h index 201e12c..98c1f86 100644 --- a/Plugins/skins/SkinLib/FieldState.h +++ b/Plugins/skins/SkinLib/FieldState.h @@ -8,9 +8,16 @@ class DialogState; enum HORIZONTAL_ALIGN { - LEFT = 1, - CENTER, - RIGHT + HORIZONTAL_ALIGN_LEFT = 1, + HORIZONTAL_ALIGN_CENTER, + HORIZONTAL_ALIGN_RIGHT +}; + +enum VERTICAL_ALIGN +{ + VERTICAL_ALIGN_TOP = 1, + VERTICAL_ALIGN_CENTER, + VERTICAL_ALIGN_BOTTOM }; @@ -61,6 +68,12 @@ public: virtual BorderState * getBorders(); virtual const BorderState * getBorders() const; + virtual HORIZONTAL_ALIGN getHAlign() const; + virtual void setHAlign(HORIZONTAL_ALIGN halign); + + virtual VERTICAL_ALIGN getVAlign() const; + virtual void setVAlign(VERTICAL_ALIGN valign); + virtual bool isEmpty() const = 0; // Results @@ -82,6 +95,8 @@ protected: BorderState borders; bool tooltipSet; std::tstring tooltip; + HORIZONTAL_ALIGN halign; + VERTICAL_ALIGN valign; int getHorizontalBorders() const; int getVerticalBorders() const; diff --git a/Plugins/skins/SkinLib/FieldState.rec b/Plugins/skins/SkinLib/FieldState.rec index a8bf2a9..7b9ffd8 100644 --- a/Plugins/skins/SkinLib/FieldState.rec +++ b/Plugins/skins/SkinLib/FieldState.rec @@ -24,6 +24,8 @@ struct FieldState Boolean visible; const Boolean enabled; Char toolTip[128]; + Int32 hAlign | HORIZONTAL_ALIGN_LEFT "LEFT" | HORIZONTAL_ALIGN_CENTER "CENTER" | HORIZONTAL_ALIGN_RIGHT "RIGHT"; + Int32 vAlign | VERTICAL_ALIGN_TOP "TOP" | VERTICAL_ALIGN_CENTER "CENTER" | VERTICAL_ALIGN_BOTTOM "BOTTOM"; BorderState borders [setter: if (!value.IsEmpty() && value->IsInt32())\n\ttmp->getBorders()->setAll(value->Int32Value()); ]; }; @@ -56,7 +58,6 @@ struct ImageFieldState : FieldState struct TextFieldState : FieldState { Char text[1024]; - Int32 hAlign | LEFT | CENTER | RIGHT; FontState font; }; 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); } diff --git a/Plugins/skins/SkinLib/FontState_v8_wrapper.cpp b/Plugins/skins/SkinLib/FontState_v8_wrapper.cpp index 4a81dd0..5226736 100644 --- a/Plugins/skins/SkinLib/FontState_v8_wrapper.cpp +++ b/Plugins/skins/SkinLib/FontState_v8_wrapper.cpp @@ -80,7 +80,7 @@ static void Set_FontState_size(Local property, Local value, const if (tmp == NULL) return; - if (!value.IsEmpty() && value->IsInt32()) + if (!value.IsEmpty() && value->IsNumber()) tmp->setSize(value->Int32Value()); } @@ -250,7 +250,7 @@ static void Set_FontState_color(Local property, Local value, cons if (tmp == NULL) return; - if (!value.IsEmpty() && value->IsInt32()) + if (!value.IsEmpty() && value->IsNumber()) tmp->setColor(value->Int32Value()); } diff --git a/Plugins/skins/SkinLib/SkinOption_v8_wrapper.cpp b/Plugins/skins/SkinLib/SkinOption_v8_wrapper.cpp index 944bb6e..11a401a 100644 --- a/Plugins/skins/SkinLib/SkinOption_v8_wrapper.cpp +++ b/Plugins/skins/SkinLib/SkinOption_v8_wrapper.cpp @@ -80,7 +80,7 @@ static void Set_SkinOption_min(Local property, Local value, const if (tmp == NULL) return; - if (!value.IsEmpty() && value->IsInt32()) + if (!value.IsEmpty() && value->IsNumber()) tmp->setMin(value->Int32Value()); } @@ -114,7 +114,7 @@ static void Set_SkinOption_max(Local property, Local value, const if (tmp == NULL) return; - if (!value.IsEmpty() && value->IsInt32()) + if (!value.IsEmpty() && value->IsNumber()) tmp->setMax(value->Int32Value()); } @@ -158,11 +158,11 @@ static void Set_SkinOption_type(Local property, Local value, cons { String::Utf8Value utf8_value(value); Utf8ToTchar tval(*utf8_value); - if ( lstrcmpi(_T("CHECKBOX"), tval) == 0) + if ( lstrcmpi(_T("CHECKBOX"), tval) == 0 ) tmp->setType(CHECKBOX); - else if ( lstrcmpi(_T("NUMBER"), tval) == 0) + else if ( lstrcmpi(_T("NUMBER"), tval) == 0 ) tmp->setType(NUMBER); - else if ( lstrcmpi(_T("TEXT"), tval) == 0) + else if ( lstrcmpi(_T("TEXT"), tval) == 0 ) tmp->setType(TEXT); } } diff --git a/Plugins/skins/SkinLib/TextFieldState.cpp b/Plugins/skins/SkinLib/TextFieldState.cpp index 56e2723..8e295d0 100644 --- a/Plugins/skins/SkinLib/TextFieldState.cpp +++ b/Plugins/skins/SkinLib/TextFieldState.cpp @@ -3,7 +3,7 @@ TextFieldState::TextFieldState(DialogState *dialog, TextField *field) - : FieldState(dialog, field), font(field->getFont(), field->getFontColor()), textSet(false), halign(LEFT) + : FieldState(dialog, field), font(field->getFont(), field->getFontColor()), textSet(false) { } @@ -59,16 +59,6 @@ const FontState * TextFieldState::getFont() const return &font; } -HORIZONTAL_ALIGN TextFieldState::getHAlign() const -{ - return halign; -} - -void TextFieldState::setHAlign(HORIZONTAL_ALIGN halign) -{ - this->halign = halign; -} - bool TextFieldState::isEmpty() const { return lstrlen(getText()) <= 0; diff --git a/Plugins/skins/SkinLib/TextFieldState.h b/Plugins/skins/SkinLib/TextFieldState.h index c15284b..9779cfa 100644 --- a/Plugins/skins/SkinLib/TextFieldState.h +++ b/Plugins/skins/SkinLib/TextFieldState.h @@ -21,9 +21,6 @@ public: virtual FontState * getFont(); virtual const FontState * getFont() const; - virtual HORIZONTAL_ALIGN getHAlign() const; - virtual void setHAlign(HORIZONTAL_ALIGN halign); - virtual bool isEmpty() const; private: @@ -32,7 +29,6 @@ private: FontState font; BOOL textSet; std::tstring text; - HORIZONTAL_ALIGN halign; friend class TextField; diff --git a/Plugins/skins/SkinLib/TextFieldState_v8_wrapper.cpp b/Plugins/skins/SkinLib/TextFieldState_v8_wrapper.cpp index 6eb4a39..cf11fdb 100644 --- a/Plugins/skins/SkinLib/TextFieldState_v8_wrapper.cpp +++ b/Plugins/skins/SkinLib/TextFieldState_v8_wrapper.cpp @@ -51,59 +51,9 @@ static void Set_TextFieldState_text(Local property, Local value, } -static Handle Get_TextFieldState_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() ); - - TextFieldState *tmp = (TextFieldState *) wrap->Value(); - if (tmp == NULL) - return scope.Close( Undefined() ); - - switch(tmp->getHAlign()) - { - case LEFT: return scope.Close( String::New((const V8_TCHAR *) _T("LEFT")) ); - case CENTER: return scope.Close( String::New((const V8_TCHAR *) _T("CENTER")) ); - case RIGHT: return scope.Close( String::New((const V8_TCHAR *) _T("RIGHT")) ); - } - return scope.Close( Undefined() ); -} - -static void Set_TextFieldState_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; - - TextFieldState *tmp = (TextFieldState *) wrap->Value(); - if (tmp == NULL) - return; - - if (!value.IsEmpty() && value->IsString()) - { - String::Utf8Value utf8_value(value); - Utf8ToTchar tval(*utf8_value); - if ( lstrcmpi(_T("LEFT"), tval) == 0) - tmp->setHAlign(LEFT); - else if ( lstrcmpi(_T("CENTER"), tval) == 0) - tmp->setHAlign(CENTER); - else if ( lstrcmpi(_T("RIGHT"), tval) == 0) - tmp->setHAlign(RIGHT); - } -} - - void AddTextFieldStateAcessors(Handle &templ) { HandleScope scope; templ->SetAccessor(String::New("text"), Get_TextFieldState_text, Set_TextFieldState_text); - templ->SetAccessor(String::New("hAlign"), Get_TextFieldState_hAlign, Set_TextFieldState_hAlign); } diff --git a/Plugins/skins/SkinLib/V8Templates.cpp b/Plugins/skins/SkinLib/V8Templates.cpp index dba4a14..4900e13 100644 --- a/Plugins/skins/SkinLib/V8Templates.cpp +++ b/Plugins/skins/SkinLib/V8Templates.cpp @@ -36,9 +36,18 @@ Handle V8Templates::getGlobalTemplate() return globalTemplate; Handle templ = ObjectTemplate::New(); - templ->Set(String::New("LEFT"), String::New("LEFT")); - templ->Set(String::New("CENTER"), String::New("CENTER")); - templ->Set(String::New("RIGHT"), String::New("RIGHT")); + templ->Set(String::New("HORIZONTAL_ALIGN_LEFT"), String::New("HORIZONTAL_ALIGN_LEFT")); + templ->Set(String::New("LEFT"), String::New("HORIZONTAL_ALIGN_LEFT")); + templ->Set(String::New("HORIZONTAL_ALIGN_CENTER"), String::New("HORIZONTAL_ALIGN_CENTER")); + templ->Set(String::New("CENTER"), String::New("HORIZONTAL_ALIGN_CENTER")); + templ->Set(String::New("HORIZONTAL_ALIGN_RIGHT"), String::New("HORIZONTAL_ALIGN_RIGHT")); + templ->Set(String::New("RIGHT"), String::New("HORIZONTAL_ALIGN_RIGHT")); + templ->Set(String::New("VERTICAL_ALIGN_TOP"), String::New("VERTICAL_ALIGN_TOP")); + templ->Set(String::New("TOP"), String::New("VERTICAL_ALIGN_TOP")); + templ->Set(String::New("VERTICAL_ALIGN_CENTER"), String::New("VERTICAL_ALIGN_CENTER")); + templ->Set(String::New("CENTER"), String::New("VERTICAL_ALIGN_CENTER")); + templ->Set(String::New("VERTICAL_ALIGN_BOTTOM"), String::New("VERTICAL_ALIGN_BOTTOM")); + templ->Set(String::New("BOTTOM"), String::New("VERTICAL_ALIGN_BOTTOM")); templ->Set(String::New("CHECKBOX"), String::New("CHECKBOX")); templ->Set(String::New("NUMBER"), String::New("NUMBER")); templ->Set(String::New("TEXT"), String::New("TEXT")); diff --git a/Plugins/skins/SkinLib/V8Wrappers.cpp b/Plugins/skins/SkinLib/V8Wrappers.cpp index f782d7c..1a9e0b6 100644 --- a/Plugins/skins/SkinLib/V8Wrappers.cpp +++ b/Plugins/skins/SkinLib/V8Wrappers.cpp @@ -70,21 +70,14 @@ static Handle AlertCallback(const Arguments& args) { HandleScope scope; - Local wrap = Local::Cast(args.Data()); - if (wrap.IsEmpty()) - return scope.Close( Boolean::New(false) ); - if (args.Length() < 1) return scope.Close( Boolean::New(false) ); Local arg = args[0]; - if (!arg->IsString()) - return scope.Close( Boolean::New(false) ); - - Local str = Local::Cast(arg); - String::Utf8Value utf8_value(str); + String::Utf8Value utf8_value(arg->ToDetailString()); - MessageBox(NULL, Utf8ToTchar(*utf8_value), _T("Skin alert"), MB_OK); + char *tmp = *utf8_value; +// TODO MessageBox(NULL, Utf8ToTchar(*utf8_value), _T("Skin alert"), MB_OK); return scope.Close( Boolean::New(true) ); } @@ -277,7 +270,7 @@ static void Set_SkinOption_value(Local property, Local value, con opt->setValueCheckbox(value->BooleanValue()); break; case NUMBER: - if (!value.IsEmpty() && value->IsInt32()) + if (!value.IsEmpty() && value->IsNumber()) opt->setValueNumber(value->Int32Value()); break; case TEXT: diff --git a/Plugins/skins/m_skins.h b/Plugins/skins/m_skins.h index 31bdd6c..081f834 100644 --- a/Plugins/skins/m_skins.h +++ b/Plugins/skins/m_skins.h @@ -38,6 +38,10 @@ typedef void (*SkinOptionsChangedCallback)(void *param, SKINNED_DIALOG dlg); #define SKN_HALIGN_CENTER 2 #define SKN_HALIGN_RIGHT 3 +#define SKN_VALIGN_TOP 1 +#define SKN_VALIGN_CENTER 2 +#define SKN_VALIGN_BOTTOM 3 + /// Some common parameters: /// - name : internal name and name used inside skin file @@ -90,13 +94,14 @@ struct SKIN_INTERFACE BOOL (*IsVisible)(SKINNED_FIELD_STATE field); char * (*GetToolTipA)(SKINNED_FIELD field); // You have to free the result WCHAR * (*GetToolTipW)(SKINNED_FIELD field); // You have to free the result + int (*GetHorizontalAlign)(SKINNED_FIELD_STATE field); // one of SKN_HALIGN_* + int (*GetVerticalAlign)(SKINNED_FIELD_STATE field); // one of SKN_VALIGN_* // TextField State methods char * (*GetTextA)(SKINNED_FIELD_STATE field); // You have to free the result WCHAR * (*GetTextW)(SKINNED_FIELD_STATE field); // You have to free the result HFONT (*GetFont)(SKINNED_FIELD_STATE field); COLORREF (*GetFontColor)(SKINNED_FIELD_STATE field); - int (*GetHorizontalAlign)(SKINNED_FIELD_STATE field); // one of SKN_HALIGN_* // IconField State methods HICON (*GetIcon)(SKINNED_FIELD_STATE field); diff --git a/Plugins/skins/m_skins_cpp.h b/Plugins/skins/m_skins_cpp.h index 1434dc1..4f3be3b 100644 --- a/Plugins/skins/m_skins_cpp.h +++ b/Plugins/skins/m_skins_cpp.h @@ -38,6 +38,8 @@ public: RECT getInsideRect() { return mski.GetInsideRect(field); } RECT getBorders() { return mski.GetBorders(field); } BOOL isVisible() { return mski.IsVisible(field); } + int getHorizontalAlign() { return mski.GetHorizontalAlign(field); } // one of SKN_HALIGN_* + int getVerticalAlign() { return mski.GetVerticalAlign(field); } // one of SKN_VALIGN_* const TCHAR * getToolTip() { if (tooltip != NULL) @@ -76,7 +78,6 @@ public: HFONT getFont() { return mski.GetFont(field); } COLORREF getFontColor() { return mski.GetFontColor(field); } - int getHorizontalAlign() { return mski.GetHorizontalAlign(field); } // one of SKN_HALIGN_* private: TCHAR *text; diff --git a/Plugins/skins/options.cpp b/Plugins/skins/options.cpp index 730df6d..15c8631 100644 --- a/Plugins/skins/options.cpp +++ b/Plugins/skins/options.cpp @@ -53,7 +53,7 @@ int InitOptionsCallback(WPARAM wParam,LPARAM lParam) for(unsigned int i = 0; i < dlgs.size(); i++) { MirandaSkinnedDialog * dlg = dlgs[i]; - odp.pszTitle = (char *) dlg->getName(); // Yeah, yeah, I know... + odp.pszTitle = (char *) dlg->getDescription(); // Yeah, yeah, I know... odp.dwInitParam = (LPARAM) dlg; CallService(MS_OPT_ADDPAGE, wParam, (LPARAM)&odp); } diff --git a/Plugins/skins/skins.cpp b/Plugins/skins/skins.cpp index da45f6d..46ef919 100644 --- a/Plugins/skins/skins.cpp +++ b/Plugins/skins/skins.cpp @@ -383,7 +383,7 @@ SKINNED_DIALOG Interface_RegisterDialog(const char *name, const char *descriptio if (!FileExists(filename.c_str())) return NULL; - MirandaSkinnedDialog *dlg = new MirandaSkinnedDialog(name, module); + MirandaSkinnedDialog *dlg = new MirandaSkinnedDialog(name, description, module); dlg->setErrorCallback(OnError, dlg); dlgs.push_back(dlg); return (SKINNED_DIALOG) dlg; @@ -795,14 +795,16 @@ int Interface_GetHorizontalAlign(SKINNED_FIELD_STATE field) return SKN_HALIGN_LEFT; FieldState *fieldState = (FieldState *) field; + return fieldState->getHAlign(); +} - switch(fieldState->getField()->getType()) - { - case SIMPLE_TEXT: - return ((TextFieldState *) fieldState)->getHAlign(); - } +int Interface_GetVerticalAlign(SKINNED_FIELD_STATE field) +{ + if (field == NULL) + return SKN_VALIGN_TOP; - return SKN_HALIGN_LEFT; + FieldState *fieldState = (FieldState *) field; + return fieldState->getVAlign(); } HICON Interface_GetIcon(SKINNED_FIELD_STATE field) @@ -878,12 +880,13 @@ static int Service_GetInterface(WPARAM wParam, LPARAM lParam) mski->IsVisible = &Interface_IsVisible; mski->GetToolTipA = &Interface_GetToolTipA; mski->GetToolTipW = &Interface_GetToolTipW; + mski->GetHorizontalAlign = &Interface_GetHorizontalAlign; + mski->GetVerticalAlign = &Interface_GetVerticalAlign; mski->GetTextA = &Interface_GetTextA; mski->GetTextW = &Interface_GetTextW; mski->GetFont = &Interface_GetFont; mski->GetFontColor = &Interface_GetFontColor; - mski->GetHorizontalAlign = &Interface_GetHorizontalAlign; mski->GetIcon = &Interface_GetIcon; diff --git a/Plugins/skins/skins.vcproj b/Plugins/skins/skins.vcproj index 50a7001..23afa14 100644 --- a/Plugins/skins/skins.vcproj +++ b/Plugins/skins/skins.vcproj @@ -75,7 +75,7 @@