summaryrefslogtreecommitdiff
path: root/Plugins/skins/SkinLib
diff options
context:
space:
mode:
authorpescuma <pescuma@c086bb3d-8645-0410-b8da-73a8550f86e7>2009-01-20 02:18:30 +0000
committerpescuma <pescuma@c086bb3d-8645-0410-b8da-73a8550f86e7>2009-01-20 02:18:30 +0000
commitff634d35c1fbd2831be6c1206bb9298cd5a14eda (patch)
tree4442b38df9af9721e73300e9235f868d4adf4261 /Plugins/skins/SkinLib
parent283ebdc88fe0867c50f56306bf53dcdeec0da013 (diff)
skins:
* Updated v8 + Added tooltips git-svn-id: http://pescuma.googlecode.com/svn/trunk/Miranda@127 c086bb3d-8645-0410-b8da-73a8550f86e7
Diffstat (limited to 'Plugins/skins/SkinLib')
-rw-r--r--Plugins/skins/SkinLib/Field.cpp10
-rw-r--r--Plugins/skins/SkinLib/Field.h4
-rw-r--r--Plugins/skins/SkinLib/FieldState.cpp17
-rw-r--r--Plugins/skins/SkinLib/FieldState.h5
-rw-r--r--Plugins/skins/SkinLib/FieldState.rec1
-rw-r--r--Plugins/skins/SkinLib/FieldState_v8_wrapper.cpp35
6 files changed, 71 insertions, 1 deletions
diff --git a/Plugins/skins/SkinLib/Field.cpp b/Plugins/skins/SkinLib/Field.cpp
index 6e36241..24b823b 100644
--- a/Plugins/skins/SkinLib/Field.cpp
+++ b/Plugins/skins/SkinLib/Field.cpp
@@ -33,6 +33,16 @@ void Field::setEnabled(bool enabled)
fireOnChange();
}
+const TCHAR * Field::getToolTip() const
+{
+ return tooltip.c_str();
+}
+
+void Field::setToolTip(const TCHAR *tooltip)
+{
+ this->tooltip = tooltip;
+}
+
void Field::setOnChangeCallback(FieldCallback cb, void *param /*= NULL*/)
{
onChangeCallback = cb;
diff --git a/Plugins/skins/SkinLib/Field.h b/Plugins/skins/SkinLib/Field.h
index e3bd499..4cf7faa 100644
--- a/Plugins/skins/SkinLib/Field.h
+++ b/Plugins/skins/SkinLib/Field.h
@@ -40,6 +40,9 @@ public:
virtual bool isEnabled() const;
virtual void setEnabled(bool enabled);
+ virtual const TCHAR * getToolTip() const;
+ virtual void setToolTip(const TCHAR *tooltip);
+
virtual FieldState * createState(DialogState *dialogState) = 0;
virtual void setOnChangeCallback(FieldCallback cb, void *param = NULL);
@@ -51,6 +54,7 @@ private:
Dialog *dlg;
const std::string name;
bool enabled;
+ std::tstring tooltip;
FieldCallback onChangeCallback;
void *onChangeCallbackParam;
diff --git a/Plugins/skins/SkinLib/FieldState.cpp b/Plugins/skins/SkinLib/FieldState.cpp
index 8af110c..5a8b493 100644
--- a/Plugins/skins/SkinLib/FieldState.cpp
+++ b/Plugins/skins/SkinLib/FieldState.cpp
@@ -14,7 +14,8 @@
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)
+ usingX(0), usingY(0), visible(aField->isEnabled()), borders(0,0,0,0),
+ tooltipSet(false)
{
}
@@ -194,6 +195,20 @@ void FieldState::setBottom(int botom)
SET(usingY, END);
}
+const TCHAR * FieldState::getToolTip() const
+{
+ if (tooltipSet)
+ return tooltip.c_str();
+ else
+ return field->getToolTip();
+}
+
+void FieldState::setToolTip(const TCHAR *tooltip)
+{
+ this->tooltip = tooltip;
+ tooltipSet = true;
+}
+
BorderState * FieldState::getBorders()
{
return &borders;
diff --git a/Plugins/skins/SkinLib/FieldState.h b/Plugins/skins/SkinLib/FieldState.h
index 4bbe3b4..ff54e54 100644
--- a/Plugins/skins/SkinLib/FieldState.h
+++ b/Plugins/skins/SkinLib/FieldState.h
@@ -55,6 +55,9 @@ public:
virtual bool isEnabled() const;
+ virtual const TCHAR * getToolTip() const;
+ virtual void setToolTip(const TCHAR *tooltip);
+
virtual BorderState * getBorders();
virtual const BorderState * getBorders() const;
@@ -77,6 +80,8 @@ protected:
int usingY;
bool visible;
BorderState borders;
+ bool tooltipSet;
+ std::tstring tooltip;
int getHorizontalBorders() const;
int getVerticalBorders() const;
diff --git a/Plugins/skins/SkinLib/FieldState.rec b/Plugins/skins/SkinLib/FieldState.rec
index ca1998d..992c4d6 100644
--- a/Plugins/skins/SkinLib/FieldState.rec
+++ b/Plugins/skins/SkinLib/FieldState.rec
@@ -22,6 +22,7 @@ struct FieldState
Int32 bottom;
Boolean visible;
const Boolean enabled;
+ Char toolTip[128];
};
struct ControlFieldState
diff --git a/Plugins/skins/SkinLib/FieldState_v8_wrapper.cpp b/Plugins/skins/SkinLib/FieldState_v8_wrapper.cpp
index 7217a2e..a4213b1 100644
--- a/Plugins/skins/SkinLib/FieldState_v8_wrapper.cpp
+++ b/Plugins/skins/SkinLib/FieldState_v8_wrapper.cpp
@@ -2,6 +2,7 @@
#include "FieldState_v8_wrapper.h"
#include <v8.h>
#include "FieldState.h"
+#include <utf8_helpers.h>
using namespace v8;
@@ -298,6 +299,39 @@ static Handle<Value> Get_FieldState_enabled(Local<String> property, const Access
}
+static Handle<Value> Get_FieldState_toolTip(Local<String> property, const AccessorInfo &info)
+{
+ Local<Object> self = info.Holder();
+ Local<External> wrap = Local<External>::Cast(self->GetInternalField(0));
+ if (wrap.IsEmpty())
+ return Undefined();
+
+ FieldState *tmp = (FieldState *) wrap->Value();
+ if (tmp == NULL)
+ return Undefined();
+
+ return String::New((const V8_TCHAR *) tmp->getToolTip());
+}
+
+static void Set_FieldState_toolTip(Local<String> property, Local<Value> value, const AccessorInfo& info)
+{
+ Local<Object> self = info.Holder();
+ Local<External> wrap = Local<External>::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);
+ tmp->setToolTip(Utf8ToTchar(*utf8_value));
+ }
+}
+
+
void AddFieldStateAcessors(Handle<ObjectTemplate> &templ)
{
templ->SetAccessor(String::New("x"), Get_FieldState_x, Set_FieldState_x);
@@ -310,4 +344,5 @@ void AddFieldStateAcessors(Handle<ObjectTemplate> &templ)
templ->SetAccessor(String::New("bottom"), Get_FieldState_bottom, Set_FieldState_bottom);
templ->SetAccessor(String::New("visible"), Get_FieldState_visible, Set_FieldState_visible);
templ->SetAccessor(String::New("enabled"), Get_FieldState_enabled, NULL, Handle<Value>(), DEFAULT, ReadOnly);
+ templ->SetAccessor(String::New("toolTip"), Get_FieldState_toolTip, Set_FieldState_toolTip);
}