#ifndef _CUSTOMGUI_DESCRIPTIONPROPERTY_H_
#define _CUSTOMGUI_DESCRIPTIONPROPERTY_H_

#include "customgui_base.h"
#include "c4d_basecontainer.h"
#include "c4d_gui.h"



#define CUSTOMGUI_DESCRIPTIONPROPERTY			1000485

#define DESCRIPTIONPROPERTY_COLOR_SEQ						10000	// vector: color of the circles
#define DESCRIPTIONPROPERTY_COLOR_KEY						10001	// vector: color of the circles
#define DESCRIPTIONPROPERTY_COLOR_NOANIM				10002	// vector: color of the circles

#define SETTING_AUTOIDENT			(1) // ident text if animationsymbol is visible

// BFM_ACTION props
#define BFM_ACTION_DP_MENUCLICK		'menu'
#define BFM_ACTION_DP_ADDSELECT		'adds'
#define BFM_ACTION_DP_SUBSELECT		'subs'

// flags for Get/SetState
#define DESCPROP_SEQUENCE						(1<<0)
#define DESCPROP_KEY								(1<<1)
#define DESCPROP_AUTOKEY_ACTIVE			(1<<2)
#define DESCPROP_AUTOKEY_INACTIVE		(1<<3)
#define DESCPROP_NOANIM							(1<<4)
#define DESCPROP_ENABLED						(1<<5)


class DescriptionPropertyCustomGui : public BaseCustomGui<CUSTOMGUI_DESCRIPTIONPROPERTY>
{
		DescriptionPropertyCustomGui();

	public:

		void SetDescID(const DescID &id);
		void SetState(LONG flags);
		LONG GetState();

		LONG GetPartCount();
		void GetPartInfo(LONG part,String &str,DescID &id,Bool &onoff);
		void SetSelection(const DescID &id,Bool onoff);
		void ChangeSettings(const BaseContainer &settings);
};





// INTERNAL STUFF -- INTERNAL STUFF -- INTERNAL STUFF -- INTERNAL STUFF -- INTERNAL STUFF
// INTERNAL STUFF -- INTERNAL STUFF -- INTERNAL STUFF -- INTERNAL STUFF -- INTERNAL STUFF
// INTERNAL STUFF -- INTERNAL STUFF -- INTERNAL STUFF -- INTERNAL STUFF -- INTERNAL STUFF


#ifndef _INTERNAL_DEF_
	class iDescriptionPropertyCustomGui : public iBaseCustomGui
	{
	};
#else
	class iDescriptionPropertyCustomGui;
#endif

struct CustomGuiDescriptionPropertyLib : public BaseCustomGuiLib
{
	void (iDescriptionPropertyCustomGui::*SetState		)(LONG flags);
	LONG (iDescriptionPropertyCustomGui::*GetState		)();
	void (iDescriptionPropertyCustomGui::*SetDescID		)(const DescID &id);
	LONG (iDescriptionPropertyCustomGui::*GetPartCount)();
	void (iDescriptionPropertyCustomGui::*GetPartInfo )(LONG part,String &str,DescID &id,Bool &onoff);
	void (iDescriptionPropertyCustomGui::*SetSelection)(const DescID &id,Bool onoff);
	void (iDescriptionPropertyCustomGui::*ChangeSettings)(const BaseContainer &settings);
};

// INTERNAL STUFF -- INTERNAL STUFF -- INTERNAL STUFF -- INTERNAL STUFF -- INTERNAL STUFF
// INTERNAL STUFF -- INTERNAL STUFF -- INTERNAL STUFF -- INTERNAL STUFF -- INTERNAL STUFF
// INTERNAL STUFF -- INTERNAL STUFF -- INTERNAL STUFF -- INTERNAL STUFF -- INTERNAL STUFF

#endif
