/*!
 	\file
 	\brief GUIクラスの各種定義
 */

#ifndef CGUIPartsDefine_h
#define CGUIPartsDefine_h


#include"../../Setup/CompileMode.h"
#include"../../Graphic/CGraphic.h"
#include"../../Input/CKeybord.h"
#include"../../Input/CMouse.h"
#include"../../Input/CInputMethod.h"


namespace Maid
{

	/*! \enum DENGUIMESSAGE
	 * 各GUIパーツが何かを起こしたときに返すメッセージ
	 * 
	 * GUIMESSAGE + GUIパーツ名 + メッセージ　の形になっている
	 *
	 *	例：
	 *	GUIMESSAGE_BUTTON_MOUSECLICK		ボタンがクリックされた
	 */

	enum GUIMESSAGE
	{
		//	共通メッセージ
		GUIMESSAGE_PARTS_MOUSEIN,			//!<	マウスカーソルがきた
		GUIMESSAGE_PARTS_MOUSEOUT,			//!<	マウスカーソルが離れた
		GUIMESSAGE_PARTS_FOCUSIN,			//!<	フォーカスがきた
		GUIMESSAGE_PARTS_FOCUSOUT,			//!<	フォーカスが離れた

		//	ボタン編
		GUIMESSAGE_BUTTON_MOUSEUP=100,		//!<	マウスボタンを押した
		GUIMESSAGE_BUTTON_MOUSEDOWN,		//!<	マウスボタンを離した
		GUIMESSAGE_BUTTON_CLICK,			//!<	クリックされた

		//	スライダ編
		GUIMESSAGE_SLIDER_MOVEVALUE=200,	//!<	値が変更された

		//	チェックボタン編
		GUIMESSAGE_CHECK_CHANGESTATE=300,	//!<	チェック状態が変わった


		//	ラジオボタン編
		GUIMESSAGE_RADIO_CHANGEBUTTON=400,	//!<	選択されているボタンが変った

		//	エディットボックス編
		GUIMESSAGE_TEXTBOX_CHANGETEXT,		//!<	テキストの状態が変更された

	};

	typedef boost::function2<void, unt32, GUIMESSAGE >	GUIMESSAGEFUNCTION;
	#define MakeGUICallBackObject(pFunc,pObject) boost::bind( pFunc, pObject, _1, _2 )


	enum
	{
		GUIID_NONE = ~0,
	};

}
#endif
