diff options
Diffstat (limited to 'Plugins')
44 files changed, 201 insertions, 109 deletions
diff --git a/Plugins/skins/SkinLib/ButtonField.cpp b/Plugins/skins/SkinLib/ButtonField.cpp index c96c65f..e6c82ba 100644 --- a/Plugins/skins/SkinLib/ButtonField.cpp +++ b/Plugins/skins/SkinLib/ButtonField.cpp @@ -16,7 +16,7 @@ FieldType ButtonField::getType() const return CONTROL_BUTTON;
}
-FieldState * ButtonField::createState()
+FieldState * ButtonField::createState(DialogState *dialogState)
{
- return new ButtonFieldState(this);
+ return new ButtonFieldState(dialogState, this);
}
\ No newline at end of file diff --git a/Plugins/skins/SkinLib/ButtonField.h b/Plugins/skins/SkinLib/ButtonField.h index 9ad0357..0d7a155 100644 --- a/Plugins/skins/SkinLib/ButtonField.h +++ b/Plugins/skins/SkinLib/ButtonField.h @@ -11,7 +11,7 @@ public: virtual FieldType getType() const;
- virtual FieldState * createState();
+ virtual FieldState * createState(DialogState *dialogState);
};
diff --git a/Plugins/skins/SkinLib/ButtonFieldState.cpp b/Plugins/skins/SkinLib/ButtonFieldState.cpp index da26650..986484b 100644 --- a/Plugins/skins/SkinLib/ButtonFieldState.cpp +++ b/Plugins/skins/SkinLib/ButtonFieldState.cpp @@ -1,7 +1,8 @@ #include "globals.h"
#include "ButtonFieldState.h"
-ButtonFieldState::ButtonFieldState(ControlField *field) : ControlFieldState(field)
+ButtonFieldState::ButtonFieldState(DialogState *dialog, ControlField *field)
+ : ControlFieldState(dialog, field)
{
}
diff --git a/Plugins/skins/SkinLib/ButtonFieldState.h b/Plugins/skins/SkinLib/ButtonFieldState.h index eabab8a..12b7010 100644 --- a/Plugins/skins/SkinLib/ButtonFieldState.h +++ b/Plugins/skins/SkinLib/ButtonFieldState.h @@ -14,7 +14,7 @@ public: virtual bool isEmpty() const;
private:
- ButtonFieldState(ControlField *field);
+ ButtonFieldState(DialogState *dialog, ControlField *field);
friend class ButtonField;
};
diff --git a/Plugins/skins/SkinLib/ControlFieldState.cpp b/Plugins/skins/SkinLib/ControlFieldState.cpp index d3b45e3..37c4120 100644 --- a/Plugins/skins/SkinLib/ControlFieldState.cpp +++ b/Plugins/skins/SkinLib/ControlFieldState.cpp @@ -2,8 +2,8 @@ #include "ControlFieldState.h"
-ControlFieldState::ControlFieldState(ControlField *field) : FieldState(field), textSet(false),
- font(field->getFont(), field->getFontColor())
+ControlFieldState::ControlFieldState(DialogState *dialog, ControlField *field)
+ : FieldState(dialog, field), textSet(false), font(field->getFont(), field->getFontColor())
{
}
diff --git a/Plugins/skins/SkinLib/ControlFieldState.h b/Plugins/skins/SkinLib/ControlFieldState.h index f3981eb..85186c3 100644 --- a/Plugins/skins/SkinLib/ControlFieldState.h +++ b/Plugins/skins/SkinLib/ControlFieldState.h @@ -22,7 +22,7 @@ public: virtual const FontState * getFont() const;
protected:
- ControlFieldState(ControlField *field);
+ ControlFieldState(DialogState *dialog, ControlField *field);
virtual Size getTextPreferedSize(unsigned int format) const;
diff --git a/Plugins/skins/SkinLib/ControlFieldState_v8_wrapper.cpp b/Plugins/skins/SkinLib/ControlFieldState_v8_wrapper.cpp index 8a42cf5..a8eee02 100644 --- a/Plugins/skins/SkinLib/ControlFieldState_v8_wrapper.cpp +++ b/Plugins/skins/SkinLib/ControlFieldState_v8_wrapper.cpp @@ -2,7 +2,7 @@ #include "ControlFieldState_v8_wrapper.h"
#include <v8.h>
#include "ControlFieldState.h"
-#include "utf8_helpers.h"
+#include <utf8_helpers.h>
using namespace v8;
diff --git a/Plugins/skins/SkinLib/Dialog.cpp b/Plugins/skins/SkinLib/Dialog.cpp index d07119e..4f13392 100644 --- a/Plugins/skins/SkinLib/Dialog.cpp +++ b/Plugins/skins/SkinLib/Dialog.cpp @@ -89,7 +89,7 @@ DialogState * Dialog::createState() DialogState *ret = new DialogState(this);
for(unsigned int i = 0; i < fields.size(); i++)
- ret->fields.push_back(fields[i]->createState());
+ ret->fields.push_back(fields[i]->createState(ret));
return ret;
}
diff --git a/Plugins/skins/SkinLib/EditField.cpp b/Plugins/skins/SkinLib/EditField.cpp index 3324885..8eb0d50 100644 --- a/Plugins/skins/SkinLib/EditField.cpp +++ b/Plugins/skins/SkinLib/EditField.cpp @@ -17,7 +17,7 @@ FieldType EditField::getType() const return CONTROL_EDIT;
}
-FieldState * EditField::createState()
+FieldState * EditField::createState(DialogState *dialogState)
{
- return new EditFieldState(this);
+ return new EditFieldState(dialogState, this);
}
\ No newline at end of file diff --git a/Plugins/skins/SkinLib/EditField.h b/Plugins/skins/SkinLib/EditField.h index 66a2ba1..f69f235 100644 --- a/Plugins/skins/SkinLib/EditField.h +++ b/Plugins/skins/SkinLib/EditField.h @@ -12,7 +12,7 @@ public: virtual FieldType getType() const;
- virtual FieldState * createState();
+ virtual FieldState * createState(DialogState *dialogState);
};
diff --git a/Plugins/skins/SkinLib/EditFieldState.cpp b/Plugins/skins/SkinLib/EditFieldState.cpp index 5b7f1f8..e634be7 100644 --- a/Plugins/skins/SkinLib/EditFieldState.cpp +++ b/Plugins/skins/SkinLib/EditFieldState.cpp @@ -2,7 +2,8 @@ #include "EditFieldState.h"
-EditFieldState::EditFieldState(EditField *field) : ControlFieldState(field)
+EditFieldState::EditFieldState(DialogState *dialog, EditField *field)
+ : ControlFieldState(dialog, field)
{
}
diff --git a/Plugins/skins/SkinLib/EditFieldState.h b/Plugins/skins/SkinLib/EditFieldState.h index e4abcd5..c2372d5 100644 --- a/Plugins/skins/SkinLib/EditFieldState.h +++ b/Plugins/skins/SkinLib/EditFieldState.h @@ -15,7 +15,7 @@ public: virtual bool isEmpty() const;
private:
- EditFieldState(EditField *field);
+ EditFieldState(DialogState *dialog, EditField *field);
friend class EditField;
};
diff --git a/Plugins/skins/SkinLib/Field.h b/Plugins/skins/SkinLib/Field.h index fb244a4..47d17cb 100644 --- a/Plugins/skins/SkinLib/Field.h +++ b/Plugins/skins/SkinLib/Field.h @@ -20,6 +20,7 @@ enum FieldType };
class Dialog;
+class DialogState;
class Field;
class FieldState;
@@ -36,7 +37,7 @@ public: virtual const char * getName() const;
virtual FieldType getType() const = 0;
- virtual FieldState * createState() = 0;
+ virtual FieldState * createState(DialogState *dialogState) = 0;
virtual void setOnChangeCallback(FieldCallback cb, void *param = NULL);
diff --git a/Plugins/skins/SkinLib/FieldState.cpp b/Plugins/skins/SkinLib/FieldState.cpp index c92b057..2509a77 100644 --- a/Plugins/skins/SkinLib/FieldState.cpp +++ b/Plugins/skins/SkinLib/FieldState.cpp @@ -1,5 +1,7 @@ #include "globals.h"
#include "FieldState.h"
+#include "DialogState.h"
+#include "BorderState.h"
#define START 1<<0
#define LEN 1<<1
@@ -10,8 +12,9 @@ #define LAST_SET(_FIELD_) (_FIELD_ >> LAST_SHIFT)
-FieldState::FieldState(Field *aField) : field(aField), size(-1, -1), pos(0, 0),
- usingX(0), usingY(0), visible(true)
+FieldState::FieldState(DialogState *aDialog, Field *aField)
+ : field(aField), dialog(aDialog), size(-1, -1), pos(0, 0),
+ usingX(0), usingY(0), visible(true)
{
}
@@ -24,6 +27,11 @@ Field * FieldState::getField() const return field;
}
+DialogState * FieldState::getDialog() const
+{
+ return dialog;
+}
+
int FieldState::getX() const
{
return pos.x;
@@ -108,7 +116,14 @@ void FieldState::setHeight(int height) bool FieldState::isVisible() const
{
- return visible;
+ if (!visible)
+ return false;
+
+ RECT rc = getRect();
+ if (rc.right <= rc.left || rc.bottom <= rc.top)
+ return false;
+
+ return true;
}
void FieldState::setVisible(bool visible)
@@ -174,8 +189,28 @@ void FieldState::setBottom(int botom) SET(usingY, END);
}
-//bool FieldState::isEmpty() const
-//{
-// Size s = getPreferedSize();
-// return s.x <= 0 || s.y <= 0;
-//}
\ No newline at end of file +static inline int beetween(int val, int minVal, int maxVal)
+{
+ return max(minVal, min(maxVal, val));
+}
+
+RECT FieldState::getRect() const
+{
+ RECT ret = { 0, 0, 0, 0 };
+
+ if (!visible)
+ return ret;
+
+ BorderState *borders = dialog->getBorders();
+ int left = max(0, borders->getLeft());
+ int right = max(left, min(dialog->getWidth(), dialog->getWidth() - borders->getRight()));
+ int top = max(0, borders->getTop());
+ int bottom = max(top, min(dialog->getHeight(), dialog->getHeight() - borders->getBottom()));
+
+ ret.left = beetween(getLeft() + borders->getLeft(), left, right);
+ ret.right = beetween(getRight(), left, right);
+ ret.top = beetween(getTop() + borders->getTop(), top, bottom);
+ ret.bottom = beetween(getBottom(), top, bottom);
+
+ return ret;
+}
diff --git a/Plugins/skins/SkinLib/FieldState.h b/Plugins/skins/SkinLib/FieldState.h index 6d44ef6..a3c07b4 100644 --- a/Plugins/skins/SkinLib/FieldState.h +++ b/Plugins/skins/SkinLib/FieldState.h @@ -3,6 +3,15 @@ #include "Field.h"
+class DialogState;
+
+enum HORIZONTAL_ALIGN
+{
+ LEFT = 1,
+ RIGHT,
+ CENTER
+};
+
class FieldState
{
@@ -10,6 +19,7 @@ public: virtual ~FieldState();
virtual Field * getField() const;
+ virtual DialogState * getDialog() const;
virtual Size getPreferedSize() const = 0;
@@ -42,10 +52,13 @@ public: virtual bool isEmpty() const = 0;
+ virtual RECT getRect() const;
+
protected:
- FieldState(Field *field);
+ FieldState(DialogState *dialog, Field *field);
Field *field;
+ DialogState *dialog;
Size size;
Position pos;
diff --git a/Plugins/skins/SkinLib/FieldState.rec b/Plugins/skins/SkinLib/FieldState.rec index 69ab8c1..c1d2f44 100644 --- a/Plugins/skins/SkinLib/FieldState.rec +++ b/Plugins/skins/SkinLib/FieldState.rec @@ -25,6 +25,7 @@ struct ControlFieldState struct TextFieldState
{
Char text[1024];
+ Int32 hAlign | LEFT | CENTER | RIGHT;
};
struct FontState
diff --git a/Plugins/skins/SkinLib/FontState_v8_wrapper.cpp b/Plugins/skins/SkinLib/FontState_v8_wrapper.cpp index fd0cb5f..108222e 100644 --- a/Plugins/skins/SkinLib/FontState_v8_wrapper.cpp +++ b/Plugins/skins/SkinLib/FontState_v8_wrapper.cpp @@ -2,7 +2,7 @@ #include "FontState_v8_wrapper.h"
#include <v8.h>
#include "FontState.h"
-#include "utf8_helpers.h"
+#include <utf8_helpers.h>
using namespace v8;
diff --git a/Plugins/skins/SkinLib/IconField.cpp b/Plugins/skins/SkinLib/IconField.cpp index dcd1d2f..4cf1aaf 100644 --- a/Plugins/skins/SkinLib/IconField.cpp +++ b/Plugins/skins/SkinLib/IconField.cpp @@ -32,7 +32,7 @@ void IconField::setIcon(HICON hIcon) fireOnChange();
}
-FieldState * IconField::createState()
+FieldState * IconField::createState(DialogState *dialogState)
{
- return new IconFieldState(this);
+ return new IconFieldState(dialogState, this);
}
\ No newline at end of file diff --git a/Plugins/skins/SkinLib/IconField.h b/Plugins/skins/SkinLib/IconField.h index efbb128..984b36b 100644 --- a/Plugins/skins/SkinLib/IconField.h +++ b/Plugins/skins/SkinLib/IconField.h @@ -15,7 +15,7 @@ public: virtual HICON getIcon() const;
virtual void setIcon(HICON hIcon);
- virtual FieldState * createState();
+ virtual FieldState * createState(DialogState *dialogState);
private:
HICON hIcon;
diff --git a/Plugins/skins/SkinLib/IconFieldState.cpp b/Plugins/skins/SkinLib/IconFieldState.cpp index 9180f4d..ad41800 100644 --- a/Plugins/skins/SkinLib/IconFieldState.cpp +++ b/Plugins/skins/SkinLib/IconFieldState.cpp @@ -4,7 +4,8 @@ #define ICON_SIZE 16
-IconFieldState::IconFieldState(IconField *field) : FieldState(field)
+IconFieldState::IconFieldState(DialogState *dialog, IconField *field)
+ : FieldState(dialog, field)
{
}
diff --git a/Plugins/skins/SkinLib/IconFieldState.h b/Plugins/skins/SkinLib/IconFieldState.h index 3aeeffd..b69e3fe 100644 --- a/Plugins/skins/SkinLib/IconFieldState.h +++ b/Plugins/skins/SkinLib/IconFieldState.h @@ -19,7 +19,7 @@ public: virtual bool isEmpty() const;
private:
- IconFieldState(IconField *field);
+ IconFieldState(DialogState *dialog, IconField *field);
friend class IconField;
};
diff --git a/Plugins/skins/SkinLib/ImageField.cpp b/Plugins/skins/SkinLib/ImageField.cpp index 01f9d14..c65cf99 100644 --- a/Plugins/skins/SkinLib/ImageField.cpp +++ b/Plugins/skins/SkinLib/ImageField.cpp @@ -32,7 +32,7 @@ void ImageField::setImage(HBITMAP hBmp) fireOnChange();
}
-FieldState * ImageField::createState()
+FieldState * ImageField::createState(DialogState *dialogState)
{
- return new ImageFieldState(this);
+ return new ImageFieldState(dialogState, this);
}
\ No newline at end of file diff --git a/Plugins/skins/SkinLib/ImageField.h b/Plugins/skins/SkinLib/ImageField.h index ae00b5a..e2f0866 100644 --- a/Plugins/skins/SkinLib/ImageField.h +++ b/Plugins/skins/SkinLib/ImageField.h @@ -14,7 +14,7 @@ public: virtual HBITMAP getImage() const;
virtual void setImage(HBITMAP hBmp);
- virtual FieldState * createState();
+ virtual FieldState * createState(DialogState *dialogState);
private:
HBITMAP hBmp;
diff --git a/Plugins/skins/SkinLib/ImageFieldState.cpp b/Plugins/skins/SkinLib/ImageFieldState.cpp index 6f8556d..2c74b39 100644 --- a/Plugins/skins/SkinLib/ImageFieldState.cpp +++ b/Plugins/skins/SkinLib/ImageFieldState.cpp @@ -2,7 +2,8 @@ #include "ImageFieldState.h"
-ImageFieldState::ImageFieldState(ImageField *field) : FieldState(field)
+ImageFieldState::ImageFieldState(DialogState *dialog, ImageField *field)
+ : FieldState(dialog, field)
{
}
diff --git a/Plugins/skins/SkinLib/ImageFieldState.h b/Plugins/skins/SkinLib/ImageFieldState.h index af48816..493c4db 100644 --- a/Plugins/skins/SkinLib/ImageFieldState.h +++ b/Plugins/skins/SkinLib/ImageFieldState.h @@ -19,7 +19,7 @@ public: virtual bool isEmpty() const;
private:
- ImageFieldState(ImageField *field);
+ ImageFieldState(DialogState *dialog, ImageField *field);
friend class ImageField;
};
diff --git a/Plugins/skins/SkinLib/LabelField.cpp b/Plugins/skins/SkinLib/LabelField.cpp index f4b3d79..154ae2f 100644 --- a/Plugins/skins/SkinLib/LabelField.cpp +++ b/Plugins/skins/SkinLib/LabelField.cpp @@ -17,7 +17,7 @@ FieldType LabelField::getType() const return CONTROL_LABEL;
}
-FieldState * LabelField::createState()
+FieldState * LabelField::createState(DialogState *dialogState)
{
- return new LabelFieldState(this);
+ return new LabelFieldState(dialogState, this);
}
\ No newline at end of file diff --git a/Plugins/skins/SkinLib/LabelField.h b/Plugins/skins/SkinLib/LabelField.h index 9b02d33..8c4cb04 100644 --- a/Plugins/skins/SkinLib/LabelField.h +++ b/Plugins/skins/SkinLib/LabelField.h @@ -12,7 +12,7 @@ public: virtual FieldType getType() const;
- virtual FieldState * createState();
+ virtual FieldState * createState(DialogState *dialogState);
};
diff --git a/Plugins/skins/SkinLib/LabelFieldState.cpp b/Plugins/skins/SkinLib/LabelFieldState.cpp index 15b8e66..364611f 100644 --- a/Plugins/skins/SkinLib/LabelFieldState.cpp +++ b/Plugins/skins/SkinLib/LabelFieldState.cpp @@ -2,7 +2,8 @@ #include "LabelFieldState.h"
-LabelFieldState::LabelFieldState(LabelField *field) : ControlFieldState(field)
+LabelFieldState::LabelFieldState(DialogState *dialog, LabelField *field)
+ : ControlFieldState(dialog, field)
{
}
diff --git a/Plugins/skins/SkinLib/LabelFieldState.h b/Plugins/skins/SkinLib/LabelFieldState.h index ebad19e..dbbb3b0 100644 --- a/Plugins/skins/SkinLib/LabelFieldState.h +++ b/Plugins/skins/SkinLib/LabelFieldState.h @@ -15,7 +15,7 @@ public: virtual bool isEmpty() const;
private:
- LabelFieldState(LabelField *field);
+ LabelFieldState(DialogState *dialog, LabelField *field);
friend class LabelField;
};
diff --git a/Plugins/skins/SkinLib/SkinOption_v8_wrapper.cpp b/Plugins/skins/SkinLib/SkinOption_v8_wrapper.cpp index 61e1c14..1123a04 100644 --- a/Plugins/skins/SkinLib/SkinOption_v8_wrapper.cpp +++ b/Plugins/skins/SkinLib/SkinOption_v8_wrapper.cpp @@ -2,7 +2,7 @@ #include "SkinOption_v8_wrapper.h"
#include <v8.h>
#include "SkinOption.h"
-#include "utf8_helpers.h"
+#include <utf8_helpers.h>
using namespace v8;
diff --git a/Plugins/skins/SkinLib/SkinOptions.cpp b/Plugins/skins/SkinLib/SkinOptions.cpp index 9aa8db4..e0e8174 100644 --- a/Plugins/skins/SkinLib/SkinOptions.cpp +++ b/Plugins/skins/SkinLib/SkinOptions.cpp @@ -1,6 +1,6 @@ #include "globals.h"
#include "SkinOptions.h"
-#include "utf8_helpers.h"
+#include <utf8_helpers.h>
SkinOption::SkinOption(const char *aName)
diff --git a/Plugins/skins/SkinLib/SkinnedDialog.cpp b/Plugins/skins/SkinLib/SkinnedDialog.cpp index 046fffe..d3abe0c 100644 --- a/Plugins/skins/SkinLib/SkinnedDialog.cpp +++ b/Plugins/skins/SkinLib/SkinnedDialog.cpp @@ -3,7 +3,7 @@ #include <sys/stat.h>
#include "V8Script.h"
-#include "utf8_helpers.h"
+#include <utf8_helpers.h>
#include "SkinOptions.h"
diff --git a/Plugins/skins/SkinLib/TextField.cpp b/Plugins/skins/SkinLib/TextField.cpp index d7187a6..d3841b9 100644 --- a/Plugins/skins/SkinLib/TextField.cpp +++ b/Plugins/skins/SkinLib/TextField.cpp @@ -72,7 +72,7 @@ void TextField::setFontColor(COLORREF color) }
-FieldState * TextField::createState()
+FieldState * TextField::createState(DialogState *dialogState)
{
- return new TextFieldState(this);
+ return new TextFieldState(dialogState, this);
}
diff --git a/Plugins/skins/SkinLib/TextField.h b/Plugins/skins/SkinLib/TextField.h index 708331b..8d2291f 100644 --- a/Plugins/skins/SkinLib/TextField.h +++ b/Plugins/skins/SkinLib/TextField.h @@ -21,7 +21,7 @@ public: virtual COLORREF getFontColor() const;
virtual void setFontColor(COLORREF color);
- virtual FieldState * createState();
+ virtual FieldState * createState(DialogState *dialogState);
private:
std::tstring text;
diff --git a/Plugins/skins/SkinLib/TextFieldState.cpp b/Plugins/skins/SkinLib/TextFieldState.cpp index 340f337..1f73268 100644 --- a/Plugins/skins/SkinLib/TextFieldState.cpp +++ b/Plugins/skins/SkinLib/TextFieldState.cpp @@ -2,7 +2,8 @@ #include "TextFieldState.h"
-TextFieldState::TextFieldState(TextField *field) : FieldState(field), font(field->getFont(), field->getFontColor())
+TextFieldState::TextFieldState(DialogState *dialog, TextField *field)
+ : FieldState(dialog, field), font(field->getFont(), field->getFontColor()), halign(LEFT)
{
}
@@ -57,7 +58,17 @@ 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;
-}
\ No newline at end of file +}
diff --git a/Plugins/skins/SkinLib/TextFieldState.h b/Plugins/skins/SkinLib/TextFieldState.h index 7e3fca1..c15284b 100644 --- a/Plugins/skins/SkinLib/TextFieldState.h +++ b/Plugins/skins/SkinLib/TextFieldState.h @@ -21,15 +21,19 @@ 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:
- TextFieldState(TextField *field);
+ TextFieldState(DialogState *dialog, TextField *field);
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 d8698be..0c3fb3f 100644 --- a/Plugins/skins/SkinLib/TextFieldState_v8_wrapper.cpp +++ b/Plugins/skins/SkinLib/TextFieldState_v8_wrapper.cpp @@ -2,7 +2,7 @@ #include "TextFieldState_v8_wrapper.h"
#include <v8.h>
#include "TextFieldState.h"
-#include "utf8_helpers.h"
+#include <utf8_helpers.h>
using namespace v8;
@@ -32,7 +32,38 @@ static void Set_TextFieldState_text(Local<String> property, Local<Value> value, }
+static Handle<Value> Get_TextFieldState_hAlign(Local<String> property, const AccessorInfo &info)
+{
+ Local<Object> self = info.Holder();
+ Local<External> wrap = Local<External>::Cast(self->GetInternalField(0));
+ TextFieldState *tmp = (TextFieldState *) wrap->Value();
+ switch(tmp->getHAlign())
+ {
+ case LEFT: return String::New((const V8_TCHAR *) _T("LEFT"));
+ case CENTER: return String::New((const V8_TCHAR *) _T("CENTER"));
+ case RIGHT: return String::New((const V8_TCHAR *) _T("RIGHT"));
+ }
+ return Undefined();
+}
+
+static void Set_TextFieldState_hAlign(Local<String> property, Local<Value> value, const AccessorInfo& info)
+{
+ Local<Object> self = info.Holder();
+ Local<External> wrap = Local<External>::Cast(self->GetInternalField(0));
+ TextFieldState *tmp = (TextFieldState *) wrap->Value();
+ 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<ObjectTemplate> &templ)
{
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/V8Script.cpp b/Plugins/skins/SkinLib/V8Script.cpp index b18bdf2..2df8cad 100644 --- a/Plugins/skins/SkinLib/V8Script.cpp +++ b/Plugins/skins/SkinLib/V8Script.cpp @@ -1,7 +1,7 @@ #include "globals.h"
#include "V8Script.h"
-#include "utf8_helpers.h"
+#include <utf8_helpers.h>
using namespace v8;
@@ -65,9 +65,17 @@ bool V8Script::compile(const TCHAR *source, Dialog *dlg) HandleScope handle_scope;
Handle<ObjectTemplate> global = ObjectTemplate::New();
+
global->Set(String::New("IsEmpty"), FunctionTemplate::New(&IsEmptyCallback));
global->Set(String::New("RGB"), FunctionTemplate::New(&RGBCallback));
+ global->Set(String::New("NUMBER"), String::New("NUMBER"));
+ global->Set(String::New("CHECKBOX"), String::New("CHECKBOX"));
+ global->Set(String::New("TEXT"), String::New("TEXT"));
+ global->Set(String::New("LEFT"), String::New("LEFT"));
+ global->Set(String::New("CENTER"), String::New("CENTER"));
+ global->Set(String::New("RIGHT"), String::New("RIGHT"));
+
context = Context::New(NULL, global);
Context::Scope context_scope(context);
@@ -172,10 +180,6 @@ std::pair<SkinOptions *,DialogState *> V8Script::configure(Dialog *dlg) wrappers.fillWrapper(get(global, field->getField()->getName()), field);
}
- global->Set(String::New("NUMBER"), String::New("NUMBER"));
- global->Set(String::New("CHECKBOX"), String::New("CHECKBOX"));
- global->Set(String::New("TEXT"), String::New("TEXT"));
-
TryCatch try_catch;
Handle<Value> result = configure->Call(global, 0, NULL);
if (result.IsEmpty())
diff --git a/Plugins/skins/SkinLib/V8Wrappers.cpp b/Plugins/skins/SkinLib/V8Wrappers.cpp index 79d96bc..043345c 100644 --- a/Plugins/skins/SkinLib/V8Wrappers.cpp +++ b/Plugins/skins/SkinLib/V8Wrappers.cpp @@ -8,7 +8,7 @@ #include "DialogState_v8_wrapper.h"
#include "BorderState_v8_wrapper.h"
#include "SkinOption_v8_wrapper.h"
-#include "utf8_helpers.h"
+#include <utf8_helpers.h>
#define OPTION (USER_DEFINED-5)
diff --git a/Plugins/skins/commons.h b/Plugins/skins/commons.h index 3a28e47..10125f2 100644 --- a/Plugins/skins/commons.h +++ b/Plugins/skins/commons.h @@ -62,11 +62,11 @@ using namespace std; #include <m_netlib.h>
#include <m_fontservice.h>
-#include "../utils/mir_memory.h"
-#include "../utils/mir_options.h"
-#include "../utils/mir_icons.h"
-#include "../utils/mir_buffer.h"
-#include "../utils/utf8_helpers.h"
+#include <mir_memory.h>
+#include <mir_options.h>
+#include <mir_icons.h>
+#include <mir_buffer.h>
+#include <utf8_helpers.h>
#include "resource.h"
#include "m_skins.h"
diff --git a/Plugins/skins/m_skins.h b/Plugins/skins/m_skins.h index 5758588..6894f76 100644 --- a/Plugins/skins/m_skins.h +++ b/Plugins/skins/m_skins.h @@ -30,6 +30,10 @@ typedef void * SKINNED_DIALOG; typedef void * SKINNED_FIELD;
+#define SKN_HALIGN_LEFT 1
+#define SKN_HALIGN_CENTER 2
+#define SKN_HALIGN_RIGHT 3
+
/// Some common parameters:
/// - name : internal name and name used inside skin file
/// - description : name shown to the user
@@ -63,6 +67,7 @@ struct SKIN_INTERFACE WCHAR * (*GetTextW)(SKINNED_FIELD field); // You have to free the result
HFONT (*GetFont)(SKINNED_FIELD field);
COLORREF (*GetFontColor)(SKINNED_FIELD field);
+ int (*GetHorizontalAlign)(SKINNED_FIELD field); // one of SKN_HALIGN_*
// IconField methods
void (*SetIcon)(SKINNED_FIELD field, HICON hIcon);
diff --git a/Plugins/skins/m_skins_cpp.h b/Plugins/skins/m_skins_cpp.h index 7a28a31..540afed 100644 --- a/Plugins/skins/m_skins_cpp.h +++ b/Plugins/skins/m_skins_cpp.h @@ -67,6 +67,7 @@ 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/skins.cpp b/Plugins/skins/skins.cpp index dca8ca0..b41142f 100644 --- a/Plugins/skins/skins.cpp +++ b/Plugins/skins/skins.cpp @@ -109,6 +109,14 @@ extern "C" int __declspec(dllexport) Load(PLUGINLINK *link) init_mir_malloc();
mir_getLI(&li);
+// {
+// SkinnedDialog dialog("About");
+// dialog.setFilename(_T("C:\\Desenvolvimento\\Miranda\\plugins\\skinlib\\SkinLib\\test.js"));
+// dialog.addField(new TextField(&dialog, "firstLine"));
+// dialog.setSize(Size(20, 10));
+// DialogState *state = dialog.getState();
+// }
+
hHooks.push_back( HookEvent(ME_SYSTEM_MODULESLOADED, ModulesLoaded) );
hHooks.push_back( HookEvent(ME_SYSTEM_PRESHUTDOWN, PreShutdown) );
@@ -442,38 +450,19 @@ RECT Interface_GetBorders(SKINNED_DIALOG aDlg) return ret;
}
-static inline int beetween(int val, int minVal, int maxVal)
-{
- return max(minVal, min(maxVal, val));
-}
-
RECT Interface_GetRect(SKINNED_FIELD aField)
{
- RECT ret = { 0, 0, 0, 0 };
-
if (aField == NULL)
+ {
+ RECT ret = { 0, 0, 0, 0 };
return ret;
+ }
Field *field = (Field *) aField;
MirandaSkinnedDialog *dlg = (MirandaSkinnedDialog *) field->getDialog();
- DialogState *dlgState = dlg->getState();
- FieldState *fieldState = dlgState->getField(field->getName());
-
- if (!fieldState->isVisible())
- return ret;
-
- BorderState *borders = dlgState->getBorders();
- int left = max(0, borders->getLeft());
- int right = max(left, min(dlgState->getWidth(), dlgState->getWidth() - borders->getRight()));
- int top = max(0, borders->getTop());
- int bottom = max(top, min(dlgState->getHeight(), dlgState->getHeight() - borders->getBottom()));
-
- ret.left = beetween(fieldState->getLeft() + borders->getLeft(), left, right);
- ret.right = beetween(fieldState->getRight(), left, right);
- ret.top = beetween(fieldState->getTop() + borders->getTop(), top, bottom);
- ret.bottom = beetween(fieldState->getBottom(), top, bottom);
+ FieldState *fieldState = dlg->getState()->getField(field->getName());
- return ret;
+ return fieldState->getRect();
}
BOOL Interface_IsVisible(SKINNED_FIELD aField)
diff --git a/Plugins/skins/skins.vcproj b/Plugins/skins/skins.vcproj index 78d7b66..c806754 100644 --- a/Plugins/skins/skins.vcproj +++ b/Plugins/skins/skins.vcproj @@ -4,6 +4,7 @@ Version="9,00"
Name="skins"
ProjectGUID="{F5F5EA6E-F648-4174-8419-D6CA41DF0A11}"
+ RootNamespace="skins"
TargetFrameworkVersion="0"
>
<Platforms>
@@ -48,7 +49,7 @@ <Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="../../include,sdk,libs"
+ AdditionalIncludeDirectories="../../include,sdk,libs,../utils"
PreprocessorDefinitions="WIN32;W32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS"
RuntimeLibrary="1"
PrecompiledHeaderFile=".\Debug/skins.pch"
@@ -119,6 +120,7 @@ UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
+ WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
@@ -146,7 +148,7 @@ Optimization="2"
InlineFunctionExpansion="0"
WholeProgramOptimization="true"
- AdditionalIncludeDirectories="../../include,sdk,libs"
+ AdditionalIncludeDirectories="../../include,sdk,libs,../utils"
PreprocessorDefinitions="WIN32;W32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS"
StringPooling="true"
RuntimeLibrary="0"
@@ -218,7 +220,6 @@ OutputDirectory=".\Unicode_Debug"
IntermediateDirectory=".\Unicode_Debug"
ConfigurationType="2"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
@@ -247,13 +248,13 @@ <Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="../../include,sdk,libs"
- PreprocessorDefinitions="WIN32;W32;_DEBUG;_WINDOWS;UNICODE;_USRDLL;_CRT_SECURE_NO_WARNINGS"
+ AdditionalIncludeDirectories="../../include,sdk,libs,../utils"
+ PreprocessorDefinitions="WIN32;W32;_DEBUG;DEBUG;_WINDOWS;UNICODE;_USRDLL;_CRT_SECURE_NO_WARNINGS"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile=".\Unicode_Debug/skins.pch"
- AssemblerListingLocation=".\Unicode_Debug/"
- ObjectFile=".\Unicode_Debug/"
- ProgramDataBaseFileName=".\Unicode_Debug/"
+ AssemblerListingLocation=""
BrowseInformation="1"
WarningLevel="3"
SuppressStartupBanner="true"
@@ -264,8 +265,6 @@ />
<Tool
Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1047"
/>
<Tool
Name="VCPreLinkEventTool"
@@ -273,15 +272,13 @@ <Tool
Name="VCLinkerTool"
AdditionalOptions="/ALIGN:4096 /filealign:0x200 /ignore:4108 "
- AdditionalDependencies="msimg32.lib comctl32.lib $(ProjectDir)libs\v8.lib"
+ AdditionalDependencies="$(ProjectDir)libs\v8_g.lib"
OutputFile="..\..\bin\debug unicode\Plugins\skinsW.dll"
LinkIncremental="2"
- SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile=".\Unicode_Debug/skinsW.pdb"
- BaseAddress="0x3EC20000"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
+ SubSystem="2"
+ BaseAddress=""
ImportLibrary=".\Unicode_Debug/skinsW.lib"
TargetMachine="1"
/>
@@ -296,8 +293,6 @@ />
<Tool
Name="VCBscMakeTool"
- SuppressStartupBanner="true"
- OutputFile=".\Unicode_Debug/skins.bsc"
/>
<Tool
Name="VCFxCopTool"
@@ -318,6 +313,7 @@ UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
+ WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
@@ -346,7 +342,7 @@ InlineFunctionExpansion="0"
FavorSizeOrSpeed="1"
WholeProgramOptimization="true"
- AdditionalIncludeDirectories="../../include,sdk,libs"
+ AdditionalIncludeDirectories="../../include,sdk,libs,../utils"
PreprocessorDefinitions="WIN32;W32;NDEBUG;_WINDOWS;UNICODE;_USRDLL;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS"
StringPooling="true"
RuntimeLibrary="0"
@@ -488,10 +484,6 @@ RelativePath=".\SkinLib\tstring.h"
>
</File>
- <File
- RelativePath=".\SkinLib\utf8_helpers.h"
- >
- </File>
<Filter
Name="Fields Header Files"
>
|