reman3/Rayman_X/cpa/tempgrp/OAC/Src/DatCtrl/EDACCust.cpp

834 lines
31 KiB
C++

// Used for Data and Controls customization
//
// YB
//
/////////////////////////////////////////////////////
#include "StdAfx.h"
//ANNECY CHRISTOPHE MODIFICATIONS
#define D_ZdxStuff_StructureDefine
//ANNECY END CHRISTOPHE MODIFICATIONS
#include "EDACCust.hpp"
#include "_AInterf.hpp"
#include "EDACMStA.hpp"
#include "EDACActr.hpp"
#include "EDACModl.hpp"
#include "CPA_DatO.hpp"
#include "CPA_DatS.hpp"
#include "EDACWatc.hpp"
#include "EDACVwMS.hpp"
//CPA2 Stegaru Cristian 98/06/25
#include "..\inc\edactors\dlgselectinstances.h"
//End CPA2 Stegaru Cristian 98/06/25
//External Modules
#include "ErO.h"
#include "IncTUT.h"
#include "WAW.h"
//End of External Modules
#undef CPA_WANTS_IMPORT
#undef CPA_EXPORT
#define CPA_WANTS_EXPORT
#include "_Actors.hpp"
#undef CPA_WANTS_EXPORT
#define CPA_WANTS_IMPORT
//************************************************************************************
//*****************************########################*******************************
//*****************************# Owner Data Functions #*******************************
//*****************************########################*******************************
//************************************************************************************
//************************************************************************************
//************************************ Data ******************************************
//************************************************************************************
#define OAC_C_szOwnerDataName_Data_ParentActor "Data_Parent_Actor"
#define OAC_C_szOwnerDataName_Data_ParentAMS "Data_Parent_AMS"
#define OAC_C_szOwnerDataName_Data_LinkType "Data_Link_Type"
#define OAC_C_szOwnerDataName_Data_InWatch "Data_In_Watch"
//************************************************************************************
void OAC_AddOwnerDataToData(CTL_Editor_Data *_pclData,
EdActors_EditorActor *_pclParentActor,
EdActors_ActorMiniStructure *_pclParentAMS)
{
_pclData->m_pub_fn_pclAddOwnerData((void *)_pclParentActor, OAC_C_szOwnerDataName_Data_ParentActor);
_pclData->m_pub_fn_pclAddOwnerData((void *)_pclParentAMS, OAC_C_szOwnerDataName_Data_ParentAMS);
_pclData->m_pub_fn_pclAddOwnerData((long)OAC_LINK_MODE__NOT_LINKED, OAC_C_szOwnerDataName_Data_LinkType);
_pclData->m_pub_fn_pclAddOwnerData((void *)NULL, OAC_C_szOwnerDataName_Data_InWatch);
}
//************************************************************************************
EdActors_EditorActor *OAC_fn_pclGetParentActorOfData(CTL_Editor_Data *_pclData)
{
CTL_OwnerData *pclOD = _pclData->m_pub_fn_pclGetOwnerDataWithName(OAC_C_szOwnerDataName_Data_ParentActor);
if ( pclOD != NULL )
return (EdActors_EditorActor *)pclOD->m_pub_fn_pvGetDataPtr();
else
return NULL;
}
//************************************************************************************
EdActors_ActorMiniStructure *OAC_fn_pclGetParentAMSOfData(CTL_Editor_Data *_pclData)
{
CTL_OwnerData *pclOD = _pclData->m_pub_fn_pclGetOwnerDataWithName(OAC_C_szOwnerDataName_Data_ParentAMS);
if ( pclOD != NULL )
return (EdActors_ActorMiniStructure *)pclOD->m_pub_fn_pvGetDataPtr();
else
return NULL;
}
//************************************************************************************
OAC_eDataLinkMode OAC_fn_tdeGetLink(CTL_Editor_Data *_pclData)
{
//Sets new link
CTL_OwnerData *pclOD = _pclData->m_pub_fn_pclGetOwnerDataWithName(OAC_C_szOwnerDataName_Data_LinkType);
if ( pclOD != NULL )
return ((OAC_eDataLinkMode)pclOD->m_pub_fn_lGetData());
else
return OAC_LINK_MODE__NOT_LINKED; //Default value
}
//************************************************************************************
//Returns the previous Link status
OAC_eDataLinkMode OAC_fn_tdeSetLink(CTL_Editor_Data *_pclData,
OAC_eDataLinkMode _tdeNewLink)
{
OAC_eDataLinkMode tdePreviousLink = OAC_fn_tdeGetLink(_pclData);
//Sets new link
CTL_OwnerData *pclOD = _pclData->m_pub_fn_pclGetOwnerDataWithName(OAC_C_szOwnerDataName_Data_LinkType);
if ( pclOD != NULL )
pclOD->m_pub_fn_vSetData((long)_tdeNewLink);
return tdePreviousLink;
}
//************************************************************************************
BOOL OAC_fn_bIsLinked(CTL_Editor_Data *_pclData)
{
BOOL bIsLinked = ( ( OAC_fn_tdeGetLink(_pclData) == OAC_LINK_MODE__LINKED )
|| ( OAC_fn_tdeGetLink(_pclData) == OAC_LINK_MODE__ALWAYS_LINKED )
);
return bIsLinked;
}
//************************************************************************************
OAC_tdeDataLinkMode eNot(OAC_tdeDataLinkMode _eMode)
{
switch ( _eMode )
{
//Can be changed
case OAC_LINK_MODE__NOT_LINKED:
return OAC_LINK_MODE__LINKED;
case OAC_LINK_MODE__LINKED:
return OAC_LINK_MODE__NOT_LINKED;
//Cannot be changed !!
case OAC_LINK_MODE__ALWAYS_LINKED:
case OAC_LINK_MODE__NEVER_LINKED:
return _eMode;
//Default returned value
default:
return OAC_LINK_MODE__LINKED;
};
}
//************************************************************************************
BOOL OAC_fn_bDataIsInWatch(CTL_Editor_Data *_pclData)
{
CTL_OwnerData *pclOD = _pclData->m_pub_fn_pclGetOwnerDataWithName(OAC_C_szOwnerDataName_Data_InWatch);
if ( pclOD != NULL )
return (pclOD->m_pub_fn_pvGetDataPtr() != NULL );
else
return FALSE;
}
//************************************************************************************
WAW_Data *OAC_fn_pclGetAssociatedWatchData(CTL_Editor_Data *_pclData)
{
CTL_OwnerData *pclOD = _pclData->m_pub_fn_pclGetOwnerDataWithName(OAC_C_szOwnerDataName_Data_InWatch);
if ( pclOD != NULL )
return ( (WAW_Data *)pclOD->m_pub_fn_pvGetDataPtr() );
else
return NULL;
}
//************************************************************************************
void OAC_fn_vSetDataInWatch(CTL_Editor_Data *_pclData,
WAW_Data *_p_clDataInWatch)
{
CTL_OwnerData *pclOD = _pclData->m_pub_fn_pclGetOwnerDataWithName(OAC_C_szOwnerDataName_Data_InWatch);
if ( pclOD != NULL )
pclOD->m_pub_fn_vSetDataPtr((void *)_p_clDataInWatch);
}
//************************************************************************************
//********************************** Controls ****************************************
//************************************************************************************
#define OAC_C_szOwnerDataName_Control_Level "Control_Level"
#define OAC_C_szOwnerDataName_Control_Visibility "Control_Visibility"
#define OAC_C_szOwnerDataName_Control_LinkCheckBox "Control_LinkCheckBox"
#define OAC_C_szOwnerDataName_Control_HelpID "Control_Help_ID"
//************************************************************************************
void OAC_AddOwnerDataToControl(CTL_Editor_Control *_pclControl,
OAC_tdeDataLevel _eLevel,
OAC_tdeControlVisibility _eVisibility,
DWORD dwHelpID)
{
_pclControl->m_pub_fn_pclAddOwnerData(_eLevel, OAC_C_szOwnerDataName_Control_Level);
_pclControl->m_pub_fn_pclAddOwnerData(_eVisibility, OAC_C_szOwnerDataName_Control_Visibility);
_pclControl->m_pub_fn_pclAddOwnerData(dwHelpID, OAC_C_szOwnerDataName_Control_HelpID);
_pclControl->m_pub_fn_vSetControlCanBeDisplayedCallBack(OAC_fn_bControlCanBeDisplayed);
}
//************************************************************************************
OAC_tdeControlVisibility OAC_tdeGetVisibilityOfControl(CTL_Editor_Control *_pclControl)
{
CTL_OwnerData *pclOD = _pclControl->m_pub_fn_pclGetOwnerDataWithName(OAC_C_szOwnerDataName_Control_Visibility);
if ( pclOD != NULL )
return (OAC_tdeControlVisibility)pclOD->m_pub_fn_lGetData();
else
return EDCAR_DATA_VISI_DUAL;
}
//************************************************************************************
DWORD OAC_fn_tdeGetHelpIDOfControl(CTL_Editor_Control *_pclControl)
{
CTL_OwnerData *pclOD = _pclControl->m_pub_fn_pclGetOwnerDataWithName(OAC_C_szOwnerDataName_Control_HelpID);
if ( pclOD != NULL )
return (DWORD)pclOD->m_pub_fn_lGetData();
else
return IDH_FIELD_UNKNOWN;
}
//************************************************************************************
OAC_eDataLevel OAC_fn_tdeGetLevelOfControl(CTL_Editor_Control *_pclControl)
{
CTL_OwnerData *pclOD = _pclControl->m_pub_fn_pclGetOwnerDataWithName(OAC_C_szOwnerDataName_Control_Level);
if ( pclOD != NULL )
return (OAC_eDataLevel)pclOD->m_pub_fn_lGetData();
else
return OAC_DATA_LEVEL_1;
}
//************************************************************************************
void OAC_fn_vCustomizeControl(CTL_Editor_Control *_pclControl,
CWnd *_pclParentWnd)
{
//Adds a Check Box at Head of control
ERROR_ASSERT( _pclControl->m_pub_fn_pclGetListOfBaseControls() != NULL );
//Creates the Check Box
CTL_Editor_CheckBox *pclCheckBox = new CTL_Editor_CheckBox(CTL_CHECK_BOX_TYPE__USE_USER_DEFINED_TYPE,
0, //Additionnal Style
_pclControl,
_pclParentWnd,
OAC_CHECK_BOX_TYPE__LINK,
0); //Returned code
//Sets CallBack
pclCheckBox->m_pub_fn_vSetHasBeenClicked_CallBack(OAC_fn_vCheckBoxHasBeenClicked_CallBack);
//Adds an owner Data
_pclControl->m_pub_fn_pclAddOwnerData((void *)pclCheckBox, OAC_C_szOwnerDataName_Control_LinkCheckBox);
CTL_Editor_BaseControl *pclAddedBaseControl;
pclAddedBaseControl = _pclControl->m_pub_fn_pclGetListOfBaseControls()->m_pub_fn_pclAddControlAtHead(pclCheckBox,
pclCheckBox,
_pclControl,
CTL_BASE_CONTROL_DISPLAY_TYPE__ALWAYS_FIXED,
0,
15,
15,
FALSE,
FALSE);
pclAddedBaseControl->m_pub_fn_vSetCanBeDisplayedCallBack(OAC_fn_bLinkCheckBoxCanBeDisplayed_CallBack);
pclAddedBaseControl->m_pub_fn_vSetMustBeEnabledCallBack(OAC_fn_bLinkCheckBoxMustBeEnabled_CallBack);
}
//************************************************************************************
BOOL OAC_fn_bControlCanBeDisplayed(class CTL_Editor_Control *_pclSenderControl)
{
BOOL bMustBeDisplayed;
BOOL bMustNotDisplayBecauseLinkedFieldOfAnInstance;
BOOL bMustNotDisplayBecauseInstanceOnlyField;
BOOL bMustNotDisplayBecauseModelOnlyField;
BOOL bMustDisplayBecauseRightLevel;
// Shaitan FastC {
if (_pclSenderControl->m_pub_fn_csGetControlName() == "FastC_Index")
return FALSE;
//End Shaitan FastC }
//Gets Data
CTL_Editor_Data *pclData = _pclSenderControl->m_fn_pclGetEditedData();
//Gets Parent Actor
EdActors_EditorActor *pclEdActor = OAC_fn_pclGetParentActorOfData(pclData);
//Gets visibility
OAC_tdeControlVisibility eVisibility = OAC_tdeGetVisibilityOfControl(_pclSenderControl);
//Gets Level
OAC_eDataLevel eLevel = OAC_fn_tdeGetLevelOfControl(_pclSenderControl);
//Analyses if control must be displayed
bMustNotDisplayBecauseLinkedFieldOfAnInstance = (
pclEdActor->m_fn_bIsAnInstance()
&& ( ( OAC_fn_bIsLinked(pclData) )
&& (!g_pclInterface->m_clDocument.m_bMustDisplayModelFieldsInInstance)
)
);
bMustNotDisplayBecauseInstanceOnlyField = (
( !pclEdActor->m_fn_bIsAnInstance() )
&& ( eVisibility == EDCAR_DATA_VISI_ONLY_INSTANCES )
);
bMustNotDisplayBecauseModelOnlyField = (
( pclEdActor->m_fn_bIsAnInstance() )
&& ( eVisibility == EDCAR_DATA_VISI_ONLY_MODELS )
);
//Stefan Dumitrean 14-07-98 ( OAC buttons )
/*
bMustDisplayBecauseRightLevel = ( (
(!g_pclInterface->m_clDocument.m_bExclusiveLevel)
&& (eLevel <= g_pclInterface->m_clDocument.m_tdeCurrentDataLevel)
)
|| (
(g_pclInterface->m_clDocument.m_bExclusiveLevel)
&& (eLevel == g_pclInterface->m_clDocument.m_tdeCurrentDataLevel)
)
);
*/
CString csControlName = _pclSenderControl->m_pub_fn_csGetControlName();
/*
switch( eLevel )
{
case OAC_DATA_LEVEL_1:
case OAC_DATA_LEVEL_2:
bMustDisplayBecauseRightLevel =
g_pclInterface->m_clDocument.m_aCurrentOACButtonsPressed[0];
break;
case OAC_DATA_LEVEL_3:
bMustDisplayBecauseRightLevel =
g_pclInterface->m_clDocument.m_aCurrentOACButtonsPressed[1];
}
if( bMustDisplayBecauseRightLevel )
*/ switch( _pclSenderControl->m_ucInitialCurrentPair )
{
case 1: //is initial
bMustDisplayBecauseRightLevel = g_pclInterface->m_clDocument.m_bDisplayInitialValue;
break;
case 2: //is current
bMustDisplayBecauseRightLevel = g_pclInterface->m_clDocument.m_bDisplayCurrentValue;
}
//End Stefan Dumitrean 14-07-98 ( OAC buttons )
bMustBeDisplayed = ( !bMustNotDisplayBecauseLinkedFieldOfAnInstance
&& !bMustNotDisplayBecauseInstanceOnlyField
&& !bMustNotDisplayBecauseModelOnlyField
&& bMustDisplayBecauseRightLevel
);
return bMustBeDisplayed;
}
//************************************************************************************
//*******************************######################*******************************
//*******************************# CallBack Functions #*******************************
//*******************************######################*******************************
//************************************************************************************
//************************************************************************************
//************************************** Data ****************************************
//************************************************************************************
//************************************************************************************
void OAC_fn_vDataHasBeenChanged(class CTL_Editor_Data *_pclChangedData,
enum CTL_eUpdateReason _eReason,
long _lUserDefinedReason /*= 0*/)
{
if ( _eReason == CTL_UPDATE_REASON__DATA_MODIFIED_BY_USER )
{
EdActors_EditorActor *pclParentActor = OAC_fn_pclGetParentActorOfData(_pclChangedData);
if ( pclParentActor != NULL )
pclParentActor->m_pclActor->fn_vNotifySave();
//CPA2 Stegaru Cristian 98/06/24
MS_Field modifField;
EdActors_EditorActor *pclEdActor = g_pclInterface->m_clDocument.m_pclSelectedActor;
if (pclEdActor && pclEdActor->m_pclActor && pclEdActor->m_pclActor->m_fn_bIsAModel())
{
modifField.m_csModelName = pclEdActor->m_pclActor->GetName ();
CTL_Editor_Control *pParentControl = _pclChangedData->m_pub_fn_pclGetParentControl();
if (pParentControl)
{
CTL_Editor_Data *pclData = pParentControl->m_fn_pclGetEditedData();
modifField.m_pModifiedData = pclData;
}
}
g_pclInterface->m_clDocument.mfn_vSetLastModifiedField (modifField);
//End CPA2 Stegaru Cristian 98/06/24
}
BOOL bWatchHasBeenUpdated = FALSE;
// If a Model has changed
EdActors_MyDocument *pclDoc = &(g_pclInterface->m_clDocument);
if ( OAC_fn_pclGetParentActorOfData(_pclChangedData)->m_pclActor->m_fn_bIsAModel() )
{
// For Fast_C
if (_pclChangedData->m_pub_fn_csGetDataName() == "FastC_Run")
((EdActors_EditorActorModel *) OAC_fn_pclGetParentActorOfData(_pclChangedData))->m_pub_fn_vNotifyBrain();
// If data is an initial value, update the current one
if (_pclChangedData->m_fn_bHasACurrentData())
_pclChangedData->m_fn_pclGetAssociatedCurrentData()->m_fn_vUpdateData(_pclChangedData, _eReason, OAC_E_ur_ModelDataChanged);
// If data is linked, update instances
if ( OAC_fn_bIsLinked(_pclChangedData) && (pclDoc->m_pclSelectedActor == OAC_fn_pclGetParentActorOfData(_pclChangedData)))
{
//Updates Instances if a Model has changed
((EdActors_EditorActorModel *)pclDoc->m_pclSelectedActor)->m_fn_vUpdateAllInstances(_pclChangedData, _eReason, OAC_E_ur_ModelDataChanged);
//Updates Watch Window
OAC_fn_vUpdateAllDataInWatchWindow();
bWatchHasBeenUpdated = TRUE;
}
}
//Updates Watch Window if necessary
if ( (OAC_fn_bDataIsInWatch(_pclChangedData)) && (!bWatchHasBeenUpdated) )
OAC_fn_vUpdateDataInWatchWindow(_pclChangedData);
}
//************************************************************************************
BOOL OAC_fn_bVectorDataMustBeRead(CTL_Editor_Data *_pclData)
{
BOOL bDataMustBeRead = TRUE;
EdActors_EditorActor *pclParentActor = OAC_fn_pclGetParentActorOfData(_pclData);
bDataMustBeRead = ( ( _pclData->m_fn_pvGetMotorDataPtr() != NULL ) //This is NULL for a Model
&& ((pclParentActor->m_pclActor == NULL) ? TRUE : !pclParentActor->m_pclActor->m_fn_bIsAnAlways())
);
return bDataMustBeRead;
}
//************************************************************************************
BOOL OAC_fn_bVectorDataMustBeWritten(CTL_Editor_Data *_pclData)
{
BOOL bDataMustBeWritten = TRUE;
EdActors_EditorActor *pclParentActor = OAC_fn_pclGetParentActorOfData(_pclData);
bDataMustBeWritten = ( ( _pclData->m_fn_pvGetMotorDataPtr() != NULL ) //This is NULL for a Model
&& ((pclParentActor->m_pclActor == NULL) ? TRUE : !pclParentActor->m_pclActor->m_fn_bIsAnAlways())
);
return bDataMustBeWritten;
}
//************************************************************************************
//************************************ Controls **************************************
//************************************************************************************
//************************************************************************************
//******************************** Windows Controls **********************************
//************************************************************************************
//************************************************************************************
void OAC_fn_vFieldNameStaticHasBeenClicked_CallBack(class CTL_Editor_Static *_pclSenderStatic,
enum CTL_eClickType _tdeClickType)
{
switch ( _tdeClickType )
{
//CPA2 Stegaru Cristian 98/06/22
case CTL_CLICK_TYPE__SHIFT_RIGHT_CLICK:
//show popup
{
EdActors_EditorActor *pclEdActor = g_pclInterface->m_clDocument.m_pclSelectedActor;
if (pclEdActor && pclEdActor->m_pclActor && pclEdActor->m_pclActor->m_fn_bIsAModel())
{
const CString csModelName = pclEdActor->m_pclActor->GetName ();
//get data
CTL_Editor_Control *pParentControl = _pclSenderStatic->m_pub_fn_pclGetParentControl();
CTL_Editor_Data *pclData = pParentControl->m_fn_pclGetEditedData();
const CString csDataName = pclData->m_pub_fn_csGetDataName();
MS_Field stLastModifiedField = g_pclInterface->m_clDocument.mfn_stGetLastModifiedField ();
CStringList lstAllInstances, lstStandardInstances;
EdActors_EditorActorModel *pEdModel = (EdActors_EditorActorModel *)pclEdActor;
if (pEdModel)
{
pEdModel->mfn_vGetAllInstances (lstAllInstances);
if (!stLastModifiedField.m_csModelName.IsEmpty ()
&& csModelName == stLastModifiedField.m_csModelName
&& stLastModifiedField.m_pModifiedData
&& csDataName == stLastModifiedField.m_pModifiedData->m_pub_fn_csGetDataName())
pEdModel->mfn_vGetStandardInstances (pclData, stLastModifiedField.m_pModifiedData, lstStandardInstances);
CDlgSelectInstances dlg (lstAllInstances, lstStandardInstances);
if (IDOK == dlg.DoModal ())
{
if (dlg.mfn_bProcessAllInstances ())
pEdModel->mfn_vUpdateInstances (pclData);
else
pEdModel->mfn_vUpdateInstances (pclData, REASON_INSTANCES_IN_THE_LIST, &lstAllInstances);
}
}
}
}
break;
//End CPA2 Stegaru Cristian 98/06/22
case CTL_CLICK_TYPE__RIGHT_CLICK:
{
EdActors_EditorActor *pclEdActor = g_pclInterface->m_clDocument.m_pclSelectedActor;
if ( pclEdActor->m_fn_bIsAnInstance() )
{
//Adds/Removes Field in/from Watch
if ( _pclSenderStatic->m_pub_fn_pclGetParentControl() != NULL )
{
CTL_Editor_Data *pclData = _pclSenderStatic->m_pub_fn_pclGetParentControl()->m_fn_pclGetEditedData();
EdActors_EditorActor *pclParentActor = OAC_fn_pclGetParentActorOfData(pclData);
if ( (pclParentActor->m_fn_bIsAnInstance())
&& (!pclParentActor->m_pclActor->m_fn_bIsAnAlways())
)
{
BOOL bDataIsInWatch = OAC_fn_bDataIsInWatch(pclData);
if ( bDataIsInWatch )
//Removes from Watch
OAC_RemoveFieldFromWatchWindow(pclData);
else
//Adds in Watch
OAC_AddFieldInWatchWindow(pclData);
_pclSenderStatic->m_pub_fn_vSetBackGroundColor(bDataIsInWatch ? g_pclInterface->m_clDocument.m_pub_colref_FieldInstanceBackgroundColor
: g_pclInterface->m_clDocument.m_pub_colref_InWatchFieldBackgroundColor,
TRUE);
_pclSenderStatic->m_pub_fn_vSetTextColor(bDataIsInWatch ? g_pclInterface->m_clDocument.m_pub_colref_FieldInstanceTextColor
: g_pclInterface->m_clDocument.m_pub_colref_InWatchFieldTextColor,
TRUE);
}
}
}
}
break;
case CTL_CLICK_TYPE__LEFT_DOUBLE_CLICK:
break;
case CTL_CLICK_TYPE__LEFT_BUTTON_DOWN:
if ( _pclSenderStatic->m_pub_fn_pclGetParentControl() != NULL )
{
CTL_Editor_Data *pclData = _pclSenderStatic->m_pub_fn_pclGetParentControl()->m_fn_pclGetEditedData();
EdActors_EditorActor *pclParentActor = OAC_fn_pclGetParentActorOfData(pclData);
if ( pclParentActor->m_fn_bIsAnInstance() )
{
//Begins Drag
g_pclInterface->m_clDocument.m_pclMiniStrucView->m_bMustDragData = TRUE;
g_pclInterface->m_clDocument.m_pclMiniStrucView->SetCapture();
g_pclInterface->m_clDocument.m_pclMiniStrucView->m_pri_pclDataToDrop = pclData;
}
}
break;
};
}
//************************************************************************************
void OAC_fn_vInstanceNameStaticHasBeenClicked_CallBack(class CTL_Editor_Static *_pclSenderStatic,
enum CTL_eClickType _tdeClickType)
{
switch ( _tdeClickType )
{
case CTL_CLICK_TYPE__RIGHT_CLICK:
{
//Displays Popup Menu
////
//Loads menu
CMenu clMenu;
clMenu.LoadMenu(IDR_MENU_CONTEXT);
//Gets submenu
CMenu *pclSubMenu;
EdActors_EditorActor *pclEdActor = g_pclInterface->m_clDocument.m_pclSelectedActor;
ERROR_ASSERT( pclEdActor->m_fn_bIsAnInstance() );
pclSubMenu = clMenu.GetSubMenu(2);
//Selects what's needed
UINT nCheck = pclEdActor->m_pclActor->m_fn_bIsAnAlways() ? MF_CHECKED : MF_UNCHECKED;
pclSubMenu->CheckMenuItem(ID_ALWAYS, MF_BYCOMMAND | nCheck);
nCheck = pclEdActor->m_pclActor->m_fn_bIsAGenDoor() ? MF_CHECKED : MF_UNCHECKED;
pclSubMenu->CheckMenuItem(ID_GENDOOR, MF_BYCOMMAND | nCheck);
nCheck = pclEdActor->m_pclActor->m_pub_fn_bIsCommon() ? MF_CHECKED : MF_UNCHECKED;
pclSubMenu->CheckMenuItem(ID_COMMON, MF_BYCOMMAND | nCheck);
nCheck = pclEdActor->m_pclActor->m_pub_fn_bIsInFix() ? MF_CHECKED : MF_UNCHECKED;
pclSubMenu->CheckMenuItem(ID_INTO_FIX, MF_BYCOMMAND | nCheck);
nCheck = pclEdActor->m_pclActor->m_pub_fn_bIsAlwaysActive() ? MF_CHECKED : MF_UNCHECKED;
pclSubMenu->CheckMenuItem(ID_ALWAYS_ACTIVE, MF_BYCOMMAND | nCheck);
if ( (pclEdActor->m_pclActor->m_fn_bIsAnAlways()) /*|| (pclEdActor->m_pclActor->m_fn_bIsTheWorldActor())*/ )
nCheck = MF_GRAYED;
else
nCheck = MF_ENABLED;
pclSubMenu->EnableMenuItem(ID_ALWAYS_ACTIVE, MF_BYCOMMAND | nCheck);
// ANNECY MT - 19/11/98 {
nCheck = pclEdActor->m_pclActor->m_pub_fn_bIsInAllSubMaps() ? MF_CHECKED : MF_UNCHECKED;
pclSubMenu->CheckMenuItem(ID_IN_ALL_SUBMAPS, MF_BYCOMMAND | nCheck);
if ( (pclEdActor->m_pclActor->m_fn_bIsAnAlways()) /*|| (pclEdActor->m_pclActor->m_fn_bIsTheWorldActor())*/ )
nCheck = MF_GRAYED;
else
nCheck = MF_ENABLED;
pclSubMenu->EnableMenuItem(ID_IN_ALL_SUBMAPS, MF_BYCOMMAND | nCheck);
// END ANNECY MT }
CPoint crPoint;
GetCursorPos(&crPoint);
//////////////
//////////////
//Registers for TUT Module
TUT_M_vGetTutDll();
TUT_M_vRegisterMenu(_pclSenderStatic->GetParent()->m_hWnd, pclSubMenu->m_hMenu, crPoint.x, crPoint.y);
//End of Registers for TUT Module
//////////////
pclSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_LEFTBUTTON, crPoint.x, crPoint.y, _pclSenderStatic->GetParent());
pclSubMenu->DestroyMenu();
clMenu.DestroyMenu();
}
break;
case CTL_CLICK_TYPE__LEFT_DOUBLE_CLICK:
//Edits Model of this Instance
break;
};
}
//************************************************************************************
void OAC_fn_vModelNameStaticHasBeenClicked_CallBack(class CTL_Editor_Static *_pclSenderStatic,
enum CTL_eClickType _tdeClickType)
{
switch ( _tdeClickType )
{
/* case CTL_CLICK_TYPE__RIGHT_CLICK:
{
//Displays Popup Menu
////
//Loads menu
CMenu clMenu;
clMenu.LoadMenu(IDR_MENU_CONTEXT);
//Gets submenu
CMenu *pclSubMenu;
EdActors_EditorActor *pclEdActor = g_pclInterface->m_clDocument.m_pclSelectedActor;
pclSubMenu = clMenu.GetSubMenu(0);
CPoint crPoint;
GetCursorPos(&crPoint);
//////////////
//////////////
//Registers for TUT Module
TUT_M_vGetTutDll();
TUT_M_vRegisterMenu(_pclSenderStatic->GetParent()->m_hWnd, pclSubMenu->m_hMenu, crPoint.x, crPoint.y);
//End of Registers for TUT Module
//////////////
pclSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_LEFTBUTTON, crPoint.x, crPoint.y, _pclSenderStatic->GetParent());
pclSubMenu->DestroyMenu();
clMenu.DestroyMenu();
}
break; */
case CTL_CLICK_TYPE__LEFT_DOUBLE_CLICK:
//Edits Model of the Edited Instance
//
break;
};
}
//************************************************************************************
void OAC_fn_ColRefGetStaticColor_CallBack(class CTL_Editor_Static *_pclSenderStatic,
COLORREF &r_ColRefBackGround,
COLORREF &r_ColRefText)
{
CTL_Editor_Control *pclParentControl = _pclSenderStatic->m_pub_fn_pclGetParentControl();
if ( pclParentControl != NULL )
{
CTL_Editor_Data *pclEditedData = pclParentControl->m_fn_pclGetEditedData();
if ( pclEditedData != NULL )
{
EdActors_EditorActor *pclParentActor = OAC_fn_pclGetParentActorOfData(pclEditedData);
if ( pclParentActor->m_fn_bIsAnInstance() )
{
if ( OAC_fn_bDataIsInWatch(pclEditedData) )
{
r_ColRefBackGround = g_pclInterface->m_clDocument.m_pub_colref_InWatchFieldBackgroundColor;
r_ColRefText = g_pclInterface->m_clDocument.m_pub_colref_InWatchFieldTextColor;
}
else
{
switch (pclParentControl->m_ucInitialCurrentPair)
{
case 2:
r_ColRefBackGround = g_pclInterface->m_clDocument.m_pub_colref_FieldCurrentBackgroundColor;
r_ColRefText = g_pclInterface->m_clDocument.m_pub_colref_FieldCurrentTextColor;
break;
case 1:
r_ColRefBackGround = g_pclInterface->m_clDocument.m_pub_colref_FieldInitialBackgroundColor;
r_ColRefText = g_pclInterface->m_clDocument.m_pub_colref_FieldInitialTextColor;
break;
case 0:
default:
r_ColRefBackGround = g_pclInterface->m_clDocument.m_pub_colref_FieldInstanceBackgroundColor;
r_ColRefText = g_pclInterface->m_clDocument.m_pub_colref_FieldInstanceTextColor;
break;
}
}
}
else
{
r_ColRefBackGround = g_pclInterface->m_clDocument.m_pub_colref_FieldModelBackgroundColor;
r_ColRefText = g_pclInterface->m_clDocument.m_pub_colref_FieldModelTextColor;
}
}
}
else
{
if ( _pclSenderStatic->m_pub_fn_tdeGetType() == CTL_STATIC_TYPE__NEUTRAL_FIELD )
{
r_ColRefBackGround = RGB(190,190,190);
r_ColRefText = RGB(0,0,0);
}
}
}
//************************************************************************************
void OAC_fn_vCheckBoxHasBeenClicked_CallBack(class CTL_Editor_CheckBox *_pclSenderCheckBox,
class CTL_Editor_Control *_pclParentControl,
enum CTL_eCarCheckBoxType _tdeType,
long _lUserDefinedType,
long _lUserDefinedCode)
{
}
//************************************************************************************
BOOL OAC_fn_bLinkCheckBoxCanBeDisplayed_CallBack(class CTL_Editor_BaseControl *_pclSenderBaseControl)
{
return g_pclInterface->m_clDocument.m_pub_bMustShowLinks;
}
//************************************************************************************
BOOL OAC_fn_bLinkCheckBoxMustBeEnabled_CallBack(class CTL_Editor_BaseControl *_pclSenderBaseControl)
{
//Gets Link mode of Data
CTL_Editor_Control *pclControl = _pclSenderBaseControl->m_pub_fn_pclGetParentControl();
ERROR_ASSERT( pclControl != NULL );
CTL_Editor_Data *pclData = pclControl->m_fn_pclGetEditedData();
ERROR_ASSERT( pclData != NULL );
OAC_eDataLinkMode eLinkMode = OAC_fn_tdeGetLink(pclData);
return ( ( eLinkMode != OAC_LINK_MODE__ALWAYS_LINKED ) && ( eLinkMode != OAC_LINK_MODE__NEVER_LINKED ) );
}
//************************************************************************************
//********************************####################********************************
//********************************# Global Functions #********************************
//********************************####################********************************
//************************************************************************************
//************************************************************************************
CTL_Editor_Data *OAC_fn_pclAddStateData(CTL_Editor_DataList *_pclDataList,
CString _csDataName,
CTL_Editor_Data *_pclCurrentAssociatedData /*= NULL*/)
{
CPA_Editor_StateData *pclData = new CPA_Editor_StateData(_csDataName, _pclDataList, _pclCurrentAssociatedData);
_pclDataList->m_pub_fn_vAddData(pclData);
return pclData;
}
//************************************************************************************
CTL_Editor_Data *OAC_fn_pclAddObjectListData(CTL_Editor_DataList *_pclDataList,
CString _csDataName,
CTL_Editor_Data *_pclCurrentAssociatedData /*= NULL*/)
{
CPA_Editor_ObjectListData *pclData = new CPA_Editor_ObjectListData(_csDataName, _pclDataList, _pclCurrentAssociatedData);
_pclDataList->m_pub_fn_vAddData(pclData);
return pclData;
}
//************************************************************************************
BOOL OAC_fn_bBelongsToAnInstance(CTL_Editor_Data *_pclData)
{
BOOL bBelongsToAnInstance = FALSE;
EdActors_EditorActor *pclEditorActor = OAC_fn_pclGetParentActorOfData(_pclData);
if ( pclEditorActor != NULL )
bBelongsToAnInstance = pclEditorActor->m_fn_bIsAnInstance();
return bBelongsToAnInstance;
}
//************************************************************************************
BOOL OAC_fn_bIsEditingAnInstance(CTL_Editor_Control *_pclControl)
{
return OAC_fn_bBelongsToAnInstance(_pclControl->m_fn_pclGetEditedData());
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method : OAC_fn_bLinkAllowPropagation
// Date : 98/06/24
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description :
// Author : Stegaru Cristian - CPA
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date :
// By :
//////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL OAC_fn_bLinkAllowPropagation (CTL_Editor_Data *pclData)
{
return OAC_LINK_MODE__NOT_LINKED == OAC_fn_tdeGetLink(pclData);
}