From 6732adccfd0978d3a380ca64ecc65f4ce9f1a2dd Mon Sep 17 00:00:00 2001
From: Nomango <569629550@qq.com>
Date: Fri, 7 Sep 2018 23:57:32 +0800
Subject: [PATCH] remove: ToggleButton
---
 core/components/Button.cpp            |  13 +-
 core/components/ToggleButton.cpp      | 219 --------------------------
 core/e2dcomponent.h                   | 122 --------------
 project/vs2012/Easy2D.vcxproj         |   1 -
 project/vs2012/Easy2D.vcxproj.filters |   3 -
 project/vs2013/Easy2D.vcxproj         |   1 -
 project/vs2013/Easy2D.vcxproj.filters |   3 -
 project/vs2017/Easy2D.vcxproj         |   1 -
 project/vs2017/Easy2D.vcxproj.filters |   3 -
 9 files changed, 4 insertions(+), 362 deletions(-)
 delete mode 100644 core/components/ToggleButton.cpp
diff --git a/core/components/Button.cpp b/core/components/Button.cpp
index e9d0e39f..dc078e5b 100644
--- a/core/components/Button.cpp
+++ b/core/components/Button.cpp
@@ -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_();
-	}
-}
diff --git a/core/components/ToggleButton.cpp b/core/components/ToggleButton.cpp
deleted file mode 100644
index 9ecb1b4c..00000000
--- a/core/components/ToggleButton.cpp
+++ /dev/null
@@ -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_();
-	}
-}
diff --git a/core/e2dcomponent.h b/core/e2dcomponent.h
index 6da97657..c24ddf7c 100644
--- a/core/e2dcomponent.h
+++ b/core/e2dcomponent.h
@@ -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
diff --git a/project/vs2012/Easy2D.vcxproj b/project/vs2012/Easy2D.vcxproj
index 90e188cf..f0d3e643 100644
--- a/project/vs2012/Easy2D.vcxproj
+++ b/project/vs2012/Easy2D.vcxproj
@@ -42,7 +42,6 @@
     
     
     
-    
     
     
     
diff --git a/project/vs2012/Easy2D.vcxproj.filters b/project/vs2012/Easy2D.vcxproj.filters
index 6e7ce3ab..92c39f1a 100644
--- a/project/vs2012/Easy2D.vcxproj.filters
+++ b/project/vs2012/Easy2D.vcxproj.filters
@@ -150,9 +150,6 @@
     
       components
     
-    
-      components
-    
     
       impl
     
diff --git a/project/vs2013/Easy2D.vcxproj b/project/vs2013/Easy2D.vcxproj
index c55111d2..63772cad 100644
--- a/project/vs2013/Easy2D.vcxproj
+++ b/project/vs2013/Easy2D.vcxproj
@@ -186,7 +186,6 @@
     
     
     
-    
     
     
     
diff --git a/project/vs2013/Easy2D.vcxproj.filters b/project/vs2013/Easy2D.vcxproj.filters
index 6e7ce3ab..92c39f1a 100644
--- a/project/vs2013/Easy2D.vcxproj.filters
+++ b/project/vs2013/Easy2D.vcxproj.filters
@@ -150,9 +150,6 @@
     
       components
     
-    
-      components
-    
     
       impl
     
diff --git a/project/vs2017/Easy2D.vcxproj b/project/vs2017/Easy2D.vcxproj
index 77ae3978..f373dd9d 100644
--- a/project/vs2017/Easy2D.vcxproj
+++ b/project/vs2017/Easy2D.vcxproj
@@ -219,7 +219,6 @@
     
     
     
-    
     
     
     
diff --git a/project/vs2017/Easy2D.vcxproj.filters b/project/vs2017/Easy2D.vcxproj.filters
index 6e7ce3ab..92c39f1a 100644
--- a/project/vs2017/Easy2D.vcxproj.filters
+++ b/project/vs2017/Easy2D.vcxproj.filters
@@ -150,9 +150,6 @@
     
       components
     
-    
-      components
-    
     
       impl