parent
9c986c4c5c
commit
532d7f239f
@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2010-2011 OTClient <https://github.com/edubart/otclient>
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "uicheckbox.h"
|
||||||
|
#include <framework/otml/otmlnode.h>
|
||||||
|
#include <framework/graphics/image.h>
|
||||||
|
#include <framework/graphics/font.h>
|
||||||
|
#include <framework/graphics/graphics.h>
|
||||||
|
#include <framework/core/eventdispatcher.h>
|
||||||
|
|
||||||
|
void UICheckBox::render()
|
||||||
|
{
|
||||||
|
Rect boxRect;
|
||||||
|
boxRect.setSize(m_boxSize);
|
||||||
|
boxRect.moveLeft(m_rect.left());
|
||||||
|
boxRect.moveVerticalCenter(m_rect.verticalCenter());
|
||||||
|
g_graphics.bindColor(m_backgroundColor);
|
||||||
|
m_image->draw(boxRect);
|
||||||
|
|
||||||
|
Rect textRect(m_rect);
|
||||||
|
textRect.setTopLeft(textRect.topLeft() + m_textOffset);
|
||||||
|
m_font->renderText(m_text, textRect, Fw::AlignLeft, m_foregroundColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UICheckBox::onMouseRelease(const Point& mousePos, Fw::MouseButton button)
|
||||||
|
{
|
||||||
|
if(isPressed() && getRect().contains(mousePos))
|
||||||
|
setState(Fw::CheckedState, !isChecked());
|
||||||
|
}
|
||||||
|
|
||||||
|
void UICheckBox::onStyleApply(const OTMLNodePtr& styleNode)
|
||||||
|
{
|
||||||
|
UIWidget::onStyleApply(styleNode);
|
||||||
|
|
||||||
|
for(OTMLNodePtr node : styleNode->children()) {
|
||||||
|
if(node->tag() == "text-offset")
|
||||||
|
m_textOffset = node->value<Point>();
|
||||||
|
else if(node->tag() == "text")
|
||||||
|
m_text = node->value();
|
||||||
|
else if(node->tag() == "box-size")
|
||||||
|
m_boxSize = node->value<Size>();
|
||||||
|
else if(node->tag() == "checked") {
|
||||||
|
// must be scheduled because setChecked can change the style again
|
||||||
|
g_dispatcher.addEvent(std::bind(&UICheckBox::setChecked, asUICheckBox(), node->value<bool>()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,50 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2010-2011 OTClient <https://github.com/edubart/otclient>
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef UICHECKBOX_H
|
||||||
|
#define UICHECKBOX_H
|
||||||
|
|
||||||
|
#include "uiwidget.h"
|
||||||
|
|
||||||
|
class UICheckBox : public UIWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void render();
|
||||||
|
|
||||||
|
bool isChecked() { return hasState(Fw::CheckedState); }
|
||||||
|
void setChecked(bool checked) { setState(Fw::CheckedState, checked); }
|
||||||
|
|
||||||
|
void setText(const std::string& text) { m_text = text; }
|
||||||
|
std::string getText() { return m_text; }
|
||||||
|
|
||||||
|
UICheckBoxPtr asUICheckBox() { return std::static_pointer_cast<UICheckBox>(shared_from_this()); }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void onStyleApply(const OTMLNodePtr& styleNode);
|
||||||
|
virtual void onMouseRelease(const Point& mousePos, Fw::MouseButton button);
|
||||||
|
|
||||||
|
std::string m_text;
|
||||||
|
Size m_boxSize;
|
||||||
|
Point m_textOffset;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -0,0 +1,90 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2010-2011 OTClient <https://github.com/edubart/otclient>
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "uitranslator.h"
|
||||||
|
#include <boost/algorithm/string.hpp>
|
||||||
|
|
||||||
|
Fw::AlignmentFlag Fw::translateAlignment(std::string aligment)
|
||||||
|
{
|
||||||
|
boost::to_lower(aligment);
|
||||||
|
boost::erase_all(aligment, " ");
|
||||||
|
if(aligment == "topleft")
|
||||||
|
return Fw::AlignTopLeft;
|
||||||
|
else if(aligment == "topright")
|
||||||
|
return Fw::AlignTopRight;
|
||||||
|
else if(aligment == "bottomleft")
|
||||||
|
return Fw::AlignBottomLeft;
|
||||||
|
else if(aligment == "bottomright")
|
||||||
|
return Fw::AlignBottomRight;
|
||||||
|
else if(aligment == "left")
|
||||||
|
return Fw::AlignLeftCenter;
|
||||||
|
else if(aligment == "right")
|
||||||
|
return Fw::AlignRightCenter;
|
||||||
|
else if(aligment == "top")
|
||||||
|
return Fw::AlignTopCenter;
|
||||||
|
else if(aligment == "bottom")
|
||||||
|
return Fw::AlignBottomCenter;
|
||||||
|
else if(aligment == "center")
|
||||||
|
return Fw::AlignCenter;
|
||||||
|
return Fw::AlignNone;
|
||||||
|
}
|
||||||
|
|
||||||
|
Fw::AnchorEdge Fw::translateAnchorEdge(std::string anchorEdge)
|
||||||
|
{
|
||||||
|
boost::to_lower(anchorEdge);
|
||||||
|
boost::erase_all(anchorEdge, " ");
|
||||||
|
if(anchorEdge == "left")
|
||||||
|
return Fw::AnchorLeft;
|
||||||
|
else if(anchorEdge == "right")
|
||||||
|
return Fw::AnchorRight;
|
||||||
|
else if(anchorEdge == "top")
|
||||||
|
return Fw::AnchorTop;
|
||||||
|
else if(anchorEdge == "bottom")
|
||||||
|
return Fw::AnchorBottom;
|
||||||
|
else if(anchorEdge == "horizontalcenter")
|
||||||
|
return Fw::AnchorHorizontalCenter;
|
||||||
|
else if(anchorEdge == "verticalcenter")
|
||||||
|
return Fw::AnchorVerticalCenter;
|
||||||
|
return Fw::AnchorNone;
|
||||||
|
}
|
||||||
|
|
||||||
|
Fw::WidgetState Fw::translateState(std::string state)
|
||||||
|
{
|
||||||
|
boost::to_lower(state);
|
||||||
|
boost::erase_all(state, " ");
|
||||||
|
if(state == "active")
|
||||||
|
return Fw::ActiveState;
|
||||||
|
else if(state == "focus")
|
||||||
|
return Fw::FocusState;
|
||||||
|
else if(state == "hover")
|
||||||
|
return Fw::HoverState;
|
||||||
|
else if(state == "pressed")
|
||||||
|
return Fw::PressedState;
|
||||||
|
else if(state == "checked")
|
||||||
|
return Fw::CheckedState;
|
||||||
|
else if(state == "disabled")
|
||||||
|
return Fw::DisabledState;
|
||||||
|
else if(state == "on")
|
||||||
|
return Fw::OnState;
|
||||||
|
else
|
||||||
|
return Fw::InvalidState;
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2010-2011 OTClient <https://github.com/edubart/otclient>
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef TRANSLATOR_H
|
||||||
|
#define TRANSLATOR_H
|
||||||
|
|
||||||
|
#include "../const.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace Fw {
|
||||||
|
|
||||||
|
AlignmentFlag translateAlignment(std::string aligment);
|
||||||
|
AnchorEdge translateAnchorEdge(std::string anchorEdge);
|
||||||
|
WidgetState translateState(std::string state);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in new issue