remove: ToggleButton
This commit is contained in:
parent
775e1075c8
commit
6732adccfd
|
|
@ -151,7 +151,10 @@ bool e2d::Button::Dispatch(const MouseEvent & e, bool handled)
|
|||
bool contains = normal_->ContainsPoint(e.GetPos());
|
||||
if (e.GetType() == MouseEvent::Type::LeftUp && is_selected_ && contains)
|
||||
{
|
||||
OnClick();
|
||||
if (callback_)
|
||||
{
|
||||
callback_();
|
||||
}
|
||||
is_selected_ = false;
|
||||
SetStatus(Status::Normal);
|
||||
return true;
|
||||
|
|
@ -250,11 +253,3 @@ void e2d::Button::UpdateVisible()
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
void e2d::Button::OnClick()
|
||||
{
|
||||
if (callback_)
|
||||
{
|
||||
callback_();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,219 +0,0 @@
|
|||
#include "..\e2dcomponent.h"
|
||||
|
||||
#define SAFE_SET(pointer, func, ...) if (pointer) { pointer->##func(__VA_ARGS__); }
|
||||
|
||||
#define SET_BUTTON_NODE(Old, New) \
|
||||
if (New != Old) \
|
||||
{ \
|
||||
if (Old) this->RemoveChild(Old); \
|
||||
if (New) \
|
||||
{ \
|
||||
New->SetAnchor(anchor_.x, anchor_.y); \
|
||||
this->AddChild(New); \
|
||||
} \
|
||||
Old = New; \
|
||||
UpdateStatus(); \
|
||||
UpdateVisible(); \
|
||||
} \
|
||||
|
||||
|
||||
e2d::ToggleButton::ToggleButton()
|
||||
: Button()
|
||||
, checked_(true)
|
||||
, normal_on_(nullptr)
|
||||
, mouseover_on_(nullptr)
|
||||
, selected_on_(nullptr)
|
||||
, disabled_on_(nullptr)
|
||||
, normal_off_(nullptr)
|
||||
, mouseover_off_(nullptr)
|
||||
, selected_off_(nullptr)
|
||||
, disabled_off_(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
e2d::ToggleButton::ToggleButton(Node * normal_on, Node * normal_off, const Function& func)
|
||||
: Button()
|
||||
, checked_(true)
|
||||
, normal_on_(nullptr)
|
||||
, mouseover_on_(nullptr)
|
||||
, selected_on_(nullptr)
|
||||
, disabled_on_(nullptr)
|
||||
, normal_off_(nullptr)
|
||||
, mouseover_off_(nullptr)
|
||||
, selected_off_(nullptr)
|
||||
, disabled_off_(nullptr)
|
||||
{
|
||||
this->SetNormal(normal_on);
|
||||
this->SetNormalOff(normal_off);
|
||||
this->SetCallbackOnClick(func);
|
||||
}
|
||||
|
||||
e2d::ToggleButton::ToggleButton(Node * normal_on, Node * normal_off, Node * selected_on, Node * selected_off, const Function& func)
|
||||
: Button()
|
||||
, checked_(true)
|
||||
, normal_on_(nullptr)
|
||||
, mouseover_on_(nullptr)
|
||||
, selected_on_(nullptr)
|
||||
, disabled_on_(nullptr)
|
||||
, normal_off_(nullptr)
|
||||
, mouseover_off_(nullptr)
|
||||
, selected_off_(nullptr)
|
||||
, disabled_off_(nullptr)
|
||||
{
|
||||
this->SetNormal(normal_on);
|
||||
this->SetNormalOff(normal_off);
|
||||
this->SetSelected(selected_on);
|
||||
this->SetSelectedOff(selected_off);
|
||||
this->SetCallbackOnClick(func);
|
||||
}
|
||||
|
||||
e2d::ToggleButton::ToggleButton(Node * normal_on, Node * normal_off, Node * mouseover_on, Node * mouseover_off, Node * selected_on, Node * selected_off, const Function& func)
|
||||
: Button()
|
||||
, checked_(true)
|
||||
, normal_on_(nullptr)
|
||||
, mouseover_on_(nullptr)
|
||||
, selected_on_(nullptr)
|
||||
, disabled_on_(nullptr)
|
||||
, normal_off_(nullptr)
|
||||
, mouseover_off_(nullptr)
|
||||
, selected_off_(nullptr)
|
||||
, disabled_off_(nullptr)
|
||||
{
|
||||
this->SetNormal(normal_on);
|
||||
this->SetNormalOff(normal_off);
|
||||
this->SetMouseOver(mouseover_on);
|
||||
this->SetMouseOverOff(mouseover_off);
|
||||
this->SetSelected(selected_on);
|
||||
this->SetSelectedOff(selected_off);
|
||||
this->SetCallbackOnClick(func);
|
||||
}
|
||||
|
||||
e2d::ToggleButton::ToggleButton(Node * normal_on, Node * normal_off, Node * mouseover_on, Node * mouseover_off, Node * selected_on, Node * selected_off, Node * disabled_on, Node * disabled_off, const Function& func)
|
||||
: Button()
|
||||
, checked_(true)
|
||||
, normal_off_(nullptr)
|
||||
, mouseover_off_(nullptr)
|
||||
, selected_off_(nullptr)
|
||||
, disabled_off_(nullptr)
|
||||
{
|
||||
this->SetNormal(normal_on);
|
||||
this->SetNormalOff(normal_off);
|
||||
this->SetMouseOver(mouseover_on);
|
||||
this->SetMouseOverOff(mouseover_off);
|
||||
this->SetSelected(selected_on);
|
||||
this->SetSelectedOff(selected_off);
|
||||
this->SetDisabled(disabled_on);
|
||||
this->SetDisabledOff(disabled_off);
|
||||
this->SetCallbackOnClick(func);
|
||||
}
|
||||
|
||||
bool e2d::ToggleButton::IsChecked() const
|
||||
{
|
||||
return checked_;
|
||||
}
|
||||
|
||||
void e2d::ToggleButton::SetChecked(bool checked)
|
||||
{
|
||||
if (checked_ != checked)
|
||||
{
|
||||
checked_ = checked;
|
||||
UpdateStatus();
|
||||
UpdateVisible();
|
||||
}
|
||||
}
|
||||
|
||||
void e2d::ToggleButton::SetNormal(Node * normal)
|
||||
{
|
||||
SET_BUTTON_NODE(normal_on_, normal);
|
||||
if (normal)
|
||||
{
|
||||
this->SetSize(normal->GetWidth(), normal->GetHeight());
|
||||
}
|
||||
}
|
||||
|
||||
void e2d::ToggleButton::SetMouseOver(Node * mouseover)
|
||||
{
|
||||
SET_BUTTON_NODE(mouseover_on_, mouseover);
|
||||
}
|
||||
|
||||
void e2d::ToggleButton::SetSelected(Node * selected)
|
||||
{
|
||||
SET_BUTTON_NODE(selected_on_, selected);
|
||||
}
|
||||
|
||||
void e2d::ToggleButton::SetDisabled(Node * disabled)
|
||||
{
|
||||
SET_BUTTON_NODE(disabled_on_, disabled);
|
||||
}
|
||||
|
||||
void e2d::ToggleButton::SetNormalOff(Node * normal)
|
||||
{
|
||||
SET_BUTTON_NODE(normal_off_, normal);
|
||||
}
|
||||
|
||||
void e2d::ToggleButton::SetMouseOverOff(Node * mouseover)
|
||||
{
|
||||
SET_BUTTON_NODE(mouseover_off_, mouseover);
|
||||
}
|
||||
|
||||
void e2d::ToggleButton::SetSelectedOff(Node * selected)
|
||||
{
|
||||
SET_BUTTON_NODE(selected_off_, selected);
|
||||
}
|
||||
|
||||
void e2d::ToggleButton::SetDisabledOff(Node * disabled)
|
||||
{
|
||||
SET_BUTTON_NODE(disabled_off_, disabled);
|
||||
}
|
||||
|
||||
void e2d::ToggleButton::SetAnchor(float anchor_x, float anchor_y)
|
||||
{
|
||||
Node::SetAnchor(anchor_x, anchor_y);
|
||||
SAFE_SET(normal_on_, SetAnchor, anchor_x, anchor_y);
|
||||
SAFE_SET(mouseover_on_, SetAnchor, anchor_x, anchor_y);
|
||||
SAFE_SET(selected_on_, SetAnchor, anchor_x, anchor_y);
|
||||
SAFE_SET(disabled_on_, SetAnchor, anchor_x, anchor_y);
|
||||
SAFE_SET(normal_off_, SetAnchor, anchor_x, anchor_y);
|
||||
SAFE_SET(mouseover_off_, SetAnchor, anchor_x, anchor_y);
|
||||
SAFE_SET(selected_off_, SetAnchor, anchor_x, anchor_y);
|
||||
SAFE_SET(disabled_off_, SetAnchor, anchor_x, anchor_y);
|
||||
}
|
||||
|
||||
void e2d::ToggleButton::UpdateStatus()
|
||||
{
|
||||
if (checked_)
|
||||
{
|
||||
normal_ = normal_on_;
|
||||
mouseover_ = mouseover_on_;
|
||||
selected_ = selected_on_;
|
||||
disabled_ = disabled_on_;
|
||||
|
||||
SAFE_SET(normal_off_, SetVisible, false);
|
||||
SAFE_SET(mouseover_off_, SetVisible, false);
|
||||
SAFE_SET(selected_off_, SetVisible, false);
|
||||
SAFE_SET(disabled_off_, SetVisible, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
normal_ = normal_off_;
|
||||
mouseover_ = mouseover_off_;
|
||||
selected_ = selected_off_;
|
||||
disabled_ = disabled_off_;
|
||||
|
||||
SAFE_SET(normal_on_, SetVisible, false);
|
||||
SAFE_SET(mouseover_on_, SetVisible, false);
|
||||
SAFE_SET(selected_on_, SetVisible, false);
|
||||
SAFE_SET(disabled_on_, SetVisible, false);
|
||||
}
|
||||
}
|
||||
|
||||
void e2d::ToggleButton::OnClick()
|
||||
{
|
||||
checked_ = !checked_;
|
||||
UpdateStatus();
|
||||
|
||||
if (callback_)
|
||||
{
|
||||
callback_();
|
||||
}
|
||||
}
|
||||
|
|
@ -100,9 +100,6 @@ namespace e2d
|
|||
// 刷新按钮显示
|
||||
virtual void UpdateVisible();
|
||||
|
||||
// 点击回调
|
||||
virtual void OnClick();
|
||||
|
||||
protected:
|
||||
Node * normal_;
|
||||
Node * mouseover_;
|
||||
|
|
@ -115,125 +112,6 @@ namespace e2d
|
|||
};
|
||||
|
||||
|
||||
class ToggleButton :
|
||||
public Button
|
||||
{
|
||||
public:
|
||||
ToggleButton();
|
||||
|
||||
explicit ToggleButton(
|
||||
Node * normal_on, /* 按钮打开时,普通状态 */
|
||||
Node * normal_off, /* 按钮关闭时,普通状态 */
|
||||
const Function& func = nullptr /* 按钮点击后的回调函数 */
|
||||
);
|
||||
|
||||
explicit ToggleButton(
|
||||
Node * normal_on, /* 按钮打开时,普通状态 */
|
||||
Node * normal_off, /* 按钮关闭时,普通状态 */
|
||||
Node * selected_on, /* 按钮打开时,鼠标按下状态 */
|
||||
Node * selected_off, /* 按钮关闭时,鼠标按下状态 */
|
||||
const Function& func = nullptr /* 按钮点击后的回调函数 */
|
||||
);
|
||||
|
||||
explicit ToggleButton(
|
||||
Node * normal_on, /* 按钮打开时,普通状态 */
|
||||
Node * normal_off, /* 按钮关闭时,普通状态 */
|
||||
Node * mouseover_on, /* 按钮打开时,鼠标移入状态 */
|
||||
Node * mouseover_off, /* 按钮关闭时,鼠标移入状态 */
|
||||
Node * selected_on, /* 按钮打开时,鼠标按下状态 */
|
||||
Node * selected_off, /* 按钮关闭时,鼠标按下状态 */
|
||||
const Function& func = nullptr /* 按钮点击后的回调函数 */
|
||||
);
|
||||
|
||||
explicit ToggleButton(
|
||||
Node * normal_on, /* 按钮打开时,普通状态 */
|
||||
Node * normal_off, /* 按钮关闭时,普通状态 */
|
||||
Node * mouseover_on, /* 按钮打开时,鼠标移入状态 */
|
||||
Node * mouseover_off, /* 按钮关闭时,鼠标移入状态 */
|
||||
Node * selected_on, /* 按钮打开时,鼠标按下状态 */
|
||||
Node * selected_off, /* 按钮关闭时,鼠标按下状态 */
|
||||
Node * disabled_on, /* 按钮打开时,禁用状态 */
|
||||
Node * disabled_off, /* 按钮关闭时,禁用状态 */
|
||||
const Function& func = nullptr /* 按钮点击后的回调函数 */
|
||||
);
|
||||
|
||||
// 获取开关状态
|
||||
bool IsChecked() const;
|
||||
|
||||
// 设置开关按钮的状态
|
||||
void SetChecked(
|
||||
bool checked
|
||||
);
|
||||
|
||||
// 设置按钮打开状态下显示的按钮
|
||||
virtual void SetNormal(
|
||||
Node * normal
|
||||
) override;
|
||||
|
||||
// 设置按钮打开状态下,鼠标移入按钮时显示的按钮
|
||||
virtual void SetMouseOver(
|
||||
Node * mouseover
|
||||
) override;
|
||||
|
||||
// 设置按钮打开状态下,鼠标按下按钮时显示的按钮
|
||||
virtual void SetSelected(
|
||||
Node * selected
|
||||
) override;
|
||||
|
||||
// 设置按钮打开状态下,被禁用时显示的按钮
|
||||
virtual void SetDisabled(
|
||||
Node * disabled
|
||||
) override;
|
||||
|
||||
// 设置按钮关闭状态下显示的按钮
|
||||
void SetNormalOff(
|
||||
Node * normal
|
||||
);
|
||||
|
||||
// 设置按钮关闭状态下,鼠标移入按钮时显示的按钮
|
||||
void SetMouseOverOff(
|
||||
Node * mouseover
|
||||
);
|
||||
|
||||
// 设置按钮关闭状态下,鼠标按下按钮时显示的按钮
|
||||
void SetSelectedOff(
|
||||
Node * selected
|
||||
);
|
||||
|
||||
// 设置按钮关闭状态下,按钮被禁用时显示的按钮
|
||||
void SetDisabledOff(
|
||||
Node * disabled
|
||||
);
|
||||
|
||||
// 设置锚点位置
|
||||
// 默认为 (0, 0), 范围 [0, 1]
|
||||
virtual void SetAnchor(
|
||||
float anchor_x,
|
||||
float anchor_y
|
||||
) override;
|
||||
|
||||
protected:
|
||||
E2D_DISABLE_COPY(ToggleButton);
|
||||
|
||||
// 刷新按钮开关
|
||||
virtual void UpdateStatus();
|
||||
|
||||
// 执行按钮函数对象
|
||||
virtual void OnClick() override;
|
||||
|
||||
protected:
|
||||
Node * normal_on_;
|
||||
Node* mouseover_on_;
|
||||
Node* selected_on_;
|
||||
Node* disabled_on_;
|
||||
Node* normal_off_;
|
||||
Node* mouseover_off_;
|
||||
Node* selected_off_;
|
||||
Node* disabled_off_;
|
||||
bool checked_;
|
||||
};
|
||||
|
||||
|
||||
// 菜单
|
||||
class Menu :
|
||||
public Node
|
||||
|
|
|
|||
|
|
@ -42,7 +42,6 @@
|
|||
<ClCompile Include="..\..\core\actions\Spawn.cpp" />
|
||||
<ClCompile Include="..\..\core\components\Button.cpp" />
|
||||
<ClCompile Include="..\..\core\components\Menu.cpp" />
|
||||
<ClCompile Include="..\..\core\components\ToggleButton.cpp" />
|
||||
<ClCompile Include="..\..\core\event\Collision.cpp" />
|
||||
<ClCompile Include="..\..\core\event\KeyEvent.cpp" />
|
||||
<ClCompile Include="..\..\core\event\MouseEvent.cpp" />
|
||||
|
|
|
|||
|
|
@ -150,9 +150,6 @@
|
|||
<ClCompile Include="..\..\core\components\Menu.cpp">
|
||||
<Filter>components</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\core\components\ToggleButton.cpp">
|
||||
<Filter>components</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\core\impl\Exception.cpp">
|
||||
<Filter>impl</Filter>
|
||||
</ClCompile>
|
||||
|
|
|
|||
|
|
@ -186,7 +186,6 @@
|
|||
<ClCompile Include="..\..\core\actions\Spawn.cpp" />
|
||||
<ClCompile Include="..\..\core\components\Button.cpp" />
|
||||
<ClCompile Include="..\..\core\components\Menu.cpp" />
|
||||
<ClCompile Include="..\..\core\components\ToggleButton.cpp" />
|
||||
<ClCompile Include="..\..\core\event\Collision.cpp" />
|
||||
<ClCompile Include="..\..\core\event\KeyEvent.cpp" />
|
||||
<ClCompile Include="..\..\core\event\MouseEvent.cpp" />
|
||||
|
|
|
|||
|
|
@ -150,9 +150,6 @@
|
|||
<ClCompile Include="..\..\core\components\Menu.cpp">
|
||||
<Filter>components</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\core\components\ToggleButton.cpp">
|
||||
<Filter>components</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\core\impl\Exception.cpp">
|
||||
<Filter>impl</Filter>
|
||||
</ClCompile>
|
||||
|
|
|
|||
|
|
@ -219,7 +219,6 @@
|
|||
<ClCompile Include="..\..\core\actions\Spawn.cpp" />
|
||||
<ClCompile Include="..\..\core\components\Button.cpp" />
|
||||
<ClCompile Include="..\..\core\components\Menu.cpp" />
|
||||
<ClCompile Include="..\..\core\components\ToggleButton.cpp" />
|
||||
<ClCompile Include="..\..\core\event\Collision.cpp" />
|
||||
<ClCompile Include="..\..\core\event\KeyEvent.cpp" />
|
||||
<ClCompile Include="..\..\core\event\MouseEvent.cpp" />
|
||||
|
|
|
|||
|
|
@ -150,9 +150,6 @@
|
|||
<ClCompile Include="..\..\core\components\Menu.cpp">
|
||||
<Filter>components</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\core\components\ToggleButton.cpp">
|
||||
<Filter>components</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\core\impl\Exception.cpp">
|
||||
<Filter>impl</Filter>
|
||||
</ClCompile>
|
||||
|
|
|
|||
Loading…
Reference in New Issue