/////////////////////////////////////////////////////////////
// CINEMA 4D SDK                                           //
/////////////////////////////////////////////////////////////
// (c) MAXON Computer GmbH, all rights reserved            //
/////////////////////////////////////////////////////////////

#ifndef C4D_HELP_H__
#define C4D_HELP_H__

#ifndef __API_INTERN__

#include "ge_math.h"

//----------------------------------------------------------------------------------------
///	Plugin help support callback. Can be used to display context sensitive help when the
/// user selects "Show Help" for an object or attribute. <B>Only return true for your own
/// object types</B>. All names are always uppercase.
/// @param[in] opType							Object type name, for example "OATOM".
/// @param[in] baseType						Name of base object type that opType is derived from, usually the same as opType.
/// @param[in] group							Name of group in the attribute manager, for example "ID_OBJECTPROPERTIES".
/// @param[in] property						Name of the object property, for example "ATOMOBJECT_SINGLE";
/// @return												True if the plugin can display help for this request.
//----------------------------------------------------------------------------------------
typedef Bool (*PluginHelpDelegate)(const String& opType, const String& baseType, const String& group, const String& property);

//----------------------------------------------------------------------------------------
///	Registers a delegate for plugin help support.
/// @param[in] pluginId						A unique plugin/command/object Id.
/// @param[in] delegate						The help handler for this plugin.
/// @return												True if succesful.
//----------------------------------------------------------------------------------------
Bool RegisterPluginHelpDelegate(Int32 pluginId, PluginHelpDelegate delegate);

//----------------------------------------------------------------------------------------
///	Opens the help browser for the indicated topic.
/// @param[in] opType							Object type name, for example "OATOM".
/// @param[in] baseType						Name of base object type that opType is derived from, usually the same as opType.
/// @param[in] group							Name of group in the attribute manager, for example "ID_OBJECTPROPERTIES".
/// @param[in] property						Name of the object property, for example "ATOMOBJECT_SINGLE";
//----------------------------------------------------------------------------------------
void OpenHelpBrowser(const String& opType, const String& baseType, const String& group, const String& property);


// Internal use only.
void FreeHelpDelegates();

#endif
#endif
