父节点
9c986c4c5c
当前提交
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
|
正在加载...
在新工单中引用