#pragma once

class CFuncList;

///////////////////////////////////////////////////////////////////////////////
///
///	This class encapsulates the Available Functions control in the GUI.  It
/// displays a list of functions available to the user.  Note that function
/// parameters are not stored by this class.  It merely displays the function
/// names.
///
///////////////////////////////////////////////////////////////////////////////
class CFuncAvailCtrl
{
public:
	CFuncAvailCtrl(void);
	~CFuncAvailCtrl(void);

	// Does not store parameters
	BOOL Initialize(CTreeCtrl* pGuiCtrl, CFuncList* pFuncList);
	BOOL SelectAllChildren(HTREEITEM hItem, BOOL bAll = TRUE);
	// Does not return parameters
	BOOL GetSelectedFunctions(CFuncList* pFuncList);
	BOOL IsAnyFuncSelected();

protected:
	CTreeCtrl* m_pctrCmdsAvail;

	BOOL LoadFunctions(CFuncList* pFuncList);
};
