/*=========================================================================
*
* EDTTemp.cpp :  List Of Temporary Modifs : Implementation file.
*
*
* Version			1.0
* Creation date
* Revision date
*
* Shaitan
*=======================================================================*/
#include "stdafx.h"

#include "itf/customid.h"
#ifdef ACTIVE_EDITOR
#include "acp_base.h"

#include "EDTBase.hpp"
#include "EDTSObj.hpp"
#include "EDTTemp.hpp"

#include "DPT.h"
//CPA2 Stegaru Cristian 98-02
#include "EDTModif.hpp"
#include "OIT/Edit_IPO.hpp"
#define OPD_GetFullGeomSectionName	999
//End CPA2 Stegaru Cristian 98-02

inline POS_tdxHandleToPosition M_Temp_AllocMatrix()
{
	POS_tdxHandleToPosition hPos = (POS_tdxHandleToPosition) malloc (sizeof (POS_tdstCompletePosition) );
	POS_fn_vSetIdentityMatrix(hPos);

	return hPos;
}
//#################################################################################
// EDT_TemporarySO
//#################################################################################
/*===========================================================================
	Default Constructor 
=========================================================================*/
EDT_TempModif::EDT_TempModif (EDT_SuperObject *pOriginalSO, BOOL bLoaded, CString csModifSectionName/* = ""*/, CString csOriginalSOName/* = ""*/)
	: CPA_SectionObject ("", fn_szGetLevelsDataPath(), EDT_TempModif::CallBackSaveModif, NULL, bLoaded)
{
	// set reference
	//CPA2 Stegaru Cristian 98-02
	ASSERT (pOriginalSO);
	//End CPA2 Stegaru Cristian 98-02
	m_pOriginalSO = pOriginalSO;
	m_bLoaded = bLoaded;
	//CPA2 Stegaru Cristian 98-02
	if (csOriginalSOName.IsEmpty ())
		csOriginalSOName = m_pOriginalSO->GetReferencedSectionName();

	mfn_vSetOriginalSOName (csOriginalSOName);
	// update section name
	if (csModifSectionName.IsEmpty ())
		csModifSectionName = m_pOriginalSO->GetTempModifSectionName();

	SetReferencedSectionName(csModifSectionName);
	//End CPA2 Stegaru Cristian 98-02
	SetSectionData(this);

	// matrix 
	m_pMatrixSection = new CPA_SectionObject (GetMatrixSectionName(), fn_szGetLevelsDataPath(),
											  EDT_TempModif::CallBackSaveMatrix, this, 
											  bLoaded);
	// if new section, notify save
	if (!bLoaded)
		fn_vNotifySave();

	// register initial state
	m_bCreated = FALSE;
	m_bDeleted = FALSE;
	// register initial name
	m_csFinalName = m_pOriginalSO->GetName();
	// register initial father
	m_pFinalFather = (EDT_SuperObject *) m_pOriginalSO->GetSuperObjectFather();
	// register initial position (relative)
	m_hFinalPosition = M_Temp_AllocMatrix();
	GEO_M_vCopyMatrix(m_hFinalPosition, HIE_fn_hGetSuperObjectMatrix(m_pOriginalSO->GetStruct()));
}


/*===========================================================================
	Destructor 
=========================================================================*/
EDT_TempModif::~EDT_TempModif (void)
{
}


/*===========================================================================
	Check validity 
=========================================================================*/
BOOL EDT_TempModif::fn_bIsModified (CString csTypeModif)
{
//CPA2 modified by Stegaru Cristian 98-02
	// check creation 
	if (csTypeModif == C_szCreation)
		return m_bCreated;

	// check suppression
	if (csTypeModif == C_szSuppression)
		return m_bDeleted;

	// check name
	if (csTypeModif == C_szChangeName)
		return m_bNameChanged;
			
	// check father
	if (csTypeModif == C_szChangeFather)
		return m_bFatherChanged;

	// check position
	if (csTypeModif == C_szChangePosition)
		return m_bPositionChanged;

	// default => check all
	return (m_bCreated || m_bDeleted || m_bNameChanged ||
			m_bFatherChanged ||
			m_bPositionChanged);

}

/*===========================================================================
	Set functions
=========================================================================*/
void EDT_TempModif::SetCreated (BOOL bCreated)
{
	m_bCreated = bCreated;
}

