/****************************************************************************************************

		IMFToolGroup.h
		Copyright: (c) 2001 Eovia Corp. All rights reserved.

		Author:	Arnaud
		Date:	5/4/2005

****************************************************************************************************/

#ifndef __IMFToolGroup__
#define __IMFToolGroup__

#if CP_PRAGMA_ONCE
#pragma once
#endif


#include "MCCompObj.h"
#include "IMFToolbarPart.h" //for type definitions


MCDEFINE_GUID_H(IID_IMFToolGroup);


struct IMFPart;

/// \addtogroup MCF
/// \{

// ****************************************************************************
//								IMFToolGroup
// 
/// IMFToolGroup is an abstraction for a group of related tools (eg camera tools)
/// You cannot assume anything about where and how the tools are displayed in the UI 
///	(they could be in different toolbars...)
/// 
struct IMFToolGroup: public IMCUnknown
{
	virtual boolean			MCCOMAPI	IsShowing					()	= 0;

	virtual void			MCCOMAPI	ShowTools					(boolean inShown)	= 0;

	virtual void			MCCOMAPI	SetToolManipulationResponder(IMFResponder* inResponder)=0;

	
	// ****************************************************************************
	//								AddTool
	// 
	/// To make a button (by opposition with a tool), give an action number different
	/// from -1.
	virtual void 			MCCOMAPI	AddTool						(int32				inToolID,
																	 EToolStyle			inToolStyle,
																	 ResourceID			inImage[kTotalImages],
																	 int16 				inToolKey, 
																	 const TMCString& 	inName,
																	 ActionNumber 		inActionNumber,
																	 boolean			inIsAlwaysEnabled,
																	 boolean 			inIsShadowed, 
																	 int32 				inAfterIndex,
																	 boolean			inForceSticky=false) = 0;


	/// Finds a UI for a piece of the tool group
	virtual IMFPart*		MCCOMAPI	FindPartByID				(IDType inPartID) = 0;

	///Gets the color coefficient that will be applied to the icons of the group
	virtual real32			MCCOMAPI	GetOverrideColorCoef		()							= 0;

	///Sets the color coefficient that will be applied to the icons of the group
	virtual void			MCCOMAPI	SetOverrideColorCoef		(real32 overrideColorCoef)	= 0;

	///Saves the current status of the tools
	virtual void			MCCOMAPI	SavePrefs					()	= 0;

	///Loads the prefs of the tools
	virtual void			MCCOMAPI	LoadPrefs					()	= 0;

	///Saves the default prefs for the tools
	virtual void			MCCOMAPI	StoreDefaultPrefs			(const TMCString& inDefaultPrefs) = 0;
};

/// \}









#endif
