add style for colorbox in outfit window

This commit is contained in:
Eduardo Bart 2011-11-16 15:03:11 -02:00
parent c999a49dc7
commit ba62863ff7
11 changed files with 116 additions and 56 deletions

View File

@ -17,7 +17,7 @@ Checkout our website at {http://otclient.info}[http://otclient.info/] for tutori
== Need help? == Need help?
If you have any questions or are looking for more information, please feel free to ask on our official If you have any questions or are looking for more information, please feel free to ask on our official
forum at http://otclient.info/ forum at http://otclient.info
== Bugs == Bugs

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 B

View File

@ -31,3 +31,18 @@ CheckBox < UICheckBox
$disabled: $disabled:
background-color: #ffffff88 background-color: #ffffff88
color: #aaaaaa88 color: #aaaaaa88
ColorBox < UICheckBox
size: 16 16
box-size: 16 16
background-color: #ffffffff
$checked:
image:
source: /core_styles/images/colorbox.png
coords: 16 0 16 16
$!checked:
image:
source: /core_styles/images/colorbox.png
coords: 0 0 16 16

View File

@ -78,8 +78,8 @@ function Outfit.create(creature, outfitList)
color:setStyle('Color') color:setStyle('Color')
color:setBackgroundColor(outfitColor) color:setBackgroundColor(outfitColor)
color:setMarginTop(j * 3 + j * 12) color:setMarginTop(j * 3 + j * 14)
color:setMarginLeft(i * 3 + i * 12) color:setMarginLeft(i * 3 + i * 14)
end end
end end

View File

@ -1,24 +1,16 @@
ColorCheckBox < UICheckBox
size: 12 12
box-size: 12 12
background-color: #ffffffff
image:
source: /core_styles/images/empty_rect.png
ColorFirst < UIWidget ColorFirst < UIWidget
id: color id: color
margin.left: 20 margin.left: 20
anchors.top: creature.top anchors.top: creature.top
anchors.left: creature.right anchors.left: creature.right
Color < ColorCheckBox Color < ColorBox
anchors.top: color.top anchors.top: color.top
anchors.left: color.right anchors.left: color.right
Window Window
title: Select Outfit title: Select Outfit
size: 420 280 size: 450 280
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter

View File

@ -163,13 +163,14 @@ bool luavalue_cast(int index, Rect& rect)
rect.setWidth(g_lua.popInteger()); rect.setWidth(g_lua.popInteger());
g_lua.getField("height", index); g_lua.getField("height", index);
rect.setHeight(g_lua.popInteger()); rect.setHeight(g_lua.popInteger());
return true;
} else if(g_lua.isString()) { } else if(g_lua.isString()) {
return Fw::cast(g_lua.toString(index), rect); return Fw::cast(g_lua.toString(index), rect);
} else if(g_lua.isNil()) { } else if(g_lua.isNil()) {
rect = Rect(); rect = Rect();
return true; return true;
} }
return true; return false;
} }
// point // point
@ -196,7 +197,7 @@ bool luavalue_cast(int index, Point& point)
point = Point(); point = Point();
return true; return true;
} }
return true; return false;
} }
// size // size
@ -223,7 +224,7 @@ bool luavalue_cast(int index, Size& size)
size = Size(); size = Size();
return true; return true;
} }
return true; return false;
} }
// otml nodes // otml nodes
@ -270,10 +271,10 @@ bool luavalue_cast(int index, OTMLNodePtr& node)
node->writeAt(cnodeName, g_lua.toString()); node->writeAt(cnodeName, g_lua.toString());
g_lua.pop(); g_lua.pop();
} }
} else
return false;
return true; return true;
} }
return false;
}
// object ptr // object ptr
bool luavalue_cast(int index, LuaObjectPtr& obj) { bool luavalue_cast(int index, LuaObjectPtr& obj) {

View File

@ -48,7 +48,7 @@ void UICheckBox::render()
void UICheckBox::onMouseRelease(const Point& mousePos, Fw::MouseButton button) void UICheckBox::onMouseRelease(const Point& mousePos, Fw::MouseButton button)
{ {
if(isPressed() && getRect().contains(mousePos)) if(isPressed() && getRect().contains(mousePos))
setState(Fw::CheckedState, !isChecked()); setChecked(!isChecked());
} }
void UICheckBox::onStyleApply(const OTMLNodePtr& styleNode) void UICheckBox::onStyleApply(const OTMLNodePtr& styleNode)
@ -68,3 +68,14 @@ void UICheckBox::onStyleApply(const OTMLNodePtr& styleNode)
} }
} }
} }
bool UICheckBox::isChecked()
{
return hasState(Fw::CheckedState);
}
void UICheckBox::setChecked(bool checked)
{
if(setState(Fw::CheckedState, checked))
callLuaField("onCheckChange", checked);
}