void EDT_TempModif::SetDeleted (BOOL bDeleted)
{
	m_bDeleted = bDeleted;
}


//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method : SetFinalPosition 
// Date   : 98-02
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description :
// Author      : Stegaru Cristian - CPA2
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date         :
// By           :
//////////////////////////////////////////////////////////////////////////////////////////////////////
void EDT_TempModif::SetFinalPosition (GEO_tdxHandleToMatrix hNewPosition)
{
	GEO_M_vCopyMatrix(m_hFinalPosition, hNewPosition);
}

//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method : SetFinalFather 
// Date   : 98-02
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description :
// Author      : Stegaru Cristian - CPA2
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date         :
// By           :
//////////////////////////////////////////////////////////////////////////////////////////////////////
void EDT_TempModif::SetFinalFather (EDT_SuperObject *pNewFather)
{
	m_pFinalFather = pNewFather;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method : SetFinalName 
// Date   : 98-02
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description :
// Author      : Stegaru Cristian - CPA2
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date         :
// By           :
//////////////////////////////////////////////////////////////////////////////////////////////////////
void EDT_TempModif::SetFinalName (CString csNewName)
{
	m_csFinalName = csNewName;
}

/*===========================================================================
	Update temporary SO
=========================================================================*/
void EDT_TempModif::fn_vUpdateModification (CString csTypeModif, BOOL bAddModif)
{
	BOOL bModified;
	
	// creation => update flag and register father
	if (csTypeModif == C_szCreation)
	{
		m_bCreated = bAddModif;
		m_pFinalFather = (m_bCreated) ? (EDT_SuperObject *) m_pOriginalSO->GetSuperObjectFather() : NULL;
	}

	// suppression => update flag
	else if (csTypeModif == C_szSuppression)
	{
		m_bDeleted = bAddModif;
		//CPA2 Stegaru Cristian 98-02
		fn_vNotifySave ();
		//End CPA2 Stegaru Cristian 98-02
	}

	// father => register final father
	else if (csTypeModif == C_szChangeFather)
	{
		m_pFinalFather = (EDT_SuperObject *) m_pOriginalSO->GetSuperObjectFather();
		//CPA2 Stegaru Cristian 98-02
		m_bFatherChanged = bAddModif;
		fn_vNotifySave ();
		//End CPA2 Stegaru Cristian 98-02
	}

	// position => register final position
	else if (csTypeModif == C_szChangePosition)
	{
		GEO_M_vCopyMatrix(m_hFinalPosition, HIE_fn_hGetSuperObjectMatrix(m_pOriginalSO->GetStruct()));
		//CPA2 Stegaru Cristian 98-02
		m_bPositionChanged = bAddModif;
		fn_vNotifySave ();
		//End CPA2 Stegaru Cristian 98-02
	}

	// name => update section name and register final name
	else if (csTypeModif == C_szChangeName)
	{
		// register final name
		m_csFinalName = m_pOriginalSO->GetName();
		//CPA2 Stegaru Cristian 98-02
		fn_vNotifySave ();
		m_bNameChanged = bAddModif;
		m_pOriginalSO->GetSuperObjectEditor()->fn_vChangeTemporaryModif(m_pOriginalSO);
		//End CPA2 Stegaru Cristian 98-02
	}

	// update for modification manager
	bModified = fn_bIsModified(csTypeModif);
	m_pOriginalSO->fn_vUpdateModification(csTypeModif, bModified, !bModified);
}

/*===========================================================================
	Notifications
=========================================================================*/

void EDT_TempModif::fn_vNotifySave (void)
{
	//CPA2 Stegaru Cristian 98-02
	// main section
	fn_vWriteSection();
	// matrix section
	m_pMatrixSection->fn_vWriteSection();
	//End CPA2 Stegaru Cristian 98-02
}
//===========================================================================

void EDT_TempModif::fn_vNotifyUnsave (void)
{
//CPA2 Stegaru Cristian 98-02
	// main section
	fn_vDeleteSection();
	// matrix section
	m_pMatrixSection->fn_vDeleteSection();
	//End CPA2 Stegaru Cristian 98-02
}

//===========================================================================

void EDT_TempModif::fn_vNotifyRename (void)
{
//CPA2 Stegaru Cristian 98-02
	// main section
	fn_vRenameSection(m_pOriginalSO->GetTempModifSectionName());
	// matrix section
	m_pMatrixSection->fn_vRenameSection(GetMatrixSectionName());
	// for rename, must notify list of modifcations
	m_pOriginalSO->GetSuperObjectEditor()->fn_vChangeTemporaryModif(m_pOriginalSO);
	//End CPA2 Stegaru Cristian 98-02
}

//===========================================================================

CString EDT_TempModif::GetMatrixSectionName (void)
{
	CString csSectionName, csName;
	char	szSectionName[SCR_CV_ui_Cfg_MaxLenName]; 
	char	szActionName[SCR_CV_ui_Cfg_MaxLenName]; 
	char	szFileName[SCR_CV_ui_Cfg_MaxLenName]; 
	char	szName[SCR_CV_ui_Cfg_MaxLenName]; 

	// get section name
	csSectionName = GetReferencedSectionName();
	SCR_fn_v_RdL0_SplitSectionName((char*)(LPCTSTR)csSectionName, szFileName, szActionName, szName);
	// get new name
	csName.Format("TempSO-%s", szName);
	// compute section name
	SCR_fn_v_RdL0_ComputeSectionName(szSectionName, szFileName, "Matrix", (char*)(LPCTSTR)csName);
	csSectionName = szSectionName;

	return csSectionName;
}

/*===========================================================================
*		Description:	CallBack Save for modif sections
*		Creation date:
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:     Author:
*=========================================================================*/
void EDT_TempModif::CallBackSaveModif (SCR_tdst_File_Description *p_stFile, char *szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction)
{
	CPA_SectionObject		*pMatrixSection;
	CPA_SuperObject			*pSupObj;
	EDT_TempModif			*pTempModif;
	CString					csName, csMatrixName;
	//CPA2 Stegaru Cristian 98-02
	CString					csObjectName;
//	char					szSection[SCR_CV_ui_Cfg_MaxLenName];
	EditorIPO				*pIPOObject = NULL;
//	char					szActionName[SCR_CV_ui_Cfg_MaxLenName];
	//End CPA2 Stegaru Cristian 98-02
	char					szNewSectionName[SCR_CV_ui_Cfg_MaxLenName];
//	char					szFatherName[SCR_CV_ui_Cfg_MaxLenName];
	char					szFileName[SCR_CV_ui_Cfg_MaxLenName];
	char					szFinalName[SCR_CV_ui_Cfg_MaxLenName];
	char					szName[SCR_CV_ui_Cfg_MaxLenName];
	
	
	// get parameters
	pTempModif = (EDT_TempModif *) p_vData;
	//CPA2 Stegaru Cristian 98-02
	ASSERT (pTempModif);
	if (!pTempModif->mfn_bValidModif ())
		return;
	//End CPA2 Stegaru Cristian 98-02
	pMatrixSection = pTempModif->GetMatrixSection();
	pSupObj = pTempModif->GetOriginalSO();
	//CPA2 Stegaru Cristian 98-02
	CString csStaticFileName, csFileName;
	int iPos = -1;
	//End CPA2 Stegaru Cristian 98-02

	switch (eAction)
    {
		case SCR_EA_Ntfy_AddSection:
			// go to end of file (we need all file directive to load this section)
			SCR_fn_v_SvL1_ToEndSection(p_stFile);
			SCR_M_SvL0_SaveBlankLine (p_stFile);

		case SCR_EA_Ntfy_RebuildSection:
			{
				// save section name
				csName = pTempModif->GetCompleteSectionName();
				SCR_fn_v_RdL0_SplitSectionName((char*)(LPCSTR)csName, szFileName, szNewSectionName, szName);
				SCR_fn_v_RdL0_ComputeSectionName(szNewSectionName, NULL, "Modif-SuperObject", szName);
				SCR_M_SvL0_SaveBeginSection(p_stFile, szNewSectionName, SCR_CC_C_Cfg_EOL);
				// save modif
				if (pTempModif->fn_bWasCreated())
				{
					CString csNameOfInitialSPO = pTempModif->mfn_csGetInitialSPOName ();
					CString csFullGeomSectionName;
					if (pSupObj->GetObject())
					{
						ASSERT(pSupObj->GetObject()->fn_bCanBeSaved());
						EditorPO *pPO = ((EditorIPO*)pSupObj->GetObject ())->GetPhysicalObject ();
						ASSERT (pPO);
						CPA_ObjectDLLBase *p_oPODll = pPO->GetMainWorld()->GetObjectDLLWithName (C_szDLLPhysicalObjectName);

						CString *pcsFullGeomSectionName = (CString *)p_oPODll->OnQueryAction (NULL, OPD_GetFullGeomSectionName, (LPARAM)pPO);
						csFullGeomSectionName = *pcsFullGeomSectionName;
						delete pcsFullGeomSectionName;

					}
					if (csNameOfInitialSPO.IsEmpty ())
						csNameOfInitialSPO = " ";
					if (csFullGeomSectionName.IsEmpty ())
						csFullGeomSectionName = " ";

					SCR_M_SvL0_SaveEntry(p_stFile, "Created", SCR_CC_C_Cfg_NoChar);
					SCR_fn_v_SvL0_SaveParameters_MP(p_stFile, SCR_EF_SvL0_Normal, 2, (char *)(LPCSTR)csNameOfInitialSPO, (char *)(LPCSTR)csFullGeomSectionName);
				}
				if (pTempModif->fn_bWasDeleted())
					SCR_M_SvL0_SaveEntry(p_stFile, "Deleted", SCR_CC_C_Cfg_EOL);
				// save final position
				csMatrixName = pMatrixSection->GetReferencedSectionName();
				SCR_fn_v_RdL0_SplitSectionName((char*)(LPCSTR)csMatrixName, szFileName, szNewSectionName, szName);
				SCR_fn_v_RdL0_ComputeSectionName(szNewSectionName, "*", "Matrix", (char*)(LPCSTR)szName);
				SCR_M_SvL0_SaveEntry(p_stFile, "FinalMatrix", SCR_CC_C_Cfg_NoChar);
				SCR_fn_v_SvL0_SaveParameters_MP(p_stFile, SCR_EF_SvL0_Normal, 1, szNewSectionName);
				// save final parent
				//CPA2 Stegaru Cristian 98-02
				//don't use anymore the file of the parent(assume is the level\level.spo file)
		//		strcpy(szFatherName, pTempModif->GetFinalFather()->GetName());
		//		csFileName = szFileName;
		//		iPos = csFileName.ReverseFind ('.');
		//		ASSERT (-1 != iPos);
		//		csStaticFileName = csFileName.Left (iPos) + szStaticExt;
		//		SCR_fn_v_RdL0_ComputeSectionName(szNewSectionName, (char*)(LPCSTR)csStaticFileName, "SuperObject", szFatherName);
				//End CPA2 Stegaru Cristian 98-02
				CString csFinalParent = "SuperObject:" + pTempModif->GetFinalFather()->GetName();
				SCR_M_SvL0_SaveEntry(p_stFile, "FinalParent", SCR_CC_C_Cfg_NoChar);
		//      SCR_fn_v_SvL0_SaveParameters_MP(p_stFile, SCR_EF_SvL0_Normal, 1, szNewSectionName);
				SCR_fn_v_SvL0_SaveParameters_MP(p_stFile, SCR_EF_SvL0_Normal, 1, (char*)(LPCSTR)csFinalParent);
				// save final name
				//CPA2 Stegaru Cristian 98-02
				strcpy(szFinalName, pTempModif->GetFinalName());
				SCR_M_SvL0_SaveEntry(p_stFile, "FinalName", SCR_CC_C_Cfg_NoChar);
				SCR_fn_v_SvL0_SaveParameters_MP(p_stFile, SCR_EF_SvL0_Normal, 1, szFinalName);
				//End CPA2 Stegaru Cristian 98-02


				//CPA2 Stegaru Cristian 98-02
				// end section
				SCR_M_SvL0_SaveEndSection (p_stFile, SCR_CC_C_Cfg_EOL);
				if (eAction == SCR_EA_Ntfy_AddSection)
					SCR_M_SvL0_SaveBlankLine (p_stFile);

				//End CPA2 Stegaru Cristian 98-02

				// update existence
				pTempModif->fn_vSectionSaved();
				break;
			}
		case SCR_EA_Ntfy_DeleteSection:
			// update existence
			pTempModif->fn_vSectionDeleted();
			break;
	}
}
			

/*===========================================================================
*		Description:	CallBack Save for matrix sections
*		Creation date:
*		Author:			Shaitan
*---------------------------------------------------------------------------
*		Revision date:     Author:
*=========================================================================*/
void EDT_TempModif::CallBackSaveMatrix (SCR_tdst_File_Description *p_stFile, char *szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction)
{
	GEO_tdxHandleToMatrix	hMatrix;
	CPA_SectionObject		*pMatrixSection;
	EDT_SuperObject			*pSupObj;
	EDT_TempModif			*pTempModif;
	char					szNewSectionName[SCR_CV_ui_Cfg_MaxLenName];
	char					szName[SCR_CV_ui_Cfg_MaxLenName];
	
	
	// get parameters
	pTempModif = (EDT_TempModif *) p_vData;
	//CPA2 Stegaru Cristian 98-02
	ASSERT (pTempModif);
	if (!pTempModif->mfn_bValidModif ())
		return;
	//End CPA2 Stegaru Cristian 98-02
	pMatrixSection = pTempModif->GetMatrixSection();
	pSupObj = pTempModif->GetOriginalSO();

	switch (eAction)
    {
		case SCR_EA_Ntfy_AddSection:
			// go to end of file (we need all file directive to load this section)
			SCR_fn_v_SvL1_ToEndSection(p_stFile);
			SCR_M_SvL0_SaveBlankLine (p_stFile);

		case SCR_EA_Ntfy_RebuildSection:
			// save section name
			SCR_fn_v_RdL0_SplitSectionName(szSectionName, NULL, szNewSectionName, szName);
			// save matrix
			//CPA2 Stegaru Cristian 98-02
			hMatrix = pTempModif->GetFinalPosition ();
			//End CPA2 Stegaru Cristian 98-02
			
			pSupObj->fn_vSaveMatrix(p_stFile, hMatrix, szName);
			if (eAction == SCR_EA_Ntfy_AddSection)
				SCR_M_SvL0_SaveBlankLine (p_stFile);
			// update existence
			pMatrixSection->fn_vSectionSaved();
			break;

		case SCR_EA_Ntfy_DeleteSection:
			// update existence
			pMatrixSection->fn_vSectionDeleted();
			break;
	}
}
			
//#################################################################################
// CONSTRUCTOR
//#################################################################################
/*===========================================================================
	Constructor - init the list
=========================================================================*/
EDT_TempList::EDT_TempList (EDT_HierarchyEditor *pEditor, BOOL bLoaded)
	: CPA_SectionObject (pEditor->GetTempListSectionName(), fn_szGetLevelsDataPath(), 
						 EDT_TempList::CallBackSaveListModif)
{
	// init editor
	m_pEditor = pEditor;
	// init list
	m_oListOfTempModif.RemoveAll();
	// init section object
	SetSectionData(this);
	SetExistingSection(bLoaded);
}

/*===========================================================================
	Destructor
=========================================================================*/
EDT_TempList::~EDT_TempList (void)
{

}

//#################################################################################
// Modifications
//#################################################################################
/*===========================================================================
	Add modif to the list
=========================================================================*/
void EDT_TempList::fn_vAddTemporaryModif (EDT_TempModif *pModif, BOOL bNotify)
{
	POSITION pos;

	// add modif to the list
	pos = m_oListOfTempModif.Find(pModif);
	if (!pos)
		m_oListOfTempModif.AddTail(pModif);
	// notify list
	//CPA2 Stegaru Cristian 98-02
	if (bNotify)
		fn_vWriteSection();
	//End CPA2 Stegaru Cristian 98-02
}

/*===========================================================================
	remove modif to the list
=========================================================================*/
void EDT_TempList::fn_vRemoveTemporaryModif (EDT_TempModif *pModif)
{
	POSITION pos;

	// remove modif from the list
	pos = m_oListOfTempModif.Find(pModif);
	if (pos)
		m_oListOfTempModif.RemoveAt(pos);
		//CPA2 Stegaru Cristian 98-02
	// notify list
	fn_vWriteSection();
	//End CPA2 Stegaru Cristian 98-02
}

/*===========================================================================
	change modif in the list
=========================================================================*/
void EDT_TempList::fn_vChangeTemporaryModif (EDT_TempModif *pModif)
{
	POSITION pos;

	// check if modif is in the list
	pos = m_oListOfTempModif.Find(pModif);
	//CPA2 Stegaru Cristian 98-02
	if (pos)
		fn_vWriteSection();
	//End CPA2 Stegaru Cristian 98-02
}

/*===========================================================================
	Add modif to the list
=========================================================================*/
void EDT_TempList::fn_vRemoveAllTemporaryModifs (void)
{
	// remove all modifs from the list
	while (m_oListOfTempModif.GetCount())
		m_oListOfTempModif.RemoveTail();
}


//#################################################################################
// Saves
//#################################################################################
/*===========================================================================
	CallBack
=========================================================================*/
void EDT_TempList::CallBackSaveListModif (SCR_tdst_File_Description *p_stFile, char *szSectionName, void *p_vData, SCR_tde_Ntfy_Action eAction)
{
	CPA_List<EDT_TempModif>	*pListTemp;
	EDT_SuperObject			*pSupObj;
	EDT_TempModif			*pTempSO;
	EDT_TempList			*pTempList;
	POSITION				pos;
	CString					csSectionName;
	char					szName[SCR_CV_ui_Cfg_MaxLenName];
	char					szFileName[SCR_CV_ui_Cfg_MaxLenName];
	char					szModifName[SCR_CV_ui_Cfg_MaxLenName];
	char					szActionName[SCR_CV_ui_Cfg_MaxLenName];
	char					szSupObjName[SCR_CV_ui_Cfg_MaxLenName];
	char					szNewSectionName[SCR_CV_ui_Cfg_MaxLenName];
	
	//CPA2 Stegaru Cristian 98-02
	CString					csOriginalSOName;
	char					szOrigModifName[SCR_CV_ui_Cfg_MaxLenName];
	//End CPA2 Stegaru Cristian 98-02
	
	// get parameters
	pTempList = (EDT_TempList *) p_vData;

	switch (eAction)
    {
		case SCR_EA_Ntfy_AddSection:
		case SCR_EA_Ntfy_RebuildSection:
			// get ist of modifs
			pListTemp = pTempList->GetListOfTemporaryModifs();
			// save begin section
			SCR_fn_v_RdL0_ComputeSectionName(szNewSectionName, NULL, "Edit-Modifications", " ");
			SCR_M_SvL0_SaveBeginSection(p_stFile, szNewSectionName, SCR_CC_C_Cfg_EOL);
			// save all entries
			for (pTempSO = pListTemp->GetHeadElement(pos); pTempSO; 
				 pTempSO = pListTemp->GetNextElement(pos))
			{
			    //CPA2 Stegaru Cristian 98-02
				if (!pTempSO->mfn_bValidModif ())
					continue;

				csOriginalSOName = pTempSO->mfn_csGetOriginalSOName ();
			    //End CPA2 Stegaru Cristian 98-02
				// get corresponding super-object
				pSupObj = pTempSO->GetOriginalSO();
				// get section names
				csSectionName = pSupObj->GetReferencedSectionName();
				SCR_fn_v_RdL0_SplitSectionName((char*)(LPCSTR)csSectionName, szFileName, szActionName, szName);
				//CPA2 Stegaru Cristian 98-02
				SCR_fn_v_RdL0_ComputeSectionName(szSupObjName, szFileName, "SuperObject", szName);
				SCR_fn_v_RdL0_SplitSectionName((char*)(LPCSTR)csOriginalSOName, NULL, NULL, szOrigModifName);
				//End CPA2 Stegaru Cristian 98-02
				SCR_fn_v_RdL0_ComputeSectionName(szModifName, "*", "Modif-SuperObject", szOrigModifName);
				// register entry
				SCR_M_SvL0_SaveEntry(p_stFile, "Modification", SCR_CC_C_Cfg_NoChar);
				//CPA2 Stegaru Cristian 98-02
				SCR_fn_v_SvL0_SaveParameters_MP(p_stFile, SCR_EF_SvL0_Normal, 3, (char*)(LPCSTR)csOriginalSOName, szSupObjName, szModifName);
				//End CPA2 Stegaru Cristian 98-02
			}
			// save end section
			SCR_M_SvL0_SaveEndSection (p_stFile, SCR_CC_C_Cfg_EOL);
			if (eAction == SCR_EA_Ntfy_AddSection)
				SCR_M_SvL0_SaveBlankLine (p_stFile);

			// update section
			pTempList->fn_vSectionSaved();
			break;

		case SCR_EA_Ntfy_DeleteSection:
			// update section
			pTempList->fn_vSectionDeleted();
			break;
	}
}

#endif // ACTIVE_EDITOR
