reman3/Rayman_X/cpa/tempgrp/OAC/Src/EdActors/EDACVwAc.cpp

1863 lines
67 KiB
C++

// EDACVwAc.cpp : implementation file
/////////////////////////////////////////////////////////////////////////////
#include "StdAfx.h"
//External Modules
#include "ACP_Base.h"
#include "TAC.h"
#include "TFa.h"
//End of External Modules
#include "_AInterf.hpp"
#include "EDACVwAc.hpp"
#include "EDACDoc.hpp"
#include "EDACFmMn.hpp"
#include "EDACDgSp.hpp"
#include "EDACDgMN.hpp"
#include "EDACDgCp.hpp"
#include "EDACDgIf.hpp"
#include "EDACCnst.hpp"
#include "EDACVwMS.hpp"
#include "EDACModl.hpp"
#include "EDACInst.hpp"
#include "EDACDgUL.hpp"
#include "EDACDgAC.hpp"
#include "EDACStrg.hpp"
//External Modules
#include "ErO.h"
#include "CTL.h"
#include "IncTUT.h"
#include "WAW.h"
//End of External Modules
//-----------------IR-------------------------
#include "EdIRDVVw.hpp"
#include "EdIRFrm.hpp"
#include "EdIRBeEn.hpp"
#include "EDACQuer.hpp"
// Shaitan => state list in the level
#include "ai_intf.hpp"
// End Shaitan => state list in the level
//--------------------------------------------
//CPA2 Stegaru Cristian 98/07/01
#include "..\inc\edactors\dlgcleanalwfile.h"
//End CPA2 Stegaru Cristian 98/07/01
#undef CPA_WANTS_IMPORT
#undef CPA_EXPORT
#define CPA_WANTS_EXPORT
//-----------------IR-------------------------
#include "EdIRIRD.hpp"
//--------------------------------------------
#include "_Actors.hpp"
#undef CPA_WANTS_EXPORT
#define CPA_WANTS_IMPORT
#define C_ED_ACTORS_GROUP_BUTTON_SPACING 3
#define C_szActorModified " << M >>"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// EdActors_ActorsView
IMPLEMENT_DYNCREATE(EdActors_ActorsView, CFormView)
BEGIN_MESSAGE_MAP(EdActors_ActorsView, CFormView)
//{{AFX_MSG_MAP(EdActors_ActorsView)
// ON_BN_CLICKED(IDC_RADIO_LEVEL_1, OnButtonLevel1)
// ON_BN_CLICKED(IDC_RADIO_LEVEL_2, OnButtonLevel2)
// ON_BN_CLICKED(IDC_RADIO_LEVEL_3, OnButtonLevel3)
ON_BN_CLICKED(IDC_CHECK_WATCH, OnButtonWatch)
ON_BN_CLICKED(IDC_CHECK_IA, OnCheckModels)
ON_BN_CLICKED(IDC_CHECK_VAR, OnCheckVariables)
ON_BN_CLICKED(IDC_CHECK_CURRENT, OnCheckCurrent)
ON_BN_CLICKED(IDC_CHECK_INIT, OnCheckInitial)
ON_WM_HELPINFO()
ON_BN_CLICKED(IDC_BUTTON_REDO, OnButtonRedo)
ON_BN_CLICKED(IDC_BUTTON_UNDO, OnButtonUndo)
ON_BN_CLICKED(IDC_BUTTON_UNDO_ARROW, OnButtonUndoArrow)
ON_BN_CLICKED(IDC_BUTTON_REDO_ARROW, OnButtonRedoArrow)
ON_BN_CLICKED(IDC_BUTTON_SHOW_MODELS, OnButtonShowModels)
ON_BN_CLICKED(IDC_BUTTON_EDIT_MODEL, OnButtonEditModel)
ON_BN_CLICKED(IDC_BUTTON_SHOW_INSTANCES, OnButtonShowInstances)
ON_BN_CLICKED(IDC_BUTTON_ACTIONS, OnButtonActions)
ON_BN_CLICKED(IDC_BUTTON_COPY_MODEL, OnButtonCopy)
// Shaitan => state list in the level
ON_BN_CLICKED(IDC_BUTTON_GENERATE_STATELIST, OnButtonStateList)
// End Shaitan => state list in the level
ON_BN_CLICKED(IDC_BUTTON_HELP, OnButtonHelp)
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
ON_BN_CLICKED(IDC_CHECK_SHOW_LINKS, OnCheckShowLinks)
ON_COMMAND(ID_ALWAYS, m_fn_vOnMenuAlways)
ON_COMMAND(ID_COMMON, m_fn_vOnMenuCommon)
ON_COMMAND(ID_INTO_FIX, m_fn_vOnMenuIntoFix)
ON_COMMAND(ID_RENAME_MODEL, m_fn_vRenameModel)
ON_COMMAND(ID_REMOVE_MODEL, m_fn_vRemoveModel)
ON_COMMAND(ID_RENAME_INSTANCE, m_fn_vRenameInstance)
ON_COMMAND(ID_SET_INSTANCE_POSITION_AS_INITIAL, m_fn_vSetInstancePositionAsInitial)
ON_COMMAND(ID_ALWAYS_ACTIVE, OnAlwaysActive)
ON_WM_DESTROY()
ON_BN_CLICKED(IDC_CHECK_ALWAYS_ACTIVE, OnCheckAlwaysActive)
ON_BN_CLICKED(IDC_CLEAN_ALW_FILE, OnCleanAlwFile)
// ANNECY MT - 19/11/98 {
ON_COMMAND(ID_IN_ALL_SUBMAPS, OnInAllSubMaps)
ON_BN_CLICKED(IDC_CHECK_IN_ALL_SUBMAPS, OnCheckInAllSubMaps)
// END ANNECY MT }
//}}AFX_MSG_MAP
// ON_NOTIFY( TTN_NEEDTEXT, 0, OnToolTipNotify )
ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
END_MESSAGE_MAP()
//*************************************************************************
EdActors_ActorsView::EdActors_ActorsView()
: CFormView(EdActors_ActorsView::IDD)
{
//{{AFX_DATA_INIT(EdActors_ActorsView)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_pclToolTip = NULL;
m_pclActorNameStatic = NULL;
m_pclModelNameStatic = NULL;
m_pclFamilyNameStatic = NULL;
}
//*************************************************************************
EdActors_ActorsView::~EdActors_ActorsView()
{
//Deletes Tool Tip Control
if ( m_pclToolTip )
delete m_pclToolTip;
//Deletes Statics
if ( m_pclActorNameStatic )
delete m_pclActorNameStatic;
if ( m_pclModelNameStatic )
delete m_pclModelNameStatic;
if ( m_pclFamilyNameStatic )
delete m_pclFamilyNameStatic;
//Deletes Group buttons
POSITION pos = m_clListOfGroupButtons.GetHeadPosition();
while ( pos != NULL )
delete ( m_clListOfGroupButtons.GetNext(pos) );
}
/////////////////////////////////////////////////////////////////////////////
// EdActors_ActorsView message handlers
//*************************************************************************
void EdActors_ActorsView::OnInitialUpdate()
{
HINSTANCE hOldInstance = AfxGetResourceHandle();
AfxSetResourceHandle( g_stActorEditorIdentity.hModule );
//------------------------------------------------------------
CFormView::OnInitialUpdate();
//Sets scroll sizes
CRect crButtonRect;
GetDlgItem(IDC_CHECK_WATCH)->GetWindowRect(crButtonRect);
ScreenToClient(crButtonRect);
m_wMinYScrollSize = crButtonRect.bottom + 2;
m_wXScrollSize = 0;
SetScrollSizes(MM_TEXT, CSize(m_wXScrollSize, m_wMinYScrollSize));
m_fn_pclGetDocument()->m_pclActorsView = this;
//Sets Icons in buttons
HICON hIcon;
//Stefan Dumitrean 14-07-98 ( OAC buttons )
// hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_LEVEL_1);
// ((CButton *)GetDlgItem(IDC_RADIO_LEVEL_1))->SetIcon(hIcon);
// hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_LEVEL_2);
// ((CButton *)GetDlgItem(IDC_RADIO_LEVEL_2))->SetIcon(hIcon);
// hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_LEVEL_3);
// ((CButton *)GetDlgItem(IDC_RADIO_LEVEL_3))->SetIcon(hIcon);
//End Stefan Dumitrean 14-07-98 ( OAC buttons )
hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_WATCH);
((CButton *)GetDlgItem(IDC_CHECK_WATCH))->SetIcon(hIcon);
//Stefan Dumitrean 14-07-98 ( OAC buttons )
// hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_EXCLUSIVE_LEVEL);
// ((CButton *)GetDlgItem(IDC_CHECK_LEVEL_EXCLUSIVE))->SetIcon(hIcon);
//End Stefan Dumitrean 14-07-98 ( OAC buttons )
hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_MODELS_WINDOW);
((CButton *)GetDlgItem(IDC_CHECK_IA))->SetIcon(hIcon);
hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_VARIABLES_WINDOW);
((CButton *)GetDlgItem(IDC_CHECK_VAR))->SetIcon(hIcon);
hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_UNDO);
((CButton *)GetDlgItem(IDC_BUTTON_UNDO))->SetIcon(hIcon);
hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_UNDO_ARROW_DOWN);
((CButton *)GetDlgItem(IDC_BUTTON_UNDO_ARROW))->SetIcon(hIcon);
hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_REDO);
((CButton *)GetDlgItem(IDC_BUTTON_REDO))->SetIcon(hIcon);
hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_UNDO_ARROW_DOWN);
((CButton *)GetDlgItem(IDC_BUTTON_REDO_ARROW))->SetIcon(hIcon);
hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_EDIT_MODEL);
((CButton *)GetDlgItem(IDC_BUTTON_EDIT_MODEL))->SetIcon(hIcon);
hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_ACTIONS);
((CButton *)GetDlgItem(IDC_BUTTON_ACTIONS))->SetIcon(hIcon);
hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_COPY_MODEL);
((CButton *)GetDlgItem(IDC_BUTTON_COPY_MODEL))->SetIcon(hIcon);
// Shaitan => state list in the level
hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_GENERATE_STATELIST);
((CButton *)GetDlgItem(IDC_BUTTON_GENERATE_STATELIST))->SetIcon(hIcon);
// End Shaitan => state list in the level
hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_HELP);
((CButton *)GetDlgItem(IDC_BUTTON_HELP))->SetIcon(hIcon);
hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_LINKS);
((CButton *)GetDlgItem(IDC_CHECK_SHOW_LINKS))->SetIcon(hIcon);
hIcon = AfxGetApp()->LoadIcon(IDI_CAR_ALWAYS_ACTIVE);
((CButton *)GetDlgItem(IDC_CHECK_ALWAYS_ACTIVE))->SetIcon(hIcon);
hIcon = AfxGetApp()->LoadIcon(IDI_CAR_CLEAN_ALW_FILE);
((CButton *)GetDlgItem(IDC_CLEAN_ALW_FILE))->SetIcon(hIcon);
// ANNECY MT - 19/11/98 {
hIcon = AfxGetApp()->LoadIcon(IDI_CAR_IN_ALL_SUBMAPS);
((CButton *)GetDlgItem(IDC_CHECK_IN_ALL_SUBMAPS))->SetIcon(hIcon);
// END ANNECY MT }
//Creates tool tips
EnableToolTips(TRUE);
m_pclToolTip = new CToolTipCtrl;
m_pclToolTip->Create(this, WS_VISIBLE | TTS_ALWAYSTIP);
//Re-adjusts elements
///////////////////////////
CRect crModelButtonRect;
GetDlgItem(IDC_BUTTON_SHOW_INSTANCES)->GetWindowRect(crModelButtonRect);
ScreenToClient(crModelButtonRect);
CRect crFirstRect;
GetDlgItem(IDC_STATIC_LINE)->GetWindowRect(crFirstRect);
ScreenToClient(crFirstRect);
//Adjusts the static for the name of the Family
CRect crStaticName;
CRect crFamilyStaticRect;
GetDlgItem(IDC_STATIC_FAMILY)->GetWindowRect(crFamilyStaticRect);
ScreenToClient(crFamilyStaticRect);
crStaticName.top = crFamilyStaticRect.top;
crStaticName.bottom = crFamilyStaticRect.bottom;
crStaticName.left = crFamilyStaticRect.right + C_MAIN_VIEW_SPACING;
crStaticName.right = crModelButtonRect.left - C_MAIN_VIEW_SPACING;
m_pclFamilyNameStatic = new CTL_Editor_Static("",
CTL_STATIC_TYPE__USE_USER_DEFINED,
SS_CENTER,
NULL,
this,
OAC_STATIC_TYPE__FAMILY_NAME);
m_pclFamilyNameStatic->MoveWindow(crStaticName);
m_pclFamilyNameStatic->ShowWindow(SW_SHOW);
m_pclFamilyNameStatic->m_pub_fn_vSetBackGroundColor(g_pclInterface->m_clDocument.m_pub_colref_FamilyBackgroundColor);
m_pclFamilyNameStatic->m_pub_fn_vSetTextColor(g_pclInterface->m_clDocument.m_pub_colref_FamilyTextColor);
//Adjusts the static for the name of the Model
CRect crModelStaticRect;
GetDlgItem(IDC_STATIC_MODEL)->GetWindowRect(crModelStaticRect);
ScreenToClient(crModelStaticRect);
crStaticName.top = crModelStaticRect.top;
crStaticName.bottom = crModelStaticRect.bottom;
crStaticName.left = crModelStaticRect.right + C_MAIN_VIEW_SPACING;
m_pclModelNameStatic = new CTL_Editor_Static("",
CTL_STATIC_TYPE__USE_USER_DEFINED,
SS_CENTER,
NULL,
this,
OAC_STATIC_TYPE__MODEL_NAME);
m_pclModelNameStatic->MoveWindow(crStaticName);
m_pclModelNameStatic->m_pub_fn_vSetStaticHasBeenClicked_CallBack(OAC_fn_vModelNameStaticHasBeenClicked_CallBack);
m_pclModelNameStatic->ShowWindow(SW_SHOW);
m_pclModelNameStatic->m_pub_fn_vSetBackGroundColor(g_pclInterface->m_clDocument.m_pub_colref_ModelBackgroundColor);
m_pclModelNameStatic->m_pub_fn_vSetTextColor(g_pclInterface->m_clDocument.m_pub_colref_ModelTextColor);
//Adjusts the static for the name of the Instance
CRect crInstanceStaticRect;
GetDlgItem(IDC_STATIC_INSTANCE)->GetWindowRect(crInstanceStaticRect);
ScreenToClient(crInstanceStaticRect);
crStaticName.top = crInstanceStaticRect.top;
crStaticName.bottom = crInstanceStaticRect.bottom;
crStaticName.left = crInstanceStaticRect.right + C_MAIN_VIEW_SPACING;
m_pclActorNameStatic = new CTL_Editor_Static("",
CTL_STATIC_TYPE__USE_USER_DEFINED,
SS_CENTER,
NULL,
this,
OAC_STATIC_TYPE__INSTANCE_NAME);
m_pclActorNameStatic->MoveWindow(crStaticName);
m_pclActorNameStatic->m_pub_fn_vSetStaticHasBeenClicked_CallBack(OAC_fn_vInstanceNameStaticHasBeenClicked_CallBack);
m_pclActorNameStatic->m_pub_fn_vSetBackGroundColor(g_pclInterface->m_clDocument.m_pub_colref_NameBackgroundColor);
m_pclActorNameStatic->m_pub_fn_vSetTextColor(g_pclInterface->m_clDocument.m_pub_colref_NameTextColor);
//Sets the current data level
//ANNECY Shaitan Correction (16/04/98) {
//Stefan Dumitrean 14-07-98 ( OAC buttons )
// m_fn_pclGetDocument()->m_bExclusiveLevel = FALSE; //will be inverted...
// OnCheckLevelExclusive();
// ((CButton *)GetDlgItem(IDC_CHECK_LEVEL_EXCLUSIVE))->SetCheck(m_fn_pclGetDocument()->m_bExclusiveLevel);
//End Stefan Dumitrean 14-07-98 ( OAC buttons )
//ENDANNECY Shaitan Correction }
/*
switch ( g_pclInterface->m_clDocument.m_ucCurrentDataLevel )
{
case 1:
OnButtonLevel1();
((CButton *)GetDlgItem(IDC_RADIO_LEVEL_1))->SetCheck(1);
break;
case 2:
OnButtonLevel2();
((CButton *)GetDlgItem(IDC_RADIO_LEVEL_2))->SetCheck(1);
break;
case 3:
OnButtonLevel3();
((CButton *)GetDlgItem(IDC_RADIO_LEVEL_3))->SetCheck(1);
break;
default:
OnButtonLevel1();
((CButton *)GetDlgItem(IDC_RADIO_LEVEL_1))->SetCheck(1);
break;
}
*/
//Creates buttons for Groups of MS
CRect crLastRect;
GetDlgItem(IDC_STATIC_LINE_MS)->GetWindowRect(crLastRect);
ScreenToClient(crLastRect);
EdActors_MiniStructureList *pclMSGroup;
unsigned char ucIndex = 0;
unsigned char ucNumberOfGroups = m_fn_pclGetDocument()->m_clListOfMSLists.GetCount();
short wButtonWidth = (crLastRect.Width() - (ucNumberOfGroups-1)* C_ED_ACTORS_GROUP_BUTTON_SPACING ) / ucNumberOfGroups;
short wXPos = (short)crLastRect.left;
CString csGroupButtonText;
POSITION pos = m_fn_pclGetDocument()->m_clListOfMSLists.GetHeadPosition();
while( pos != NULL )
{
pclMSGroup = m_fn_pclGetDocument()->m_clListOfMSLists.GetNext(pos);
csGroupButtonText.Format("%s%i", g_c_csGroupName, ucIndex + 1);
//Creates button
EdActors_MSGroupButton *pclNewButton = new EdActors_MSGroupButton(ucIndex,
csGroupButtonText,
wXPos,
crLastRect.bottom + C_ED_ACTORS_GROUP_BUTTON_SPACING,
wButtonWidth,
this);
m_clListOfGroupButtons.AddTail(pclNewButton);
ucIndex ++;
wXPos += (wButtonWidth + C_ED_ACTORS_GROUP_BUTTON_SPACING);
//First 'Enable' Init
m_pri_bControlsAreEnabled = TRUE;
m_pub_fn_vEnableAllControls(FALSE);
}
((CButton *)GetDlgItem(IDC_CHECK_IA))->SetCheck(g_pclInterface->m_clDocument.m_bIAActivated);
((CButton *)GetDlgItem(IDC_CHECK_VAR))->SetCheck(g_pclInterface->m_clDocument.m_bVariablesActivated);
((CButton *)GetDlgItem(IDC_CHECK_CURRENT))->SetCheck(g_pclInterface->m_clDocument.m_bDisplayCurrentValue);
((CButton *)GetDlgItem(IDC_CHECK_INIT))->SetCheck(g_pclInterface->m_clDocument.m_bDisplayInitialValue);
//-----------------IR-------------------------
((CButton *)GetDlgItem(IDC_CHECK_IA))->EnableWindow(FALSE); //???
//--------------------------------------------
//Watch window initial state
((CButton *)GetDlgItem(IDC_CHECK_WATCH))->SetCheck(g_pclInterface->m_clDocument.m_bWatchActivated);
((CButton *)GetDlgItem(IDC_CHECK_SHOW_LINKS))->SetCheck(g_pclInterface->m_clDocument.m_pub_bMustShowLinks);
//////////////
//////////////
//Registers for TUT Module
TUT_M_vGetTutDll();
TUT_M_vRegisterControlID(IDC_BUTTON_ACTIONS, "OAc_ControlView_ButtonActions", TUT_e_Button);
TUT_M_vRegisterControlID(IDC_CHECK_WATCH, "OAc_ControlView_CheckWatch", TUT_e_Button);
TUT_M_vRegisterControlID(IDC_CHECK_IA, "OAc_ControlView_CheckIA", TUT_e_Button);
TUT_M_vRegisterControlID(IDC_CHECK_VAR, "OAc_ControlView_CheckVar", TUT_e_Button);
TUT_M_vRegisterControlID(IDC_CHECK_CURRENT, "OAc_ControlView_CheckCurrent", TUT_e_Button);
TUT_M_vRegisterControlID(IDC_CHECK_INIT, "OAc_ControlView_CheckInit", TUT_e_Button);
TUT_M_vRegisterControlID(IDC_BUTTON_HELP, "OAc_ControlView_ButtonHelp", TUT_e_Button);
TUT_M_vRegisterControlID(IDC_CHECK_SHOW_LINKS, "OAc_ControlView_CheckShowLinks", TUT_e_Button);
/* TUT_M_vRegisterControlID(IDC_RADIO_LEVEL_1, "OAc_ControlView_RadioLevel1", TUT_e_Button);
TUT_M_vRegisterControlID(IDC_RADIO_LEVEL_2, "OAc_ControlView_RadioLevel2", TUT_e_Button);
TUT_M_vRegisterControlID(IDC_RADIO_LEVEL_3, "OAc_ControlView_RadioLevel3", TUT_e_Button);
*/
//Stefan Dumitrean 14-07-98 ( OAC buttons )
// TUT_M_vRegisterControlID(IDC_CHECK_LEVEL_EXCLUSIVE, "OAc_ControlView_CheckLevelExclusive", TUT_e_Button);
//End Stefan Dumitrean 14-07-98 ( OAC buttons )
TUT_M_vRegisterControlID(IDC_BUTTON_SHOW_MODELS, "OAc_ControlView_ButtonShowModels", TUT_e_Button);
TUT_M_vRegisterControlID(IDC_BUTTON_SHOW_INSTANCES, "OAc_ControlView_ButtonShowInstances", TUT_e_Button);
TUT_M_vRegisterControlID(IDC_BUTTON_EDIT_MODEL, "OAc_ControlView_ButtonEditModel", TUT_e_Button);
TUT_M_vRegisterControlID(IDC_BUTTON_COPY_MODEL, "OAc_ControlView_ButtonCopyModel", TUT_e_Button);
// Shaitan => state list in the level
TUT_M_vRegisterControlID(IDC_BUTTON_GENERATE_STATELIST, "OAc_ControlView_ButtonGenerateStateList", TUT_e_Button);
// End Shaitan => state list in the level
TUT_M_vRegisterControlID(IDC_BUTTON_UNDO, "OAc_ControlView_ButtonUndo", TUT_e_Button);
TUT_M_vRegisterControlID(IDC_BUTTON_UNDO_ARROW, "OAc_ControlView_ButtonUndoList", TUT_e_Button);
TUT_M_vRegisterControlID(IDC_BUTTON_REDO, "OAc_ControlView_ButtonRedo", TUT_e_Button);
TUT_M_vRegisterControlID(IDC_BUTTON_REDO_ARROW, "OAc_ControlView_ButtonRedoList", TUT_e_Button);
TUT_M_vRegisterControlID(IDC_CHECK_ALWAYS_ACTIVE, "OAc_ControlView_ButtonAlwaysActive", TUT_e_Button);
TUT_M_vRegisterControlID(IDC_CLEAN_ALW_FILE, "OAc_ControlView_ButtonCleanAlwFile", TUT_e_Button);
// ANNECY MT - 19/11/98 {
TUT_M_vRegisterControlID(IDC_CHECK_IN_ALL_SUBMAPS, "OAc_ControlView_ButtonInAllSubMaps", TUT_e_Button);
// END ANNECY MT }
TUT_M_vRegisterControl(m_pclActorNameStatic->m_hWnd, "OAc_ControlView_StaticInstanceName", TUT_e_Window);
TUT_M_vRegisterControl(m_pclModelNameStatic->m_hWnd, "OAc_ControlView_StaticModelName", TUT_e_Window);
TUT_M_vRegisterControl(m_pclFamilyNameStatic->m_hWnd, "OAc_ControlView_StaticFamilyName", TUT_e_Window);
//End of Registers for TUT Module
//////////////
//------------------------------------------------------------
AfxSetResourceHandle( hOldInstance );
}
//*********************************************************************************
void EdActors_ActorsView::OnDestroy()
{
//////////////
//////////////
//UnRegisters for TUT Module
TUT_M_vGetTutDll();
TUT_M_vUnregisterControlID(IDC_BUTTON_ACTIONS);
TUT_M_vUnregisterControlID(IDC_CHECK_WATCH);
TUT_M_vUnregisterControlID(IDC_CHECK_IA);
TUT_M_vUnregisterControlID(IDC_CHECK_VAR);
TUT_M_vUnregisterControlID(IDC_CHECK_CURRENT);
TUT_M_vUnregisterControlID(IDC_CHECK_INIT);
TUT_M_vUnregisterControlID(IDC_BUTTON_HELP);
TUT_M_vUnregisterControlID(IDC_CHECK_SHOW_LINKS);
/*
TUT_M_vUnregisterControlID(IDC_RADIO_LEVEL_1);
TUT_M_vUnregisterControlID(IDC_RADIO_LEVEL_2);
TUT_M_vUnregisterControlID(IDC_RADIO_LEVEL_3);
TUT_M_vUnregisterControlID(IDC_CHECK_LEVEL_EXCLUSIVE);
*/
TUT_M_vUnregisterControlID(IDC_BUTTON_SHOW_MODELS);
TUT_M_vUnregisterControlID(IDC_BUTTON_SHOW_INSTANCES);
TUT_M_vUnregisterControlID(IDC_BUTTON_EDIT_MODEL);
TUT_M_vUnregisterControlID(IDC_BUTTON_COPY_MODEL);
// Shaitan => state list in the level
TUT_M_vUnregisterControlID(IDC_BUTTON_GENERATE_STATELIST);
// End Shaitan => state list in the level
TUT_M_vUnregisterControlID(IDC_BUTTON_UNDO);
TUT_M_vUnregisterControlID(IDC_BUTTON_UNDO_ARROW);
TUT_M_vUnregisterControlID(IDC_BUTTON_REDO);
TUT_M_vUnregisterControlID(IDC_BUTTON_REDO_ARROW);
TUT_M_vUnregisterControlID(IDC_CHECK_ALWAYS_ACTIVE);
TUT_M_vUnregisterControlID(IDC_CLEAN_ALW_FILE);
// ANNECY MT - 19/11/98 {
TUT_M_vUnregisterControlID(IDC_CHECK_IN_ALL_SUBMAPS);
// END ANNECY MT }
TUT_M_vUnregisterControl(m_pclActorNameStatic->m_hWnd);
TUT_M_vUnregisterControl(m_pclModelNameStatic->m_hWnd);
TUT_M_vUnregisterControl(m_pclFamilyNameStatic->m_hWnd);
//End of UnRegisters for TUT Module
//////////////
CFormView::OnDestroy();
}
//*********************************************************************************
// Updates editor values with motor values and displays the Actor's charac.
void EdActors_ActorsView::m_fn_vDisplayActor(EdActors_EditorActor *pclNewSelectedActor)
{
//Sets the names in edit box
if ( pclNewSelectedActor != NULL )
{
m_pub_fn_vEnableAllControls(TRUE);
//Family name
if ( pclNewSelectedActor->m_pclActor->m_pub_fn_pclGetFamily() != NULL )
m_pclFamilyNameStatic->m_fn_vSetTextToDisplay(pclNewSelectedActor->m_pclActor->m_pub_fn_pclGetFamily()->GetName());
else
m_pclFamilyNameStatic->m_fn_vSetTextToDisplay("< Unknown >");
if ( pclNewSelectedActor ->m_fn_bIsAnInstance() )
{
//Model name (for Instance)
if ( ((EdActors_EditorActorInstance *)pclNewSelectedActor)->m_fn_pclGetModel() != NULL )
m_pub_fn_vUpdateActorNameForModif(((EdActors_EditorActorInstance *)pclNewSelectedActor)->m_fn_pclGetModel());
else
m_pclModelNameStatic->m_fn_vSetTextToDisplay("< Unknown >");
//Actor's name
m_pclActorNameStatic->ShowWindow(SW_SHOW);
GetDlgItem(IDC_BUTTON_EDIT_MODEL)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_STATIC_INSTANCE)->ShowWindow(SW_SHOW);
m_pub_fn_vUpdateActorNameForModif(pclNewSelectedActor->m_pclActor);
//Number of Instances in Model
long lNumber = pclNewSelectedActor->m_pclActor->m_fn_pclGetModel()->m_fn_pclGetEditorModel()->m_clInstancesList.GetCount();
CString csNumber;
csNumber.Format("%ld", lNumber);
GetDlgItem(IDC_BUTTON_SHOW_INSTANCES)->SetWindowText(csNumber);
if ( lNumber < 1 )
GetDlgItem(IDC_BUTTON_SHOW_INSTANCES)->EnableWindow(FALSE);
else
GetDlgItem(IDC_BUTTON_SHOW_INSTANCES)->EnableWindow(TRUE);
}
else
{
//Model name (for Model)
m_pub_fn_vUpdateActorNameForModif(pclNewSelectedActor->m_pclActor);
//Actor's name
m_pclActorNameStatic->ShowWindow(SW_HIDE);
GetDlgItem(IDC_BUTTON_EDIT_MODEL)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_INSTANCE)->ShowWindow(SW_HIDE);
//Number of Instances in Model
long lNumber = pclNewSelectedActor->m_pclActor->m_fn_pclGetEditorModel()->m_clInstancesList.GetCount();
CString csNumber;
csNumber.Format("%ld", lNumber);
GetDlgItem(IDC_BUTTON_SHOW_INSTANCES)->SetWindowText(csNumber);
if ( lNumber < 1 )
GetDlgItem(IDC_BUTTON_SHOW_INSTANCES)->EnableWindow(FALSE);
else
GetDlgItem(IDC_BUTTON_SHOW_INSTANCES)->EnableWindow(TRUE);
}
//Number of Models in Family
//Gets the list of Models which are childs of the Family
CPA_List<CPA_BaseObject> clListOfModels;
g_pclInterface->GetMainWorld()->fn_lFindObjects(&clListOfModels,
"",
C_szActorModelTypeName,
pclNewSelectedActor->m_pclActor->m_pub_fn_pclGetFamily());
long lNumber = clListOfModels.GetCount();
CString csNumber;
csNumber.Format("%ld", lNumber);
GetDlgItem(IDC_BUTTON_SHOW_MODELS)->SetWindowText(csNumber);
if ( lNumber < 1 )
GetDlgItem(IDC_BUTTON_SHOW_INSTANCES)->EnableWindow(FALSE);
else
GetDlgItem(IDC_BUTTON_SHOW_INSTANCES)->EnableWindow(TRUE);
}
else
{
m_pclActorNameStatic->m_fn_vSetTextToDisplay("Empty list ...");
m_pclFamilyNameStatic->m_fn_vSetTextToDisplay("");
m_pclModelNameStatic->m_fn_vSetTextToDisplay("");
m_pub_fn_vEnableAllControls(FALSE);
}
m_fn_vRefreshNavigationButtons();
m_pclActorNameStatic->InvalidateRect(NULL);
m_pclModelNameStatic->InvalidateRect(NULL);
m_pclFamilyNameStatic->InvalidateRect(NULL);
m_fn_vUpdateUndoRedoButtons();
m_fn_pclGetDocument()->m_pclMiniStrucView->m_fn_vDisplayActor(pclNewSelectedActor);
}
//Stefan Dumitrean 14-07-98 ( OAC buttons )
//*************************************************************************
/*
void EdActors_ActorsView::OnButtonLevel1()
{
// if ( !m_fn_pclGetDocument()->m_aCurrentOACButtonsPressed[0])
// {
m_fn_pclGetDocument()->m_aCurrentOACButtonsPressed[0] = !m_fn_pclGetDocument()->m_aCurrentOACButtonsPressed[0];
m_fn_pclGetDocument()->m_pclMiniStrucView->m_fn_vUpdateTree();
//-----------------IR-------------------------
if(m_fn_pclGetDocument()->m_pclDesignerVariablesView)
EDAC_fn_vDesignerVariableView_UpdateDisplay(m_fn_pclGetDocument()->m_pclDesignerVariablesView);
//--------------------------------------------
// }
}
*/
//*************************************************************************
/*
void EdActors_ActorsView::OnButtonLevel2()
{
// if ( !m_fn_pclGetDocument()->m_aCurrentOACButtonsPressed[1])
// {
m_fn_pclGetDocument()->m_aCurrentOACButtonsPressed[1] = !m_fn_pclGetDocument()->m_aCurrentOACButtonsPressed[1];
m_fn_pclGetDocument()->m_pclMiniStrucView->m_fn_vUpdateTree();
//-----------------IR-------------------------
if(m_fn_pclGetDocument()->m_pclDesignerVariablesView)
EDAC_fn_vDesignerVariableView_UpdateDisplay(m_fn_pclGetDocument()->m_pclDesignerVariablesView);
//--------------------------------------------
// }
}
*/
//*************************************************************************
/*
void EdActors_ActorsView::OnButtonLevel3()
{
// if ( !m_fn_pclGetDocument()->m_aCurrentOACButtonsPressed[2])
// {
m_fn_pclGetDocument()->m_aCurrentOACButtonsPressed[2] = !m_fn_pclGetDocument()->m_aCurrentOACButtonsPressed[2];
if ( m_fn_pclGetDocument()->m_aCurrentOACButtonsPressed[2] )
GetDlgItem( IDC_RADIO_LEVEL_3 )->SetWindowText("Curr");
else
GetDlgItem( IDC_RADIO_LEVEL_3 )->SetWindowText("Init");
m_fn_pclGetDocument()->m_pclMiniStrucView->m_fn_vUpdateTree();
//-----------------IR-------------------------
if(m_fn_pclGetDocument()->m_pclDesignerVariablesView)
EDAC_fn_vDesignerVariableView_UpdateDisplay(m_fn_pclGetDocument()->m_pclDesignerVariablesView);
//--------------------------------------------
// }
}
*/
/*
//*************************************************************************
void EdActors_ActorsView::OnCheckLevelExclusive()
{
m_fn_pclGetDocument()->m_bExclusiveLevel = !(m_fn_pclGetDocument()->m_bExclusiveLevel);
m_fn_pclGetDocument()->m_pclMiniStrucView->m_fn_vUpdateTree();
//-----------------IR-------------------------
if(m_fn_pclGetDocument()->m_pclDesignerVariablesView)
EDAC_fn_vDesignerVariableView_UpdateDisplay(m_fn_pclGetDocument()->m_pclDesignerVariablesView);
//--------------------------------------------
}
*/
//End Stefan Dumitrean 14-07-98 ( OAC buttons )
//*************************************************************************
void EdActors_ActorsView::OnButtonWatch()
{
if ( g_pclInterface->m_clDocument.m_pub_bWatchWindowIsVisible )
{
WAW_fn_vHideWatchWindow();
g_pclInterface->m_clDocument.m_pub_bWatchWindowIsVisible = FALSE;
}
else
{
WAW_fn_vDisplayWatchWindow();
g_pclInterface->m_clDocument.m_pub_bWatchWindowIsVisible = TRUE;
// CPA2 ASilvescu 98-05-08
g_pclInterface->m_fn_LoadWatchData();
// End CPA2 ASilvescu 98-05-08
}
}
//*************************************************************************
void EdActors_ActorsView::m_fn_vRefreshNavigationButtons()
{
GetDlgItem(IDC_BUTTON_EDIT_MODEL)->EnableWindow( (m_fn_pclGetDocument()->m_pclSelectedActor != NULL )
&& (m_fn_pclGetDocument()->m_pclSelectedActor->m_fn_bIsAnInstance()) );
}
//*************************************************************************
EdActors_MyDocument *EdActors_ActorsView::m_fn_pclGetDocument()
{
return &(g_pclInterface->m_clDocument);
}
//*************************************************************************
//Definition for Tool Tips texts
BOOL EdActors_ActorsView::OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
{
TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
UINT nID =pNMHDR->idFrom;
nID = ::GetDlgCtrlID((HWND)nID);
BOOL bReturn = FALSE;
switch ( nID )
{
case IDC_CHECK_WATCH:
strcpy(pTTT->szText,"Display / Hide Watch");
break;
case IDC_CHECK_IA:
strcpy(pTTT->szText,"Display / Hide IA window");
break;
case IDC_CHECK_VAR:
strcpy(pTTT->szText,"Display / Hide Variables");
break;
case IDC_CHECK_CURRENT:
strcpy(pTTT->szText,"Display / Hide Current Values");
break;
case IDC_CHECK_INIT:
strcpy(pTTT->szText,"Display / Hide Initial Values");
break;
/*
case IDC_RADIO_LEVEL_1:
//Stefan Dumitrean 14-07-98 ( OAC buttons )
// strcpy(pTTT->szText,"Level 1 Data");
strcpy(pTTT->szText,"Display/Hide Behaviour Data");
//End Stefan Dumitrean 14-07-98 ( OAC buttons )
break;
case IDC_RADIO_LEVEL_2:
//Stefan Dumitrean 14-07-98 ( OAC buttons )
// if ( m_fn_pclGetDocument()->m_bExclusiveLevel )
// strcpy(pTTT->szText,"Level 2 Data");
// else
// strcpy(pTTT->szText,"Level 1 and 2 Data");
strcpy(pTTT->szText,"Display/Hide Variables Data");
//End Stefan Dumitrean 14-07-98 ( OAC buttons )
break;
case IDC_RADIO_LEVEL_3:
//Stefan Dumitrean 14-07-98 ( OAC buttons )
// if ( m_fn_pclGetDocument()->m_bExclusiveLevel )
// strcpy(pTTT->szText,"Level 3 Data");
// else
// strcpy(pTTT->szText,"Level 1, 2 and 3 Data");
strcpy(pTTT->szText,"Current/Initial Values Data");
//End Stefan Dumitrean 14-07-98 ( OAC buttons )
break;
*/
//Stefan Dumitrean 14-07-98 ( OAC buttons )
// case IDC_CHECK_LEVEL_EXCLUSIVE:
// strcpy(pTTT->szText,"Only the selected Level / All lower levels");
// break;
//End Stefan Dumitrean 14-07-98 ( OAC buttons )
case IDC_BUTTON_UNDO:
strcpy(pTTT->szText,"Undo");
break;
case IDC_BUTTON_UNDO_ARROW:
strcpy(pTTT->szText,"Multiple Undo");
break;
case IDC_BUTTON_REDO:
strcpy(pTTT->szText,"Redo");
break;
case IDC_BUTTON_REDO_ARROW:
strcpy(pTTT->szText,"Multiple Redo");
break;
case IDC_BUTTON_SHOW_MODELS:
strcpy(pTTT->szText,"Shows all Models of the Family");
break;
case IDC_BUTTON_EDIT_MODEL:
strcpy(pTTT->szText,"Edits the Model of this Instance");
break;
case IDC_BUTTON_SHOW_INSTANCES:
strcpy(pTTT->szText,"Shows all Instances of the Model");
break;
case IDC_BUTTON_ACTIONS:
strcpy(pTTT->szText,"Edits Family's Actions");
break;
case IDC_CHECK_SHOW_LINKS:
strcpy(pTTT->szText,"Shows or hides links controls for each Data");
break;
case IDC_BUTTON_COPY_MODEL:
if ( g_pclInterface->m_clDocument.m_pub_fn_bCurrentModeIsInstance() )
strcpy(pTTT->szText,"Copy Instance");
else if ( g_pclInterface->m_clDocument.m_pub_fn_bCurrentModeIsModel() )
strcpy(pTTT->szText,"Copy Model");
else if ( g_pclInterface->m_clDocument.m_pub_fn_bCurrentModeIsAlwaysModel() )
strcpy(pTTT->szText,"Copy Always Model");
break;
// Shaitan => state list in the level
case IDC_BUTTON_GENERATE_STATELIST:
// Shaitan => module list in the level
strcpy(pTTT->szText,"Generate or update the list of states and POs used by the family in this level");
// End Shaitan => module list in the level
break;
// End Shaitan => state list in the level
case IDC_BUTTON_HELP:
strcpy(pTTT->szText,"Help on fields");
break;
case IDC_CHECK_ALWAYS_ACTIVE:
strcpy (pTTT->szText,"Actor always active");
break;
case IDC_CLEAN_ALW_FILE:
strcpy (pTTT->szText,"Clean the ALW file");
break;
case IDC_CHECK_IN_ALL_SUBMAPS:
strcpy (pTTT->szText,"Actor in all SubMaps");
break;
default:
strcpy(pTTT->szText,"");
break;
};
return (TRUE);
}
//*************************************************************************
void EdActors_ActorsView::OnButtonSetup()
{
BOOL bOldValue = m_fn_pclGetDocument()->m_bMustDisplayUnallocatedMS;
EdActors_EditorSetupDialog dial(&g_oBaseFrame);
if ( dial.DoModal() ==IDOK )
{
//Refreshes Editor's actors' view
InvalidateRect(NULL);
//Prepares and Refreshes editor's MS view
if ( (m_fn_pclGetDocument()->m_bMustDisplayUnallocatedMS != bOldValue)
&& (m_fn_pclGetDocument()->m_bMustDisplayUnallocatedMS)
)
{
POSITION pos = m_fn_pclGetDocument()->m_pclCurrentMiniStructureList->GetHeadPosition();
while ( pos != NULL )
m_fn_pclGetDocument()->m_pclCurrentMiniStructureList->GetNext(pos)->m_fn_vShowAllControls();
}
m_fn_pclGetDocument()->m_pclMiniStrucView->m_fn_vUpdateTree();
//-----------------IR-------------------------
//Refreshes editor's IR view
m_fn_pclGetDocument()->m_pclDesignerVariablesView->InvalidateRect(NULL);
//--------------------------------------------
}
}
//*************************************************************************
void EdActors_ActorsView::OnCheckModels()
{
g_oFrameGest.mfn_vSetRefresh(FALSE);
//-----------------IR-------------------------
//Swaps between Models' window and IR Editor
if ( ((CButton *)GetDlgItem(IDC_CHECK_IA))->GetCheck() )
{
//SHA-TEMP
GetDlgItem(IDC_CHECK_VAR)->EnableWindow(TRUE);
EDAC_fn_vShowAIEditor();
if(m_fn_pclGetDocument()->m_pclDesignerVariablesView)
EDAC_fn_vDesignerVariableView_UpdateState(m_fn_pclGetDocument()->m_pclDesignerVariablesView, !((CButton *) GetDlgItem(IDC_CHECK_VAR))->GetCheck());
if (m_fn_pclGetDocument()->m_bAIFirstTime)
g_oFrameGest.ma_p_oWinArray[2][3]->mfn_vHeightWindow(m_fn_pclGetDocument()->m_ulAIViewHeight);
m_fn_pclGetDocument()->m_bAIFirstTime = FALSE;
g_pclInterface->m_clDocument.m_fn_vDisplayActorIA();
// int nOldHeight=EDAC_fn_lDesignerVariableView_GetOldHeight(m_fn_pclGetDocument()->m_pclDesignerVariablesView);
// g_pclInterface->m_pclCaracMainFrame->SetPaneSize(C_ROW_INDEX_DES_VAR,nOldHeight);
}
else
{
//SHA-TEMP
GetDlgItem(IDC_CHECK_VAR)->EnableWindow(FALSE);
EDAC_fn_vHideAIEditor();
g_oFrameGest.mfn_vActivateWindow(g_pclInterface->GetInterface()->GetModelFrame());
if (m_fn_pclGetDocument()->m_bModelFirstTime)
g_pclInterface->GetInterface()->GetModelFrame()->mfn_vHeightWindow(m_fn_pclGetDocument()->m_ulModelViewHeight);
m_fn_pclGetDocument()->m_bModelFirstTime = FALSE;
// int nOldHeight=g_pclInterface->m_pclCaracMainFrame->GetPaneSize(C_ROW_INDEX_DES_VAR);
// EDAC_fn_vDesignerVariableView_SetOldHeight(m_fn_pclGetDocument()->m_pclDesignerVariablesView,nOldHeight);
// g_pclInterface->m_pclCaracMainFrame->SetPaneSize(C_ROW_INDEX_DES_VAR,C_wCaptionHeight);
}
//--------------------------------------------
g_oFrameGest.mfn_vSetRefresh(TRUE);
}
//*******************************************************************************
void EdActors_ActorsView::OnCheckVariables()
{
//-----------------IR-------------------------
if(m_fn_pclGetDocument()->m_pclDesignerVariablesView)
EDAC_fn_vDesignerVariableView_UpdateState(m_fn_pclGetDocument()->m_pclDesignerVariablesView, !((CButton *) GetDlgItem(IDC_CHECK_VAR))->GetCheck());
//--------------------------------------------
}
//*******************************************************************************
void EdActors_ActorsView::OnCheckCurrent()
{
CButton *pCurrent = (CButton *) GetDlgItem(IDC_CHECK_CURRENT);
CButton *pInitial = (CButton *) GetDlgItem(IDC_CHECK_INIT);
if (pCurrent->GetCheck())
m_fn_pclGetDocument()->m_bDisplayCurrentValue = TRUE;
else
{
m_fn_pclGetDocument()->m_bDisplayCurrentValue = FALSE;
if (!m_fn_pclGetDocument()->m_bDisplayInitialValue)
{
m_fn_pclGetDocument()->m_bDisplayInitialValue = TRUE;
pInitial->SetCheck(TRUE);
}
}
m_fn_pclGetDocument()->m_pclMiniStrucView->m_fn_vUpdateTree();
//-----------------IR-------------------------
if(m_fn_pclGetDocument()->m_pclDesignerVariablesView)
EDAC_fn_vDesignerVariableView_UpdateDisplay(m_fn_pclGetDocument()->m_pclDesignerVariablesView);
//--------------------------------------------
}
//*******************************************************************************
void EdActors_ActorsView::OnCheckInitial()
{
CButton *pCurrent = (CButton *) GetDlgItem(IDC_CHECK_CURRENT);
CButton *pInitial = (CButton *) GetDlgItem(IDC_CHECK_INIT);
if (pInitial->GetCheck())
m_fn_pclGetDocument()->m_bDisplayInitialValue = TRUE;
else
{
m_fn_pclGetDocument()->m_bDisplayInitialValue = FALSE;
if (!m_fn_pclGetDocument()->m_bDisplayCurrentValue)
{
m_fn_pclGetDocument()->m_bDisplayCurrentValue = TRUE;
pCurrent->SetCheck(TRUE);
}
}
m_fn_pclGetDocument()->m_pclMiniStrucView->m_fn_vUpdateTree();
//-----------------IR-------------------------
if(m_fn_pclGetDocument()->m_pclDesignerVariablesView)
EDAC_fn_vDesignerVariableView_UpdateDisplay(m_fn_pclGetDocument()->m_pclDesignerVariablesView);
//--------------------------------------------
}
//*******************************************************************************
void EdActors_ActorsView::m_fn_vUpdatePagesButtons(char cPage)
{
ASSERT( (cPage >= 0) && (cPage < m_fn_pclGetDocument()->m_clListOfMSLists.GetCount()) );
EdActors_MSGroupButton *pclCurrentButton;
POSITION pos = m_clListOfGroupButtons.GetHeadPosition();
while ( pos != NULL )
{
pclCurrentButton = m_clListOfGroupButtons.GetNext(pos);
if ( cPage == pclCurrentButton->m_fn_ucGetListIndex() )
{
pclCurrentButton->SetCheck(TRUE);
}
else
pclCurrentButton->SetCheck(FALSE);
}
}
//*******************************************************************************
void EdActors_ActorsView::m_fn_vUpdateActorName()
{
if (m_fn_pclGetDocument()->m_pclSelectedActor)
m_pub_fn_vUpdateActorNameForModif(m_fn_pclGetDocument()->m_pclSelectedActor->m_pclActor);
}
//*************************************************************************
BOOL EdActors_ActorsView::OnHelpInfo(HELPINFO* pHelpInfo)
{
DWORD lHelpId = IDH_ACTORS_VIEW;
UINT uiCommand = HELP_CONTEXT;
//If necessary, searches for the window under mouse
if ( !(g_pclInterface->m_clDocument.m_bMustDisplayHelpOnActiveView) )
{
CWnd *pclWindow = WindowFromPoint(pHelpInfo->MousePos);
if ( pclWindow == (CWnd *)g_pclInterface->m_clDocument.m_pclActorsView )
lHelpId = IDH_ACTORS_VIEW;
else if ( pclWindow == (CWnd *)g_pclInterface->m_clDocument.m_pclMiniStrucView )
lHelpId = IDH_MS_VIEW;
else
{
lHelpId = 0;
uiCommand = HELP_FINDER;
}
}
::WinHelp(m_hWnd,
LPCTSTR(g_pclInterface->m_clDocument.m_csHelpFileNameAndPath),
uiCommand,
lHelpId);
return FALSE;
}
//////////////////////////////
// Responses to Popup Menus //
//////////////////////////////
//*******************************************************************************
//Renames a Model
///////////////////////////////////////////////////////////
// NOT TO BE CALLED !! This doesnot work properly !! //
///////////////////////////////////////////////////////////
void EdActors_ActorsView::m_fn_vRenameModel()
{
EdActors_EditorActor *pclEdActor = m_fn_pclGetDocument()->m_pclSelectedActor;
ASSERT( !pclEdActor->m_fn_bIsAnInstance() );
CString csOldName = pclEdActor->m_fn_csGetActorName();
EdActors_ActorNameChangeDialog dial(csOldName, &g_oBaseFrame);
if (dial.DoModal() == IDOK )
{
//Sets actor's name
if ( pclEdActor->m_pclActor->fn_eRename(dial.m_csNewName) == E_mc_None )
{
pclEdActor->m_pclActor->m_pub_fn_pclGetSuperObject()->SetModelName(dial.m_csNewName);
//Refreshes all (in Editor)
m_fn_pclGetDocument()->m_fn_vUpdateName();
//Refreshes all (out of Editor)
//Removes old Model...
EDT_ModelsByType *pclModelList = g_pclInterface->GetInterface()->GetModelsWithTypeName(g_c_csActorModelType);
EDT_Model *pclModel = pclModelList->GetModelWithName(csOldName);
EDT_Model *pclNewModel = new EDT_Model( pclModel->m_pObjectDLL,
pclModel->m_csTypeName,
dial.m_csNewName,
pclModel->m_csBitmapName,
g_pclInterface->GetInterface());
g_pclInterface->GetInterface()->fn_bRemoveAModel(csOldName, g_c_csActorModelType);
//...then adds the new one
g_pclInterface->GetInterface()->fn_bAddANewModel(pclNewModel, g_c_csActorModelType, g_pclInterface);
//TO BE DONE...
//Updates Instances and Level
//....
}
}
}
//*******************************************************************************
//Removes a Model
void EdActors_ActorsView::m_fn_vRemoveModel()
{
}
//*******************************************************************************
//Renames an Instance
void EdActors_ActorsView::m_fn_vRenameInstance()
{
EdActors_EditorActor *pclEdActor = m_fn_pclGetDocument()->m_pclSelectedActor;
ASSERT( pclEdActor->m_fn_bIsAnInstance() );
CString csOldName = pclEdActor->m_fn_csGetActorName();
//ANNECY Shaitan Correction 18/03/98 {
HINSTANCE hOldInstance = AfxGetResourceHandle();
AfxSetResourceHandle( g_stActorEditorIdentity.hModule );
//ENDANNECY Shaitan Correction }
EdActors_ActorNameChangeDialog dial(csOldName, &g_oBaseFrame);
if (dial.DoModal() == IDOK )
{
//Sets actor's name
pclEdActor->m_pclActor->m_fn_bRename(dial.m_csNewName);
}
//ANNECY Shaitan Correction 18/03/98 {
AfxSetResourceHandle( hOldInstance );
//ENDANNECY Shaitan Correction }
}
//*******************************************************************************
void EdActors_ActorsView::m_fn_vSetInstancePositionAsInitial()
{
EdActors_EditorActor *pclEdActor = m_fn_pclGetDocument()->m_pclSelectedActor;
ASSERT( pclEdActor->m_fn_bIsAnInstance() );
CPA_Actor *pclActor = pclEdActor->m_pclActor;
g_pclInterface->m_clDocument.m_fn_vSetCurrentActorPositionAsInitial(pclActor);
}
//*******************************************************************************
void EdActors_ActorsView::m_fn_vOnMenuAlways()
{
CPA_Actor *pclSelectedActor = m_fn_pclGetDocument()->m_pclSelectedActor->m_pclActor;
ERROR_ASSERT( pclSelectedActor->m_fn_bIsAnInstance() );
ERROR_ASSERT( !pclSelectedActor->m_fn_bIsAPrincipalActor() );
ERROR_ASSERT( !pclSelectedActor->m_fn_bIsTheCurrentMotorCamera() );
//ERROR_ASSERT( !pclSelectedActor->m_fn_bIsTheWorldActor() );
//If always mode and actor -> not always, change it
if (pclSelectedActor->m_fn_bIsAnAlways() && m_fn_pclGetDocument()->m_pub_fn_bCurrentModeIsAlwaysModel())
m_fn_pclGetDocument()->m_fn_vSetMode(ED_ACTORS_eDisplayMode_Instance);
pclSelectedActor->GetEditor()->M_GetEditManager()->AskFor(new CPA_MakeAlways(m_fn_pclGetDocument(), pclSelectedActor, !pclSelectedActor->m_fn_bIsAnAlways()));
// pclSelectedActor->m_fn_vMakeAlways(!pclSelectedActor->m_fn_bIsAnAlways());
}
//*******************************************************************************
void EdActors_ActorsView::m_fn_vOnMenuCommon()
{
CPA_Actor *pclSelectedActor = m_fn_pclGetDocument()->m_pclSelectedActor->m_pclActor;
ERROR_ASSERT( pclSelectedActor->m_fn_bIsAnInstance() );
pclSelectedActor->m_pub_fn_vSetCommon(!pclSelectedActor->m_pub_fn_bIsCommon());
}
//*******************************************************************************
void EdActors_ActorsView::m_fn_vOnMenuIntoFix()
{
CPA_Actor *pclSelectedActor = m_fn_pclGetDocument()->m_pclSelectedActor->m_pclActor;
ERROR_ASSERT( pclSelectedActor->m_fn_bIsAnInstance() );
pclSelectedActor->m_pub_fn_vSetInFix(!pclSelectedActor->m_pub_fn_bIsInFix());
}
//*******************************************************************************
void EdActors_ActorsView::OnAlwaysActive()
{
CPA_Actor *pclSelectedActor = m_fn_pclGetDocument()->m_pclSelectedActor->m_pclActor;
ERROR_ASSERT( pclSelectedActor->m_fn_bIsAnInstance() );
pclSelectedActor->m_pub_fn_vSetAlwaysActive(!pclSelectedActor->m_pub_fn_bIsAlwaysActive());
((CButton *)GetDlgItem(IDC_CHECK_ALWAYS_ACTIVE))->SetCheck (pclSelectedActor->m_pub_fn_bIsAlwaysActive() ? 1 : 0);
}
// ANNECY MT - 19/11/98 {
//*******************************************************************************
void EdActors_ActorsView::OnInAllSubMaps()
{
CPA_Actor *pclSelectedActor = m_fn_pclGetDocument()->m_pclSelectedActor->m_pclActor;
ERROR_ASSERT( pclSelectedActor->m_fn_bIsAnInstance() );
pclSelectedActor->m_pub_fn_vSetInAllSubMaps(!pclSelectedActor->m_pub_fn_bIsInAllSubMaps());
((CButton *)GetDlgItem(IDC_CHECK_IN_ALL_SUBMAPS))->SetCheck (pclSelectedActor->m_pub_fn_bIsInAllSubMaps() ? 1 : 0);
}
// END ANNECY MT }
//*************************************************************************
//*************************************************************************
// Undo / Redo
//*************************************************************************
void EdActors_ActorsView::OnButtonRedo()
{
EdActors_EditorActor *pclCurrentActor = m_fn_pclGetDocument()->m_pclSelectedActor;
if ( pclCurrentActor->m_clUndoManager.CanRedo() )
{
if ( !pclCurrentActor->m_clUndoManager.Redo() )
{
CString csMessage = "Actors Editor can not Redo !";
EdActors_InformationDialog InfoDial(&g_oBaseFrame, csMessage);
InfoDial.DoModal();
}
}
m_fn_vUpdateUndoRedoButtons();
}
//*************************************************************************
void EdActors_ActorsView::OnButtonUndo()
{
}
//*************************************************************************
void EdActors_ActorsView::m_fn_vUpdateUndoRedoButtons()
{
EdActors_EditorActor *pclCurrentActor = m_fn_pclGetDocument()->m_pclSelectedActor;
if ( pclCurrentActor != NULL )
{
if ( !pclCurrentActor->m_clUndoManager.CanUndo() )
{
GetDlgItem(IDC_BUTTON_UNDO)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_UNDO_ARROW)->EnableWindow(FALSE);
}
else
{
GetDlgItem(IDC_BUTTON_UNDO_ARROW)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_UNDO)->EnableWindow(TRUE);
}
if ( !pclCurrentActor->m_clUndoManager.CanRedo() )
{
GetDlgItem(IDC_BUTTON_REDO_ARROW)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_REDO)->EnableWindow(FALSE);
}
else
{
GetDlgItem(IDC_BUTTON_REDO_ARROW)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_REDO)->EnableWindow(TRUE);
}
}
else
{
GetDlgItem(IDC_BUTTON_UNDO)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_UNDO_ARROW)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_REDO)->EnableWindow(FALSE);
}
}
//*************************************************************************
void EdActors_ActorsView::OnButtonUndoArrow()
{
HICON hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_UNDO_ARROW_UP);
((CButton *)GetDlgItem(IDC_BUTTON_UNDO_ARROW))->SetIcon(hIcon);
CRect crUndoButtonRect;
GetDlgItem(IDC_BUTTON_UNDO)->GetWindowRect(crUndoButtonRect);
CPoint clPoint;
clPoint.x = crUndoButtonRect.left;
clPoint.y = crUndoButtonRect.bottom;
EdActors_UndoRedoListDialog dial(clPoint,
EdActors_UndoRedoListDialog::EDCAR_UNDOREDO_LIST_TYPE_UNDO,
&g_oBaseFrame);
dial.DoModal();
hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_UNDO_ARROW_DOWN);
((CButton *)GetDlgItem(IDC_BUTTON_UNDO_ARROW))->SetIcon(hIcon);
}
//*************************************************************************
void EdActors_ActorsView::OnButtonRedoArrow()
{
HICON hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_UNDO_ARROW_UP);
((CButton *)GetDlgItem(IDC_BUTTON_REDO_ARROW))->SetIcon(hIcon);
CRect crUndoButtonRect;
GetDlgItem(IDC_BUTTON_REDO)->GetWindowRect(crUndoButtonRect);
CPoint clPoint;
clPoint.x = crUndoButtonRect.left;
clPoint.y = crUndoButtonRect.bottom;
EdActors_UndoRedoListDialog dial(clPoint,
EdActors_UndoRedoListDialog::EDCAR_UNDOREDO_LIST_TYPE_REDO,
&g_oBaseFrame);
dial.DoModal();
hIcon = AfxGetApp()->LoadIcon(IDI_CAR_BUTTON_UNDO_ARROW_DOWN);
((CButton *)GetDlgItem(IDC_BUTTON_REDO_ARROW))->SetIcon(hIcon);
}
//*************************************************************************
void EdActors_ActorsView::OnButtonShowModels()
{
//Shows all Models of the current Family
if ( m_fn_pclGetDocument()->m_pclSelectedActor != NULL )
{
//Opens a box with all Models of the Family
CPA_Family *pclFamily = m_fn_pclGetDocument()->m_pclSelectedActor->m_pclActor->m_pub_fn_pclGetFamily();
CRect crButtonRect;
GetDlgItem(IDC_BUTTON_SHOW_MODELS)->GetWindowRect(crButtonRect);
EdActors_Dialog_ActorChoice dial(pclFamily, CPoint(crButtonRect.left, crButtonRect.bottom + 1));
if ( (dial.DoModal() == IDOK) && (dial.m_pclSelectedActor != NULL) )
m_fn_pclGetDocument()->m_fn_vDisplayActor(dial.m_pclSelectedActor, ED_ACTORS_eModeOfActorSelection_InActorsView);
}
}
//*************************************************************************
void EdActors_ActorsView::OnButtonEditModel()
{
if ( m_fn_pclGetDocument()->m_pclSelectedActor != NULL )
{
//Edits the Model of the Instance
ERROR_ASSERT( m_fn_pclGetDocument()->m_pclSelectedActor->m_fn_bIsAnInstance() );
EdActors_EditorActor *pclNewSelectedActor = m_fn_pclGetDocument()->m_pclSelectedActor->
m_pclActor->m_fn_pclGetModel()->m_fn_pclGetEditorActor();
m_fn_pclGetDocument()->m_fn_vDisplayActor(pclNewSelectedActor, ED_ACTORS_eModeOfActorSelection_InActorsView);
}
}
//*************************************************************************
void EdActors_ActorsView::OnButtonShowInstances()
{
if ( m_fn_pclGetDocument()->m_pclSelectedActor != NULL )
{
//Opens a box with all instances of the Model
CPA_Actor *pclModel;
if ( m_fn_pclGetDocument()->m_pclSelectedActor->m_fn_bIsAnInstance() )
pclModel = m_fn_pclGetDocument()->m_pclSelectedActor->m_pclActor->m_fn_pclGetModel();
else
pclModel = m_fn_pclGetDocument()->m_pclSelectedActor->m_pclActor;
CRect crButtonRect;
GetDlgItem(IDC_BUTTON_SHOW_INSTANCES)->GetWindowRect(crButtonRect);
EdActors_Dialog_ActorChoice dial(pclModel, CPoint(crButtonRect.left, crButtonRect.bottom + 1));
if ( (dial.DoModal() == IDOK) && (dial.m_pclSelectedActor != NULL) )
m_fn_pclGetDocument()->m_fn_vDisplayActor(dial.m_pclSelectedActor, ED_ACTORS_eModeOfActorSelection_InActorsView);
}
}
//*************************************************************************
void EdActors_ActorsView::OnButtonActions()
{
//Calls Action DLL
CPA_ToolDLLBase *pclActionDLL = g_pclInterface->GetMainWorld()->GetToolDLLWithName(C_szDLLActionName);
if(m_fn_pclGetDocument()->m_pclSelectedActor!=NULL)
{
CPA_Actor *pclCurrentActor = m_fn_pclGetDocument()->m_pclSelectedActor->m_pclActor;
ERROR_ASSERT( pclActionDLL != NULL );
ERROR_ASSERT( pclCurrentActor != NULL );
ERROR_ASSERT( pclCurrentActor->m_pub_fn_pclGetFamily() != NULL );
if ( pclActionDLL != NULL )
{
CPA_List<CPA_BaseObject> pclBaseObjectList;
pclBaseObjectList.AddTail(pclCurrentActor->m_pub_fn_pclGetFamily());
g_pclInterface->GetMainWorld()->fn_bActivateEditor(pclActionDLL, &pclBaseObjectList);
}
}
}
//*************************************************************************
void EdActors_ActorsView::OnCheckShowLinks()
{
g_pclInterface->m_clDocument.m_pub_bMustShowLinks = ((CButton *)GetDlgItem(IDC_CHECK_SHOW_LINKS))->GetCheck();
g_pclInterface->m_clDocument.m_pclMiniStrucView->m_fn_vUpdateTree();
//-----------------IR-------------------------
if(m_fn_pclGetDocument()->m_pclDesignerVariablesView)
EDAC_fn_vDesignerVariableView_UpdateDisplay(m_fn_pclGetDocument()->m_pclDesignerVariablesView);
//--------------------------------------------
}
//*************************************************************************
void EdActors_ActorsView::m_pub_fn_vUpdateActorNameForModif(CPA_Actor *_pclSendingActor)
{
if ( m_fn_pclGetDocument()->m_pclSelectedActor != NULL )
{
if ( _pclSendingActor == m_fn_pclGetDocument()->m_pclSelectedActor->m_pclActor )
{
CString csActorName = m_fn_pclGetDocument()->m_pclSelectedActor->m_pclActor->GetName();
if ( m_fn_pclGetDocument()->m_pclSelectedActor->m_pclActor->m_pub_fn_bHasBeenModified() )
csActorName += CString(C_szActorModified);
if ( m_fn_pclGetDocument()->m_pclSelectedActor->m_fn_bIsAnInstance() )
{
m_pclActorNameStatic->m_fn_vSetTextToDisplay(csActorName, TRUE);
}
else
m_pclModelNameStatic->m_fn_vSetTextToDisplay(csActorName, TRUE);
}
else if ( m_fn_pclGetDocument()->m_pclSelectedActor->m_fn_bIsAnInstance() )
{
//Updates Model's name
CPA_Actor *pclModel = ((EdActors_EditorActorInstance *)m_fn_pclGetDocument()->m_pclSelectedActor)->m_fn_pclGetModel();
CString csActorName = pclModel->GetName();
if ( pclModel->m_pub_fn_bHasBeenModified() )
csActorName += CString(C_szActorModified);
m_pclModelNameStatic->m_fn_vSetTextToDisplay(csActorName, TRUE);
}
}
}
//*************************************************************************
void EdActors_ActorsView::OnButtonCopy()
{
//Gets current model
CPA_Actor *pclSourceActor = NULL;
if ( ( g_pclInterface->m_clDocument.m_pub_fn_bCurrentModeIsModel() )
&& ( g_pclInterface->m_clDocument.m_pclCurrentModel != NULL )
)
pclSourceActor = g_pclInterface->m_clDocument.m_pclCurrentModel->m_pclActor;
else if ( ( g_pclInterface->m_clDocument.m_pub_fn_bCurrentModeIsInstance() )
&& ( g_pclInterface->m_clDocument.m_pclCurrentInstance != NULL )
)
pclSourceActor = g_pclInterface->m_clDocument.m_pclCurrentInstance->m_pclActor;
if( pclSourceActor != NULL )
{
g_pclInterface->m_clDocument.m_fn_vCreateCopiesOfActor(pclSourceActor);
}
}
// Shaitan => state list in the level
//*************************************************************************
void EdActors_ActorsView::OnButtonStateList()
{
if (g_pclInterface->m_bCanGenerateOptimizedLevel)
{
CPA_Family *pFamily;
// get current family
pFamily = (CPA_Family *) g_pclInterface->m_clDocument.m_pclCurrentFamily;
// update actions references
g_pclInterface->m_clDocument.m_fn_vUpdateReferencesForAllActions();
// update and notify the state list of the family
g_pclInterface->m_clDocument.m_fn_vUpdateListOfUsedActionsForFamily(pFamily);
// Shaitan => module list in the level
// update the object table list of the family
g_pclInterface->m_clDocument.m_fn_vUpdateListOfUsedObjectTablesForFamily(pFamily);
// update and notify the PO list of the family
g_pclInterface->m_clDocument.m_fn_vUpdateListOfUsedPOsForFamily(pFamily);
// End Shaitan => module list in the level
}
}
// End Shaitan => state list in the level
//*************************************************************************
void EdActors_ActorsView::m_pub_fn_vEnableAllControls(BOOL _bEnable)
{
if ( _bEnable != m_pri_bControlsAreEnabled )
{
//Resources controls
/*
GetDlgItem(IDC_RADIO_LEVEL_1)->EnableWindow(_bEnable);
GetDlgItem(IDC_RADIO_LEVEL_2)->EnableWindow(_bEnable);
GetDlgItem(IDC_RADIO_LEVEL_3)->EnableWindow(_bEnable);
*/
GetDlgItem(IDC_CHECK_WATCH)->EnableWindow(_bEnable);
//Stefan Dumitrean 14-07-98 ( OAC buttons )
// GetDlgItem(IDC_CHECK_LEVEL_EXCLUSIVE)->EnableWindow(_bEnable);
//End Stefan Dumitrean 14-07-98 ( OAC buttons )
GetDlgItem(IDC_CHECK_IA)->EnableWindow(_bEnable);
//SHA-TEMP
// GetDlgItem(IDC_CHECK_VAR)->EnableWindow(_bEnable);
GetDlgItem(IDC_CHECK_VAR)->EnableWindow(_bEnable && ((CButton *)GetDlgItem(IDC_CHECK_IA))->GetCheck());
GetDlgItem(IDC_CHECK_CURRENT)->EnableWindow(_bEnable);
GetDlgItem(IDC_CHECK_INIT)->EnableWindow(_bEnable);
GetDlgItem(IDC_BUTTON_UNDO)->EnableWindow(_bEnable);
GetDlgItem(IDC_BUTTON_UNDO_ARROW)->EnableWindow(_bEnable);
GetDlgItem(IDC_BUTTON_REDO)->EnableWindow(_bEnable);
GetDlgItem(IDC_BUTTON_REDO_ARROW)->EnableWindow(_bEnable);
GetDlgItem(IDC_BUTTON_EDIT_MODEL)->EnableWindow(_bEnable);
GetDlgItem(IDC_BUTTON_SHOW_INSTANCES)->EnableWindow(_bEnable);
GetDlgItem(IDC_BUTTON_SHOW_MODELS)->EnableWindow(_bEnable);
GetDlgItem(IDC_BUTTON_ACTIONS)->EnableWindow(_bEnable);
GetDlgItem(IDC_BUTTON_COPY_MODEL)->EnableWindow(_bEnable);
// Shaitan => state list in the level
GetDlgItem(IDC_BUTTON_GENERATE_STATELIST)->EnableWindow(_bEnable && g_pclInterface->m_bCanGenerateOptimizedLevel);
// End Shaitan => state list in the level
GetDlgItem(IDC_BUTTON_HELP)->EnableWindow(_bEnable);
GetDlgItem(IDC_CHECK_ALWAYS_ACTIVE)->EnableWindow(_bEnable && mfn_bIsAlwaysActiveEnabled ());
GetDlgItem(IDC_CHECK_IN_ALL_SUBMAPS)->EnableWindow(_bEnable && mfn_bIsInAllSubMapsEnabled ());
//Other controls
POSITION pos = m_clListOfGroupButtons.GetHeadPosition();
while ( pos != NULL )
m_clListOfGroupButtons.GetNext(pos)->EnableWindow(_bEnable);
m_pri_bControlsAreEnabled = _bEnable;
}
//CPA2 Stegaru Cristian 98/06/30
GetDlgItem(IDC_CLEAN_ALW_FILE)->EnableWindow (TRUE);
//End CPA2 Stegaru Cristian 98/06/30
}
//*************************************************************************
void EdActors_ActorsView::OnButtonHelp()
{
g_pclInterface->m_clDocument.m_pub_bMustDisplayHelpOnFields = !g_pclInterface->m_clDocument.m_pub_bMustDisplayHelpOnFields;
if ( g_pclInterface->m_clDocument.m_pub_bMustDisplayHelpOnFields )
{
SetCapture();
g_pclInterface->m_clDocument.m_hPreviousCursorForHelpOnFields = SetCursor(g_pclInterface->m_clDocument.m_hHelpCursor);
}
else
{
SetCursor(g_pclInterface->m_clDocument.m_hPreviousCursorForHelpOnFields);
g_pclInterface->m_clDocument.m_hPreviousCursorForHelpOnFields = NULL;
ReleaseCapture();
}
}
//*************************************************************************
void EdActors_ActorsView::OnMouseMove(UINT nFlags, CPoint point)
{
if ( g_pclInterface->m_clDocument.m_pub_bMustDisplayHelpOnFields )
{
//Converts the point
CPoint cpTruePoint = point;
ClientToScreen(&cpTruePoint);
//Gets the window under the cursor
CWnd *pclWindow = WindowFromPoint(cpTruePoint);
//Tests if window under cursor is a Static of Characteristics Editor
BOOL bHelpEnabled = FALSE;
if ( pclWindow->IsKindOf(RUNTIME_CLASS(CTL_Editor_Static)) )
bHelpEnabled = ( ((CTL_Editor_Static *)pclWindow)->m_pub_fn_tdeGetType() == CTL_STATIC_TYPE__FIELD_NAME );
SetCursor(bHelpEnabled ? g_pclInterface->m_clDocument.m_hHelpCursor
: g_pclInterface->m_clDocument.m_hHelpDisabledCursor);
}
CFormView::OnMouseMove(nFlags, point);
}
//*************************************************************************
void EdActors_ActorsView::OnLButtonUp(UINT nFlags, CPoint point)
{
if ( g_pclInterface->m_clDocument.m_pub_bMustDisplayHelpOnFields )
{
//Converts the point
CPoint cpTruePoint = point;
ClientToScreen(&cpTruePoint);
//Gets the window under the cursor
CWnd *pclWindow = WindowFromPoint(cpTruePoint);
//Tests if window under cursor is a Static of Characteristics Editor
if ( pclWindow->IsKindOf(RUNTIME_CLASS(CTL_Editor_Static)) )
{
CTL_Editor_Static *pclMyStatic = (CTL_Editor_Static *)pclWindow;
if ( pclMyStatic->m_pub_fn_tdeGetType() == CTL_STATIC_TYPE__FIELD_NAME )
{
//Displays Help
::WinHelp(m_hWnd,
LPCTSTR(g_pclInterface->m_clDocument.m_csHelpFileNameAndPath),
HELP_CONTEXTPOPUP,
OAC_fn_tdeGetLevelOfControl( pclMyStatic->m_pub_fn_pclGetParentControl() )
);
}
}
SetCursor(g_pclInterface->m_clDocument.m_hPreviousCursorForHelpOnFields);
g_pclInterface->m_clDocument.m_hPreviousCursorForHelpOnFields = NULL;
g_pclInterface->m_clDocument.m_pub_bMustDisplayHelpOnFields = FALSE;
ReleaseCapture();
}
CFormView::OnLButtonUp(nFlags, point);
}
//*************************************************************************
//*************************************************************************
/////////////////////////////////////////////////////////////////////////////
// EdActors_ActorsView diagnostics
#ifdef _DEBUG
void EdActors_ActorsView::AssertValid() const
{
CFormView::AssertValid();
}
void EdActors_ActorsView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method : OnCheckAlwaysActive
// Date : 98-05
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description :
// Author : Stegaru Cristian - CPA2
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date :
// By :
//////////////////////////////////////////////////////////////////////////////////////////////////////
void EdActors_ActorsView::OnCheckAlwaysActive()
{
CPA_Actor *pclSelectedActor = m_fn_pclGetDocument()->m_pclSelectedActor->m_pclActor;
ERROR_ASSERT( pclSelectedActor->m_fn_bIsAnInstance() );
pclSelectedActor->m_pub_fn_vSetAlwaysActive(!pclSelectedActor->m_pub_fn_bIsAlwaysActive());
}
// ANNECY MT - 19/11/98 {
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method : OnCheckInAllSubMaps
// Date : 98-05
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description :
// Author : Marc Trabucato
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date :
// By :
//////////////////////////////////////////////////////////////////////////////////////////////////////
void EdActors_ActorsView::OnCheckInAllSubMaps()
{
CPA_Actor *pclSelectedActor = m_fn_pclGetDocument()->m_pclSelectedActor->m_pclActor;
ERROR_ASSERT( pclSelectedActor->m_fn_bIsAnInstance() );
pclSelectedActor->m_pub_fn_vSetInAllSubMaps(!pclSelectedActor->m_pub_fn_bIsInAllSubMaps());
}
// END ANNECY MT }
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method : mfn_bIsAlwaysActiveEnabled
// Date : 98-05
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description :
// Author : Stegaru Cristian - CPA2
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date :
// By :
//////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL EdActors_ActorsView::mfn_bIsAlwaysActiveEnabled (void)
{
BOOL bEnabled = FALSE;
CPA_Actor *pclSelectedActor = NULL;
if (m_fn_pclGetDocument()->m_pclSelectedActor &&
(pclSelectedActor = m_fn_pclGetDocument()->m_pclSelectedActor->m_pclActor))
{
if (pclSelectedActor->m_fn_bIsAnInstance())
bEnabled = !pclSelectedActor->m_fn_bIsAnAlways() /*&& !pclSelectedActor->m_fn_bIsTheWorldActor()*/;
}
return bEnabled;
}
// ANNECY MT - 19/11/98 {
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method : mfn_bIsInAllSubMapsEnabled
// Date : 98-05
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description :
// Author : Marc Trabucato
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date :
// By :
//////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL EdActors_ActorsView::mfn_bIsInAllSubMapsEnabled (void)
{
BOOL bEnabled = FALSE;
CPA_Actor *pclSelectedActor = NULL;
if (m_fn_pclGetDocument()->m_pclSelectedActor &&
(pclSelectedActor = m_fn_pclGetDocument()->m_pclSelectedActor->m_pclActor))
{
if (pclSelectedActor->m_fn_bIsAnInstance())
bEnabled = !pclSelectedActor->m_fn_bIsAnAlways() /*&& !pclSelectedActor->m_fn_bIsTheWorldActor()*/;
}
return bEnabled;
}
// END ANNECY MT }
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method : OnCleanAlwFile
// Date : 98/06/30
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description :
// Author : Stegaru Cristian - CPA
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date :
// By :
//////////////////////////////////////////////////////////////////////////////////////////////////////
void EdActors_ActorsView::OnCleanAlwFile()
{
CWaitCursor wait;
CStringList lstOfRefAlways;
//treat regular models
Position pos = g_pclInterface->m_clDocument.m_clModelsList.GetHeadPosition ();
while (pos)
{
CPA_Actor *pModel = (CPA_Actor *)g_pclInterface->m_clDocument.m_clModelsList.GetNext (pos);
if (!pModel || !pModel->m_fn_bIsAModel ())
continue;
g_pclInterface->m_clDocument.mfn_vFillRefAlwaysForModel (pModel, lstOfRefAlways);
}
//treat always models
pos = g_pclInterface->m_clDocument.m_clAlwaysList.GetHeadPosition ();
while (pos)
{
CPA_Actor *pModel = (CPA_Actor *)g_pclInterface->m_clDocument.m_clAlwaysList.GetNext (pos);
if (!pModel || !pModel->m_fn_bIsAModel ())
continue;
g_pclInterface->m_clDocument.mfn_vFillRefAlwaysForModel (pModel, lstOfRefAlways);
}
//prepare the list of always loaded and not referenced
CStringList lstOfLoadedAlwaysNotReferenced;
Position posA = g_pclInterface->m_clDocument.m_clAlwaysList.GetHeadPosition ();
while (posA)
{
CPA_BaseObject *pAlways = g_pclInterface->m_clDocument.m_clAlwaysList.GetNext (posA);
ASSERT (pAlways);
CString csAlways = pAlways->GetName();
csAlways.MakeLower();
BOOL bAlwaysIsReferenced = (lstOfRefAlways.Find(csAlways) != NULL);
if (!bAlwaysIsReferenced)
lstOfLoadedAlwaysNotReferenced.AddTail(pAlways->GetName());
}
CDlgCleanAlwFile dlg (lstOfLoadedAlwaysNotReferenced, TASK_CLEAN_ALW_FILE);
if (IDOK == dlg.DoModal ())
{
//clean the alw file
CStringList &rlstOfAlwaysToBeRemoved = lstOfLoadedAlwaysNotReferenced; //the dialog fills the list with the always to be removed
//change the name in order not to propagate confusion
g_pclInterface->M_GetEditManager ()->AskFor (new ModifCleanAlwFile (g_pclInterface, rlstOfAlwaysToBeRemoved));
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method : ModifCleanAlwFile
// Date : 98/07/15
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description :
// Author : Stegaru Cristian - CPA
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date :
// By :
//////////////////////////////////////////////////////////////////////////////////////////////////////
ModifCleanAlwFile::ModifCleanAlwFile (CPA_Actor_Editor_Interface *pInterface, CStringList &rlstAlwObjects, BOOL pBlock/* = FALSE*/)
: CPA_Modif (CLEAN_ALW_FILE, "CleanAlwFile", pBlock)
{
m_pInterface = pInterface;
m_lstAlwObjects.AddHead (&rlstAlwObjects);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method : Do
// Date : 98/07/15
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description :
// Author : Stegaru Cristian - CPA
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date :
// By :
//////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL ModifCleanAlwFile::Do ()
{
ASSERT (m_pInterface);
int iReinitDialog = 0;
Position posAlw = m_pInterface->m_clDocument.m_clAlwaysList.GetHeadPosition ();
while (posAlw)
{
CPA_Actor *pAlways = (CPA_Actor *)m_pInterface->m_clDocument.m_clAlwaysList.GetNext (posAlw);
ASSERT (pAlways);
BOOL bRemoveIt = NULL != m_lstAlwObjects.Find (pAlways->GetName ());
//remove the always that are choosed to be removed
if (bRemoveIt)
iReinitDialog = m_pInterface->mfn_bUnloadAlwaysFromLevel (pAlways) ? posAlw = m_pInterface->m_clDocument.m_clAlwaysList.GetHeadPosition (), //there is a bug in the list implementatin, so I have to reinitialize the list pos after I delete an element
iReinitDialog + 1 : iReinitDialog;
}
if (0 < iReinitDialog)
{
ASSERT (m_pInterface->m_clDocument.m_pclDialogList);
m_pInterface->m_clDocument.m_pclDialogList->fn_vReinitDialog ();
}
return TRUE;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method : Undo
// Date : 98/07/15
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description :
// Author : Stegaru Cristian - CPA
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date :
// By :
//////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL ModifCleanAlwFile::Undo ()
{
int iReinitDialog = 0;
POSITION pos = m_lstAlwObjects.GetHeadPosition ();
while (pos)
{
CString csAlwName = m_lstAlwObjects.GetNext (pos);
if (csAlwName.IsEmpty ())
continue;
CPA_UnloadedAlways *pUAlways = NULL;
BOOL bFound = FALSE;
Position posUA = m_pInterface->m_clDocument.m_clUnloadedAlwaysList.GetHeadPosition ();
while (posUA)
{
pUAlways = (CPA_UnloadedAlways *)m_pInterface->m_clDocument.m_clUnloadedAlwaysList.GetNext (posUA);
if (csAlwName == pUAlways->mfn_csGetUAlwaysName ())
{
bFound = TRUE;
break;
}
}
if (!bFound)
return FALSE;
ASSERT (pUAlways);
m_pInterface->m_clDocument.m_clUnloadedAlwaysList.fn_bRemoveObject (pUAlways);
m_pInterface->mfn_vLoadAlways (pUAlways);
pUAlways->mfn_vSetLoaded (TRUE);
iReinitDialog++;
}
if (0 < iReinitDialog)
m_pInterface->m_clDocument.m_pclDialogList->fn_vReinitDialog ();
return TRUE;
}