//**************************************
// This is the base class of your DLL interface
// All methods of CPA_ToolDLLBase are
// present in that class.
//**************************************

#ifndef __TFamilyINTERF_HPP__
#define __TFamilyINTERF_HPP__

#include "ITF.h"
#include "TFA.h"

// if you want only one instance of your DLL
// activate the next line
#define DLL_ONLY_ONE_INSTANCE

//----------------------------------------------------------
// CONSTANTS
//----------------------------------------------------------


//----------------------------------------------------------
// Tool DLL interface class
//----------------------------------------------------------
class TFamily_Interface : public CPA_ToolDLLBase
{
    private:
        long m_lNbUnloadedFamilies;
        BOOL m_bCompleteLoad;
	public:
		BOOL m_bLevelLoad;
	public:
		TFamily_Interface(void);
		//~TFamily_Interface(void);


		//====================================================================================
		//========================= COMMON DLL FUNCTIONS OVERLOAD ============================
		//====================================================================================


		// ACP MEssages Functions overload
		void   fn_vConstruct				(void);
        void   fn_vJustAfterRegistered      (void);
        void   fn_vLevelChanges             (void);

		// Windows MEssages Functions overload

		// to update lists of reachable objects

		// for changes

		// editor Modifs

		// insert

		// moves

		//Menus
        BOOL fn_bDefineSubMenu  (EDT_SubMenu *_p_oEDTSubMenu);
        void _OnSubMenuCommand  (EDT_SubMenu *_p_oEDTSubMenu,UINT uiMsgID);

        //Reachable Objects
        BOOL fn_bLoadBaseObject    (CPA_BaseObject *p_oObject);
		// Current Editor

		//====================================================================================
		//=========================== TOOL DLL FUNCTIONS OVERLOAD ============================
		//====================================================================================


		// To communicate with that editor
		long OnQueryAction	(CPA_EditorBase *p_oSender, WPARAM, LPARAM);
        long OnQueryInfos   (CPA_EditorBase *p_oSender, WPARAM, LPARAM);
		//====================================================================================
		//=========================== FAMILY TOOL DLL SPECIFIC FUNCTIONS =====================
		//====================================================================================

	protected:
		void mfn_vLoadAllFamilies();						// find all families and call for each the mfn_p_oLoadAFamily function
        long mfn_lGetChannel(tdstChannelInfoSearch *_p_stChannelInfo);
        void mfn_vLoadPreferences();
        void mfn_vSavePreferences();
        void mfn_vCreateUnloadedFamilies();
        void mfn_vCreateLoadedFamilies();
		void mfn_vLoadFamilies();

};

extern tdstDLLIdentity g_stTFamilyIdentity;

#endif // __TFamilyINTERF_HPP__