View File

@ -30,8 +30,8 @@ class UICheckBox : public UIWidget
public: public:
void render(); void render();
bool isChecked() { return hasState(Fw::CheckedState); } bool isChecked();
void setChecked(bool checked) { setState(Fw::CheckedState, checked); } void setChecked(bool checked);
void setText(const std::string& text) { m_text = text; } void setText(const std::string& text) { m_text = text; }
std::string getText() { return m_text; } std::string getText() { return m_text; }

View File

@ -615,10 +615,10 @@ void UIWidget::updateLayout()
m_layout->update(); m_layout->update();
} }
void UIWidget::setState(Fw::WidgetState state, bool on) bool UIWidget::setState(Fw::WidgetState state, bool on)
{ {
if(state == Fw::InvalidState) if(state == Fw::InvalidState)
return; return false;
int oldStates = m_states; int oldStates = m_states;
if(on) if(on)
@ -626,8 +626,11 @@ void UIWidget::setState(Fw::WidgetState state, bool on)
else else
m_states &= ~state; m_states &= ~state;
if(oldStates != m_states) if(oldStates != m_states) {
updateStyle(); updateStyle();
return true;
}
return false;
} }
bool UIWidget::hasState(Fw::WidgetState state) bool UIWidget::hasState(Fw::WidgetState state)
@ -700,9 +703,7 @@ void UIWidget::updateState(Fw::WidgetState state)
child->updateState(state); child->updateState(state);
} }
if(newStatus != oldStatus) { if(setState(state, newStatus)) {
setState(state, newStatus);
if(state == Fw::FocusState) { if(state == Fw::FocusState) {
g_dispatcher.addEvent(std::bind(&UIWidget::onFocusChange, asUIWidget(), newStatus, m_lastFocusReason)); g_dispatcher.addEvent(std::bind(&UIWidget::onFocusChange, asUIWidget(), newStatus, m_lastFocusReason));
} else if(state == Fw::HoverState) } else if(state == Fw::HoverState)

View File

@ -149,7 +149,7 @@ public:
void updateStates(); void updateStates();
virtual void updateState(Fw::WidgetState state); virtual void updateState(Fw::WidgetState state);
void setState(Fw::WidgetState state, bool on); bool setState(Fw::WidgetState state, bool on);
bool hasState(Fw::WidgetState state); bool hasState(Fw::WidgetState state);
void updateStyle(); void updateStyle();

View File

@ -39,6 +39,9 @@
#include <otclient/ui/uimap.h> #include <otclient/ui/uimap.h>
#include <otclient/core/outfit.h> #include <otclient/core/outfit.h>
void push_luavalue(const Outfit& outfit);
bool luavalue_cast(int index, Outfit& outfit);
void OTClient::registerLuaFunctions() void OTClient::registerLuaFunctions()
{ {
g_lua.bindGlobalFunction("exit", std::bind(&OTClient::exit, &g_client)); g_lua.bindGlobalFunction("exit", std::bind(&OTClient::exit, &g_client));
@ -90,3 +93,40 @@ void OTClient::registerLuaFunctions()
g_lua.bindClassStaticFunction<Game>("talkPrivate", std::bind(&Game::talkPrivate, &g_game, _1, _2, _3)); g_lua.bindClassStaticFunction<Game>("talkPrivate", std::bind(&Game::talkPrivate, &g_game, _1, _2, _3));
#endif #endif
} }
void push_luavalue(const Outfit& outfit)
{
g_lua.newTable();
g_lua.pushInteger(outfit.getType());
g_lua.setField("type");
g_lua.pushInteger(outfit.getAddons());
g_lua.setField("addons");
g_lua.pushInteger(outfit.getHead());
g_lua.setField("head");
g_lua.pushInteger(outfit.getBody());
g_lua.setField("body");
g_lua.pushInteger(outfit.getLegs());
g_lua.setField("legs");
g_lua.pushInteger(outfit.getFeet());
g_lua.setField("feet");
}
bool luavalue_cast(int index, Outfit& outfit)
{
if(g_lua.isTable(index)) {
g_lua.getField("type", index);
outfit.setType(g_lua.popInteger());
g_lua.getField("addons", index);
outfit.setAddons(g_lua.popInteger());
g_lua.getField("head", index);
outfit.setHead(g_lua.popInteger());
g_lua.getField("body", index);
outfit.setBody(g_lua.popInteger());
g_lua.getField("legs", index);
outfit.setLegs(g_lua.popInteger());
g_lua.getField("feet", index);
outfit.setFeet(g_lua.popInteger());
return true;
}
return false;
}