// CPAMVwMS.cpp : implementation file ///////////////////////////////////////////////////////////////////////////// #include "StdAfx.h" #define HieFriend #include "IADVwRst.hpp" #include "IADFmMn.hpp" #include "IADDoc.hpp" #include "IADCnst.hpp" #include "_IADItrf.hpp" #include "IADEdtTr.hpp" #include "IADLnkMt.hpp" #include "IADDgFnd.hpp" #include "IADTrCtl.hpp" #include "IADVwMn.hpp" #include "help_def.h" //for Context Help //External modules #include "OAc.h" #include "ErO.h" #include "GAM.h" //End of External modules //BEGIN ROMTEAM Cristi Petrescu 98-05- #include "IADVrVw.hpp" #include "x:/cpa/tempgrp/tia/inc/showflag.hpp" #include "x:/cpa/tempgrp/tia/inc/ai_intf.hpp" #include "x:/cpa/main/inc/_EditId.h" //END ROMTEAM Cristi Petrescu 98-05- #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // IAD_ResultView IMPLEMENT_DYNCREATE(IAD_ResultView, CFormView) BEGIN_MESSAGE_MAP(IAD_ResultView, CFormView) //{{AFX_MSG_MAP(IAD_ResultView) ON_WM_HELPINFO() ON_WM_SIZE() ON_BN_CLICKED(IDC_CHECK_SYNCHRONIZE, OnCheckSynchronize) ON_EN_CHANGE(IDC_EDIT_LEVELS, OnChangeEditLevels) ON_BN_CLICKED(IDC_BUTTON_FIND_NEXT_IN_TREE, OnButtonFindNextInTree) ON_BN_CLICKED(IDC_BUTTON_FIND_IN_TREE, OnButtonFindInTree) ON_BN_CLICKED(IDC_BUTTON_FIND_PREVIOUS_IN_TREE, OnButtonFindPreviousInTree) ON_BN_CLICKED(IDC_CHECK_VIEW_REFLEX, OnCheckViewReflex) ON_BN_CLICKED(IDC_CHECK_VIEW_AI, OnCheckViewAI) ON_BN_CLICKED(IDC_CHECK_SHOW_TESTS, OnCheckShowTests) ON_BN_CLICKED(IDC_CHECK_SHOW_MARKS, OnCheckShowMarks) ON_BN_CLICKED(IDC_BUTTON_NEXT_LINE, OnButtonNextLine) //}}AFX_MSG_MAP END_MESSAGE_MAP() //*************************************************************************** IAD_ResultView::IAD_ResultView() : CFormView(IAD_ResultView::IDD) { //{{AFX_DATA_INIT(IAD_ResultView) m_lLevelToExpand = 0; m_bMustSynchronize = TRUE; m_bViewAI = TRUE; m_bViewReflex = TRUE; m_bShowMarks = TRUE; m_bShowTests = TRUE; //}}AFX_DATA_INIT m_pri_pclTreeControl = NULL; //BEGIN ROMTEAM Cristi Petrescu 98-05- m_p_stInternalActor = NULL; //END ROMTEAM Cristi Petrescu 98-05- } //*************************************************************************** IAD_ResultView::~IAD_ResultView() { if ( m_pri_pclTreeControl != NULL ) delete m_pri_pclTreeControl; } //*************************************************************************** void IAD_ResultView::DoDataExchange(CDataExchange* pDX) { CFormView::DoDataExchange(pDX); //{{AFX_DATA_MAP(IAD_ResultView) DDX_Text(pDX, IDC_EDIT_LEVELS, m_lLevelToExpand); DDX_Check(pDX, IDC_CHECK_SYNCHRONIZE, m_bMustSynchronize); //}}AFX_DATA_MAP } //Member Functions //////////////////////////// //*************************************************************************** void IAD_ResultView::OnInitialUpdate() { //Creates the TreeControl m_pri_pclTreeControl = new IAD_TreeControl; m_pri_pclTreeControl->m_pub_fn_bCreate(this); CFormView::OnInitialUpdate(); m_fn_pclGetDocument()->m_pclResultView = this; //Sets icon on buttons HICON hIcon = AfxGetApp()->LoadIcon(IDI_ICON_FIND_NEXT); ((CButton *)GetDlgItem(IDC_BUTTON_FIND_NEXT_IN_TREE))->SetIcon(hIcon); hIcon = AfxGetApp()->LoadIcon(IDI_ICON_FIND_PREVIOUS); ((CButton *)GetDlgItem(IDC_BUTTON_FIND_PREVIOUS_IN_TREE))->SetIcon(hIcon); hIcon = AfxGetApp()->LoadIcon(IDI_ICON_FIND); ((CButton *)GetDlgItem(IDC_BUTTON_FIND_IN_TREE))->SetIcon(hIcon); // BEGIN ROMTEAM Cristi Petrescu 98-08- hIcon = AfxGetApp()->LoadIcon(IDI_ICON_NEXT_LINE); ((CButton *)GetDlgItem(IDC_BUTTON_NEXT_LINE))->SetIcon(hIcon); // END ROMTEAM Cristi Petrescu 98-08- CRect crClientRect; GetClientRect(crClientRect); m_pub_fn_vSetEditedActorName("<< Nothing edited >>"); CSpinButtonCtrl *pclSpin = (CSpinButtonCtrl *)GetDlgItem(IDC_SPIN_LEVELS); if ( pclSpin != NULL ) pclSpin->SetRange(0, 50); if ( m_pri_pclTreeControl != NULL ) m_pri_pclTreeControl->SetIndent(3); CProgressCtrl *pclProgress = (CProgressCtrl *)GetDlgItem(IDC_PROGRESS_STATUS); if ( pclProgress != NULL ) pclProgress->SetRange(0, 100); m_pub_fn_vSetStatusText("Ready !"); m_pub_fn_vSetFindStatusText("Nothing has been searched"); //BEGIN ROMTEAM Cristi Petrescu 98-05- // BEGIN ROMTEAM Cristi Petrescu 98-08- m_bMustSynchronize = TRUE; ((CButton *) GetDlgItem (IDC_CHECK_SYNCHRONIZE)) -> SetCheck (m_bMustSynchronize); // END ROMTEAM Cristi Petrescu 98-08- ((CButton *) GetDlgItem (IDC_CHECK_VIEW_AI)) -> SetCheck (m_bViewAI); ((CButton *) GetDlgItem (IDC_CHECK_VIEW_REFLEX)) -> SetCheck (m_bViewReflex); // BEGIN ROMTEAM Cristi Petrescu 98-08- ((CButton *) GetDlgItem (IDC_CHECK_SHOW_MARKS)) -> SetCheck (! m_bShowMarks); // END ROMTEAM Cristi Petrescu 98-08- ((CButton *) GetDlgItem (IDC_CHECK_SHOW_TESTS)) -> SetCheck (m_bShowTests); ((CButton *) GetDlgItem (IDC_CHECK_SHOW_TESTS)) -> EnableWindow (! m_bShowMarks); CPA_DLLBase *p_clDll = g_pclInterface->GetMainWorld()->GetToolDLLWithName(C_szDLLAIEditorName); if ( p_clDll != NULL ) p_clDll -> OnQueryAction (g_pclInterface, C_uiAI_ShowFlags, m_fn_lShowFlags ()); //END ROMTEAM Cristi Petrescu 98-05- } //******************************************************************************* void IAD_ResultView::m_pub_fn_vRefreshTree() { m_pri_pclTreeControl->InvalidateRect(NULL); } //******************************************************************************* void IAD_ResultView::m_pub_fn_vDeleteAllInTreeControl() { m_fn_pclGetDocument()->m_pub_bIsDeletingTree = TRUE; m_pri_pclTreeControl->DeleteAllItems(); m_fn_pclGetDocument()->m_pub_bIsDeletingTree = FALSE; } //******************************************************************************* IAD_MyDocument* IAD_ResultView::m_fn_pclGetDocument() { return g_pclInterface->m_fn_pclGetDocument(); } //*************************************************************************** void IAD_ResultView::m_pub_fn_vSetStatusText(CString _csNewStatus, char _cPercentage /*= -1*/) { GetDlgItem(IDC_STATIC_STATUS)->SetWindowText(_csNewStatus); if ( _cPercentage != -1 ) { //Re-centers _cPercentage = max (0, _cPercentage); _cPercentage = min (100, _cPercentage); //Displays in progress control CProgressCtrl *pclProgress = (CProgressCtrl *)GetDlgItem(IDC_PROGRESS_STATUS); if ( pclProgress != NULL ) pclProgress->SetPos(_cPercentage); } } //*************************************************************************** void IAD_ResultView::m_pub_fn_vSetFindStatusText(CString _csNewStatus) { GetDlgItem(IDC_STATIC_FIND_STATUS)->SetWindowText(_csNewStatus); } //*************************************************************************** void IAD_ResultView::m_pub_fn_vSetEditedActorName(CString _csName) { GetDlgItem(IDC_STATIC_ACTOR_NAME)->SetWindowText(_csName); } //*************************************************************************** BOOL IAD_ResultView::OnHelpInfo(HELPINFO* pHelpInfo) { ::WinHelp(m_hWnd, LPCTSTR(g_pclInterface->m_clDocument.m_csHelpFileNameAndPath), HELP_CONTEXT, IDH_GENERAL); return FALSE; } #define IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING 3 //*************************************************************************** void IAD_ResultView::OnSize(UINT nType, int cx, int cy) { CFormView::OnSize(nType, cx, cy); CRect crNameStaticDestRect; CRect crTreeStaticDestRect; CRect crStatusStaticDestRect; CRect crButtonDestRect; CRect crProgressDestRect; CRect crButtonFindNextDestRect; CRect crButtonFindPrevDestRect; CRect crButtonFindDestRect; //BEGIN ROMTEAM Cristi Petrescu 98-05- CRect crVariableRect; LONG lLeft; //END ROMTEAM Cristi Petrescu 98-05- //Re-sizes Static for Actor's name CStatic *pclStatic = (CStatic *)GetDlgItem(IDC_STATIC_ACTOR_NAME); if ( pclStatic != NULL ) { CRect crStaticRect; pclStatic->GetWindowRect(crStaticRect); ScreenToClient(crStaticRect); crNameStaticDestRect.top = IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crNameStaticDestRect.bottom = crNameStaticDestRect.top + crStaticRect.Height(); crNameStaticDestRect.left = crStaticRect.left; crNameStaticDestRect.right = cx - IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; pclStatic->MoveWindow(crNameStaticDestRect); } //Moves "Synchro" button CButton *pclButton = (CButton *)GetDlgItem(IDC_CHECK_SYNCHRONIZE); if ( pclButton != NULL ) { CRect crButtonRect; pclButton->GetWindowRect(crButtonRect); ScreenToClient(crButtonRect); crButtonDestRect.top = crNameStaticDestRect.bottom + IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crButtonDestRect.bottom = crButtonDestRect.top + crButtonRect.Height(); crButtonDestRect.right = cx - IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; //BEGIN ROMTEAM Cristi Petrescu 98-05- lLeft = crButtonDestRect.left = crButtonDestRect.right - crButtonRect.Width(); //END ROMTEAM Cristi Petrescu 98-05- pclButton->MoveWindow(crButtonDestRect); } //BEGIN ROMTEAM Cristi Petrescu 98-05- // moves check ai button pclButton = (CButton *) GetDlgItem (IDC_CHECK_VIEW_AI); if ( pclButton != NULL ) { CRect crButtonRect; CRect crButtonFinalRect; pclButton->GetWindowRect(crButtonRect); ScreenToClient(crButtonRect); crButtonFinalRect.top = crNameStaticDestRect.bottom + IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crButtonFinalRect.bottom = crButtonFinalRect.top + crButtonRect.Height(); crButtonFinalRect.right = lLeft - IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; lLeft = crButtonFinalRect.left = crButtonFinalRect.right - crButtonRect.Width(); pclButton->MoveWindow(crButtonFinalRect); } // moves check reflex button pclButton = (CButton *) GetDlgItem (IDC_CHECK_VIEW_REFLEX); if ( pclButton != NULL ) { CRect crButtonRect; CRect crButtonFinalRect; pclButton->GetWindowRect(crButtonRect); ScreenToClient(crButtonRect); crButtonFinalRect.top = crNameStaticDestRect.bottom + IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crButtonFinalRect.bottom = crButtonFinalRect.top + crButtonRect.Height(); crButtonFinalRect.right = lLeft - IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; lLeft = crButtonFinalRect.left = crButtonFinalRect.right - crButtonRect.Width(); pclButton->MoveWindow(crButtonFinalRect); } // moves Tests button pclButton = (CButton *) GetDlgItem (IDC_CHECK_SHOW_TESTS); if ( pclButton != NULL ) { CRect crButtonRect; pclButton->GetWindowRect(crButtonRect); ScreenToClient(crButtonRect); crButtonFindNextDestRect.top = crButtonDestRect.bottom + IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crButtonFindNextDestRect.bottom = crButtonFindNextDestRect.top + crButtonRect.Height(); crButtonFindNextDestRect.right = cx - IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crButtonFindNextDestRect.left = crButtonFindNextDestRect.right - crButtonRect.Width(); pclButton->MoveWindow(crButtonFindNextDestRect); } // moves Marks button pclButton = (CButton *) GetDlgItem (IDC_CHECK_SHOW_MARKS); if ( pclButton != NULL ) { CRect crButtonRect; pclButton->GetWindowRect(crButtonRect); ScreenToClient(crButtonRect); crButtonDestRect.top = crButtonFindNextDestRect.top; crButtonDestRect.bottom = crButtonDestRect.top + crButtonRect.Height(); crButtonDestRect.right = crButtonFindNextDestRect.left - IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crButtonDestRect.left = crButtonDestRect.right - crButtonRect.Width(); pclButton->MoveWindow(crButtonDestRect); } //END ROMTEAM Cristi Petrescu 98-05- // BEGIN ROMTEAM Cristi Petrescu 98-08- //Moves "Find" button pclButton = (CButton *)GetDlgItem(IDC_BUTTON_NEXT_LINE); if ( pclButton != NULL ) { CRect crButtonRect; pclButton->GetWindowRect(crButtonRect); ScreenToClient(crButtonRect); crButtonDestRect.top = crButtonDestRect.top; crButtonDestRect.bottom = crButtonDestRect.top + crButtonRect.Height(); crButtonDestRect.right = crButtonDestRect.left - IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crButtonDestRect.left = crButtonDestRect.right - crButtonRect.Width(); pclButton->MoveWindow(crButtonDestRect); } // END ROMTEAM Cristi Petrescu 98-08- //Moves "Find Next" button pclButton = (CButton *)GetDlgItem(IDC_BUTTON_FIND_NEXT_IN_TREE); if ( pclButton != NULL ) { CRect crButtonRect; pclButton->GetWindowRect(crButtonRect); ScreenToClient(crButtonRect); crButtonFindNextDestRect.top = crButtonDestRect.bottom + IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crButtonFindNextDestRect.bottom = crButtonFindNextDestRect.top + crButtonRect.Height(); crButtonFindNextDestRect.right = cx - IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crButtonFindNextDestRect.left = crButtonFindNextDestRect.right - crButtonRect.Width(); pclButton->MoveWindow(crButtonFindNextDestRect); } //Moves "Find Prev" button pclButton = (CButton *)GetDlgItem(IDC_BUTTON_FIND_PREVIOUS_IN_TREE); if ( pclButton != NULL ) { CRect crButtonRect; pclButton->GetWindowRect(crButtonRect); ScreenToClient(crButtonRect); crButtonFindPrevDestRect.top = crButtonFindNextDestRect.top; crButtonFindPrevDestRect.bottom = crButtonFindPrevDestRect.top + crButtonRect.Height(); crButtonFindPrevDestRect.right = crButtonFindNextDestRect.left - IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crButtonFindPrevDestRect.left = crButtonFindPrevDestRect.right - crButtonRect.Width(); pclButton->MoveWindow(crButtonFindPrevDestRect); } //Moves "Find" button pclButton = (CButton *)GetDlgItem(IDC_BUTTON_FIND_IN_TREE); if ( pclButton != NULL ) { CRect crButtonRect; pclButton->GetWindowRect(crButtonRect); ScreenToClient(crButtonRect); crButtonFindDestRect.top = crButtonFindNextDestRect.top; crButtonFindDestRect.bottom = crButtonFindDestRect.top + crButtonRect.Height(); crButtonFindDestRect.right = crButtonFindPrevDestRect.left - IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crButtonFindDestRect.left = crButtonFindDestRect.right - crButtonRect.Width(); pclButton->MoveWindow(crButtonFindDestRect); } //Moves Find Status static pclStatic = (CStatic *)GetDlgItem(IDC_STATIC_FIND_STATUS); if ( pclStatic != NULL ) { CRect crStaticRect; pclStatic->GetWindowRect(crStaticRect); ScreenToClient(crStaticRect); CRect crDestRect; crDestRect.top = crButtonFindDestRect.top; crDestRect.bottom = crDestRect.top + crStaticRect.Height(); crDestRect.left = IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crDestRect.right = crButtonFindDestRect.left - IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; pclStatic->MoveWindow(crDestRect); } //Re-sizes Static for Actor's name pclStatic = (CStatic *)GetDlgItem(IDC_STATIC_IA_TREE); if ( pclStatic != NULL ) { CRect crStaticRect; pclStatic->GetWindowRect(crStaticRect); ScreenToClient(crStaticRect); crTreeStaticDestRect.top = crButtonFindNextDestRect.bottom + IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crTreeStaticDestRect.bottom = crTreeStaticDestRect.top + crStaticRect.Height(); crTreeStaticDestRect.left = crStaticRect.left; crTreeStaticDestRect.right = cx - IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; pclStatic->MoveWindow(crTreeStaticDestRect); } //Re-sizes Static for status progress CWnd *pclProgress = GetDlgItem(IDC_PROGRESS_STATUS); if ( pclProgress != NULL ) { CRect crStaticRect; pclProgress->GetWindowRect(crStaticRect); crProgressDestRect.bottom = cy - IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crProgressDestRect.top = crProgressDestRect.bottom - crStaticRect.Height(); crProgressDestRect.left = IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crProgressDestRect.right = cx - IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; pclProgress->MoveWindow(crProgressDestRect); } //Re-sizes Static for status pclStatic = (CStatic *)GetDlgItem(IDC_STATIC_STATUS); if ( pclStatic != NULL ) { CRect crStaticRect; pclStatic->GetWindowRect(crStaticRect); crStatusStaticDestRect.bottom = crProgressDestRect.top - IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crStatusStaticDestRect.top = crStatusStaticDestRect.bottom - crStaticRect.Height(); crStatusStaticDestRect.left = IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crStatusStaticDestRect.right = cx - IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; pclStatic->MoveWindow(crStatusStaticDestRect); } //Re-sizes Tree Ctrl if ( m_pri_pclTreeControl != NULL ) { CRect crTreeRect; crTreeRect.top = crTreeStaticDestRect.bottom + IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crTreeRect.bottom = crStatusStaticDestRect.top - IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crTreeRect.left = IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; crTreeRect.right = cx - IA_DEBUGGER_TREE_VIEW_CONTROL_SPACING; m_pri_pclTreeControl->MoveWindow(crTreeRect); } } //*************************************************************************** void IAD_ResultView::m_pub_fn_vDisplayTraceForActor(struct IAD_stInternalActorDescription *_p_stInternalActor) { //BEGIN ROMTEAM Cristi Petrescu 98-05- m_p_stInternalActor = _p_stInternalActor; //END ROMTEAM Cristi Petrescu 98-05- if ( _p_stInternalActor != NULL ) { if ( _p_stInternalActor != g_pclInterface->m_clDocument.m_pub_fn_p_stGetSelectedActor() ) { AfxGetApp()->DoWaitCursor(1); //Frees all needed for last selected Actor g_pclInterface->m_clDocument.m_pub_fn_vFreeEditorTraceForEditedActor(); g_pclInterface->m_clDocument.m_pub_fn_vSetSelectedActor(_p_stInternalActor); //Sets Actor's Name m_pub_fn_vSetEditedActorName(_p_stInternalActor->pclActor->GetName()); m_fn_vEnableFindNextButton(FALSE); CString csText("Computing Editor Tree for Actor '"); csText += _p_stInternalActor->pclActor->GetName() + "' ... Please wait !"; m_pub_fn_vSetStatusText(csText); m_pri_fn_vComputeEditorTreeFromMotorTrace(_p_stInternalActor); m_pub_fn_vSetStatusText("Filling Tree", 0); m_pri_fn_vFillTreeControl(_p_stInternalActor); CString csReadyText; csReadyText.Format("Ready ! [ %s -> %ld entry(ies) ]", _p_stInternalActor->pclActor->GetName(), m_pri_ulTotalNumberOfNodes); m_pub_fn_vSetStatusText(csReadyText, 0); g_pclInterface->m_clDocument.m_pub_fn_vSetSelectedActor(_p_stInternalActor); AfxGetApp()->DoWaitCursor(-1); } } } //*************************************************************************** void IAD_ResultView::OnCheckSynchronize() { UpdateData(TRUE); } //*************************************************************************** void IAD_ResultView::OnChangeEditLevels() { if ( GetDlgItem(IDC_EDIT_LEVELS)->m_hWnd != NULL ) //To avoid construction { UpdateData(TRUE); if ( m_pri_pclTreeControl != NULL ) { HTREEITEM hCurrentRootTreeItem = m_pri_pclTreeControl->GetNextItem(NULL, TVGN_ROOT); while ( hCurrentRootTreeItem != NULL ) { //Tries to expand childs of this root Item, at the right level m_pri_pclTreeControl->Expand(hCurrentRootTreeItem, (m_lLevelToExpand > 0) ? TVE_EXPAND : TVE_COLLAPSE); m_pri_fn_lLookInChildsToExpand(hCurrentRootTreeItem, 0); hCurrentRootTreeItem = m_pri_pclTreeControl->GetNextItem(hCurrentRootTreeItem, TVGN_NEXT); } } } } //*************************************************************************** void IAD_ResultView::OnButtonFindInTree() { if ( m_fn_pclGetDocument()->m_pub_fn_p_stGetSelectedActor() != NULL ) { IAD_Dialog_FindInTree dial(AfxGetMainWnd()); if ( dial.DoModal() == IDOK ) { AfxGetApp()->DoWaitCursor(1); HTREEITEM hFoundTreeItem = m_fn_pclGetDocument()->m_pub_fn_hFindInTree( m_fn_pclGetDocument()->m_pub_fn_p_stGetSelectedActor()->pclRoot, m_fn_pclGetDocument()->m_pub_p_tdstGetFindInfo()); if ( hFoundTreeItem != NULL ) m_pri_pclTreeControl->m_pub_fn_vSelectAndShowItem(hFoundTreeItem); AfxGetApp()->DoWaitCursor(-1); } } } //*************************************************************************** void IAD_ResultView::OnButtonFindNextInTree() { HTREEITEM hFoundTreeItem = m_fn_pclGetDocument()->m_pub_fn_hFindNextInTree(); if ( hFoundTreeItem != NULL ) m_pri_pclTreeControl->m_pub_fn_vSelectAndShowItem(hFoundTreeItem); } //*************************************************************************** void IAD_ResultView::OnButtonFindPreviousInTree() { HTREEITEM hFoundTreeItem = m_fn_pclGetDocument()->m_pub_fn_hFindPreviousInTree(); if ( hFoundTreeItem != NULL ) m_pri_pclTreeControl->m_pub_fn_vSelectAndShowItem(hFoundTreeItem); } //*************************************************************************** void IAD_ResultView::m_fn_vEnableFindNextButton(BOOL _bEnable /*= TRUE*/) { GetDlgItem(IDC_BUTTON_FIND_NEXT_IN_TREE)->EnableWindow(_bEnable); } //*************************************************************************** void IAD_ResultView::m_fn_vEnableFindPrevButton(BOOL _bEnable /*= TRUE*/) { GetDlgItem(IDC_BUTTON_FIND_PREVIOUS_IN_TREE)->EnableWindow(_bEnable); } //BEGIN ROMTEAM Cristi Petrescu 98-05- //*************************************************************************** void IAD_ResultView::OnCheckViewAI() { //UpdateData (TRUE); m_bViewAI = !m_bViewAI; if (!m_bViewAI && !m_bViewReflex) { m_bViewAI = TRUE; } else { ((CButton *) GetDlgItem (IDC_CHECK_VIEW_AI)) -> SetCheck (m_bViewAI); if (m_p_stInternalActor != NULL) { m_pri_pclTreeControl -> m_fn_vSetViewAI (m_bViewAI); m_pri_fn_vFillTreeControl (m_p_stInternalActor); } } } //*************************************************************************** void IAD_ResultView::OnCheckViewReflex() { m_bViewReflex = !m_bViewReflex; if (!m_bViewAI && !m_bViewReflex) { m_bViewReflex = TRUE; } else { ((CButton *) GetDlgItem (IDC_CHECK_VIEW_REFLEX)) -> SetCheck (m_bViewReflex); if (m_p_stInternalActor != NULL) { m_pri_pclTreeControl -> m_fn_vSetViewReflex (m_bViewReflex); m_pri_fn_vFillTreeControl (m_p_stInternalActor); } } } //*************************************************************************** void IAD_ResultView::OnCheckShowTests() { m_bShowTests = ! m_bShowTests; ((CButton *) GetDlgItem (IDC_CHECK_SHOW_TESTS)) -> SetCheck (m_bShowTests); CPA_DLLBase *p_clDll = g_pclInterface->GetMainWorld()->GetToolDLLWithName(C_szDLLAIEditorName); if ( p_clDll != NULL ) p_clDll -> OnQueryAction (g_pclInterface, C_uiAI_ShowFlags, m_fn_lShowFlags ()); } //*************************************************************************** void IAD_ResultView::OnCheckShowMarks() { m_bShowMarks = ! m_bShowMarks; // BEGIN ROMTEAM Cristi Petrescu 98-08- ((CButton *) GetDlgItem (IDC_CHECK_SHOW_MARKS)) -> SetCheck (! m_bShowMarks); // END ROMTEAM Cristi Petrescu 98-08- ((CButton *) GetDlgItem (IDC_CHECK_SHOW_TESTS)) -> EnableWindow (! m_bShowMarks); CPA_DLLBase *p_clDll = g_pclInterface->GetMainWorld()->GetToolDLLWithName(C_szDLLAIEditorName); if ( p_clDll != NULL ) p_clDll -> OnQueryAction (g_pclInterface, C_uiAI_ShowFlags, m_fn_lShowFlags ()); } //*************************************************************************** long IAD_ResultView::m_fn_lShowFlags (void) { if (m_bShowMarks) return E_MarkExecutedLines; if (m_bShowTests) return E_ShowTestsAndActions; return E_ShowActions; } //END ROMTEAM Cristi Petrescu 98-05- // BEGIN ROMTEAM Cristi Petrescu 98-08- void IAD_ResultView::OnButtonNextLine() { IAD_EditorTreeNode *pclNextLine = NULL; // find the current node IAD_EditorTreeNode *pclCurrentNode = m_fn_pclGetSelectedEditorNode (); if (! pclCurrentNode) return; // get the current behaviour and the current line IAD_EditorTreeNode *pclBehaviourNode = pclCurrentNode; IAD_EditorTreeNode *pclCurrentLineNode = NULL; while (pclBehaviourNode && pclBehaviourNode -> m_pub_fn_tdeGetNodeType () != AIDebug_E_SecTyp_ReflexOrAI) { pclCurrentLineNode = pclBehaviourNode; pclBehaviourNode = pclBehaviourNode -> m_pub_fn_pclGetParentNode (); } if (! pclBehaviourNode) return; if (! pclCurrentLineNode) { // first line of the behaviour pclNextLine = pclBehaviourNode -> m_pub_fn_ptdGetListOfChildNodes () -> GetHead (); } else { POSITION pos = pclBehaviourNode -> m_pub_fn_ptdGetListOfChildNodes () -> Find (pclCurrentLineNode); pclBehaviourNode -> m_pub_fn_ptdGetListOfChildNodes () -> GetNext (pos); if (! pos) { CString csBehaviourName = pclBehaviourNode -> m_pub_fn_csGetNodeName (); //should find the next loop IAD_EditorTreeNode *pclCurrentLoop = pclBehaviourNode -> m_fn_pclGetEngineLoopParentNode (); IAD_EditorTreeNode *pclRoot = pclCurrentLoop -> m_pub_fn_pclGetParentNode (); IAD_EditorTreeNode *pclNextLoop; pos = pclRoot -> m_pub_fn_ptdGetListOfChildNodes () -> Find (pclCurrentLoop); pclRoot -> m_pub_fn_ptdGetListOfChildNodes () -> GetNext (pos); if (! pos) { // last loop; acquire data from engine M_GetMainApp () -> fn_vAppliAskToStopEditors (); M_GetMainApp () -> fn_vAppliAskOneStep (); M_GetMainApp () -> fn_vAppliAskToStartEditors (); //rebuild all m_pub_fn_vDisplayTraceForActor (m_p_stInternalActor); // select last loop (the only ?!) pclNextLoop = m_p_stInternalActor -> pclRoot -> m_pub_fn_ptdGetListOfChildNodes () -> GetTail (); if (! pclNextLoop) return; } else { pclNextLoop = pclRoot -> m_pub_fn_ptdGetListOfChildNodes () -> GetNext (pos); } // build the subtree for this node (select that node!) m_pri_pclTreeControl -> m_pub_fn_vSelectAndShowItem (pclNextLoop -> m_pub_fn_hGetTreeItem ()); // now get the new behaviour node pos = pclNextLoop -> m_pub_fn_ptdGetListOfChildNodes () -> GetHeadPosition (); while (pos) { pclBehaviourNode = pclNextLoop -> m_pub_fn_ptdGetListOfChildNodes () -> GetNext (pos); if (csBehaviourName == pclBehaviourNode -> m_pub_fn_csGetNodeName ()) { pclNextLine = pclBehaviourNode -> m_pub_fn_ptdGetListOfChildNodes () -> GetHead (); break; } } } else { pclNextLine = pclBehaviourNode -> m_pub_fn_ptdGetListOfChildNodes () -> GetNext (pos); } } if (pclNextLine) { // select the line m_pri_pclTreeControl -> m_pub_fn_vSelectAndShowItem (pclNextLine -> m_pub_fn_hGetTreeItem ()); } } // END ROMTEAM Cristi Petrescu 98-08- //*************************************************************************** //*************************************************************************** //*************************************************************************** //*************************************************************************** /////////////////////// // Private functions // /////////////////////// //*************************************************************************** void IAD_ResultView::m_pri_fn_vComputeEditorTreeFromMotorTrace(struct IAD_stInternalActorDescription *_p_stInternalActor) { //Gets motor trace if ( ((tdstEngineObject *)_p_stInternalActor->pclActor->GetStruct())->h_Brain != NULL ) { AI_tdstMind *p_stMind = M_pstGetMindOfBrain( ((tdstEngineObject *)_p_stInternalActor->pclActor->GetStruct())->h_Brain ); //Building Tree Root if ( _p_stInternalActor->pclRoot == NULL ) _p_stInternalActor->pclRoot = new IAD_EditorTreeNode; m_pri_ulTotalNumberOfNodes = 0; //Inits motor trace reading unsigned char ucDepth; // CG PB DEBUGGER 23/06/98 { #ifdef ACTIVE_AIDEBUG BOOL bMustGoOn = ( AIDebug_fn_bInitExploitation(p_stMind, &m_pri_tdeSectionType, &m_pri_lID, &m_pri_stGetSetParam, &ucDepth, &m_pri_p_stNode) == 1 ); #else BOOL bMustGoOn = FALSE; #endif // CG PB DEBUGGER if ( bMustGoOn ) { m_pri_bMustStopTreeConstruction = FALSE; //Will be called recursively m_pri_fn_lAddChildNodesToOneNode(_p_stInternalActor->pclRoot, p_stMind, ucDepth, _p_stInternalActor); //BEGIN ROMTEAM Cristi Petrescu 98-05- //cleanup unneeded nodes (Reflex/AI), mark changements) m_fn_vPostProcessEditorTree (_p_stInternalActor->pclRoot); //END ROMTEAM Cristi Petrescu 98-05- } else { CString csMessage = "Nothing in Trace for the Actor '" + _p_stInternalActor->pclActor->GetName() + "' !"; m_pub_fn_vSetStatusText(csMessage, 0); } } else { CString csMessage = "No Brain for the Actor '" + _p_stInternalActor->pclActor->GetName() + "' ! This should not occur..."; m_pub_fn_vSetStatusText(csMessage, 0); } } //*************************************************************************** long IAD_ResultView::m_pri_fn_lAddChildNodesToOneNode(IAD_EditorTreeNode *_pclParentNode, struct AI_tdstMind_ *_p_tdstMind, long _lPreviousDepth, struct IAD_stInternalActorDescription *_p_stInternalActor) { long lOffsetIndex = 0; unsigned char ucCurrentDepth = (unsigned char)_lPreviousDepth; CString csNewElementType; CString csNewElementName; CString csNewElementValue; CString csNewElemenReturnValue; BOOL bMustGoOn = TRUE; BOOL bReadNextElement = TRUE; IAD_EditorTreeNode *pclLastAddedNode = NULL; //BEGIN ROMTEAM Cristi Petrescu 98-05- CString csBehaviourName; //END ROMTEAM Cristi Petrescu 98-05- // CG PB DEBUGGER 23/06/98 { #ifdef ACTIVE_AIDEBUG while ( bMustGoOn ) { // BEGIN ROMTEAM Cristi Petrescu 98-06- // I'll keep this node since it seems it replaces a normal node. Is very strange... // this was already added in the first pass // Further tests shows tis is not true. So, KILL this node without remorse //while (m_pri_tdeSectionType == AIDebug_E_SecTyp_CurrentComport) //{ //skip it // m_pri_bMustStopTreeConstruction = (AIDebug_fn_bGetNextEntry (_p_tdstMind, & m_pri_tdeSectionType, & m_pri_lID, & m_pri_stGetSetParam, & ucCurrentDepth, & m_pri_p_stNode) == 0); // if (! m_pri_bMustStopTreeConstruction) // return ucCurrentDepth; //} // END ROMTEAM Cristi Petrescu 98-06- //Adds node to current Father if ( ucCurrentDepth == _lPreviousDepth ) { //Computes strings if ( g_a_p_fnArrayOfGetTypeCallBacks[m_pri_tdeSectionType] != NULL ) csNewElementType = g_a_p_fnArrayOfGetTypeCallBacks[m_pri_tdeSectionType](m_pri_lID, &m_pri_stGetSetParam); else csNewElementType = "Unknown"; if ( g_a_p_fnArrayOfGetNameCallBacks[m_pri_tdeSectionType] != NULL ) csNewElementName = g_a_p_fnArrayOfGetNameCallBacks[m_pri_tdeSectionType](m_pri_lID, &m_pri_stGetSetParam); else csNewElementName = ""; if ( g_a_p_fnArrayOfGetValueCallBacks[m_pri_tdeSectionType] != NULL ) csNewElementValue = g_a_p_fnArrayOfGetValueCallBacks[m_pri_tdeSectionType](m_pri_lID, &m_pri_stGetSetParam); else csNewElementValue = ""; if ( g_a_p_fnArrayOfGetReturnValueCallBacks[m_pri_tdeSectionType] != NULL ) csNewElemenReturnValue = g_a_p_fnArrayOfGetReturnValueCallBacks[m_pri_tdeSectionType](m_pri_lID, &m_pri_stGetSetParam); else csNewElemenReturnValue = ""; //BEGIN ROMTEAM Cristi Petrescu 98-05- if (_pclParentNode -> m_pub_fn_tdeGetNodeType () == AIDebug_E_SecTyp_ReflexOrAI) { if (m_pri_tdeSectionType == AIDebug_E_SecTyp_CurrentComport) { char szName[SCR_CV_ui_Cfg_MaxLenName]; SCR_fn_v_RdL0_SplitSectionName((char*)(LPCSTR) csNewElementValue, NULL, NULL, szName); csBehaviourName = CString (szName); // BEGIN ROMTEAM Cristi Petrescu 98-08- csNewElementValue = csBehaviourName; // END ROMTEAM Cristi Petrescu 98-08- } else { csBehaviourName = _p_stInternalActor -> pclActor -> m_fn_csGetBehaviourName (m_pri_p_stNode); } BOOL bBehaviourNodeExists = FALSE; POSITION pos = _pclParentNode -> m_pub_fn_ptdGetListOfChildNodes () -> GetHeadPosition (); IAD_EditorTreeNode *pclBehaviourNode; while (pos) { pclBehaviourNode = _pclParentNode -> m_pub_fn_ptdGetListOfChildNodes () -> GetNext (pos); if (csBehaviourName == pclBehaviourNode -> m_pub_fn_csGetNodeName ()) { bBehaviourNodeExists = TRUE; break; } } if (! bBehaviourNodeExists) { CString csBehaviourType; // BEGIN ROMTEAM Cristi Petrescu 98-08- if (m_pri_tdeSectionType == AIDebug_E_SecTyp_CurrentComport) csBehaviourType = "C "; if (_pclParentNode -> m_pub_fn_csGetNodeType () == "Reflex") csBehaviourType += "R:"; else csBehaviourType += "I:"; // END ROMTEAM Cristi Petrescu 98-08- //create a the behaviour name in the parent pclBehaviourNode = _pclParentNode -> m_pub_fn_pclAddChildNode ( AIDebug_E_SecTyp_ReflexOrAI, NULL, _p_stInternalActor->pclActor, csBehaviourType, csBehaviourName, "", "", ""); } // add the node to the behaviour node child list //if (m_pri_tdeSectionType != AIDebug_E_SecTyp_CurrentComport) pclLastAddedNode = pclBehaviourNode->m_pub_fn_pclAddChildNode(m_pri_tdeSectionType, m_pri_p_stNode, _p_stInternalActor->pclActor, csNewElementType, csNewElementName, csNewElementValue, csNewElemenReturnValue, ""); } else { // as usual pclLastAddedNode = _pclParentNode->m_pub_fn_pclAddChildNode(m_pri_tdeSectionType, m_pri_p_stNode, _p_stInternalActor->pclActor, csNewElementType, csNewElementName, csNewElementValue, csNewElemenReturnValue, ""); } //END ROMTEAM Cristi Petrescu 98-05- m_pri_ulTotalNumberOfNodes ++; bReadNextElement = TRUE; } //returns else if ( ucCurrentDepth < _lPreviousDepth ) { bMustGoOn = FALSE; } //Adds childs nodes else if ( ucCurrentDepth > _lPreviousDepth ) { ucCurrentDepth = (unsigned char)m_pri_fn_lAddChildNodesToOneNode( pclLastAddedNode, _p_tdstMind, ucCurrentDepth, _p_stInternalActor); bReadNextElement = FALSE; bMustGoOn = !m_pri_bMustStopTreeConstruction; } if ( bMustGoOn && bReadNextElement ) { // BEGIN ROMTEAM Cristi Petrescu 98-06- if (m_pri_tdeSectionType == AIDebug_E_SecTyp_EngineLoop) { // force abort tree computation AIDebug_tdstTrace *p_stTrace = AI_M_p_stGetTrace(_p_tdstMind); pclLastAddedNode -> m_uwSubtreeTraceIndex = AIDebug_M_uwGetExplIndex( p_stTrace ); pclLastAddedNode -> m_bSubtreeBuilded = FALSE; // get all engine loops // + get the variables snapshot while (1) { m_pri_bMustStopTreeConstruction = ( AIDebug_fn_bGetNextEntry (_p_tdstMind, & m_pri_tdeSectionType, & m_pri_lID, & m_pri_stGetSetParam, & ucCurrentDepth, & m_pri_p_stNode) == 0); if (m_pri_bMustStopTreeConstruction) break; // look for variables snapshot if (m_pri_tdeSectionType == AIDebug_E_SecTyp_DsgVar && m_pri_p_stNode == NULL) { // TODO get the variable pclLastAddedNode -> m_fn_vAddVariableValue (& m_pri_stGetSetParam); // for the subtree computation, just skip those nodes pclLastAddedNode -> m_uwSubtreeTraceIndex = AIDebug_M_uwGetExplIndex( p_stTrace ); continue; } // look for change behaviour nodes if (m_pri_tdeSectionType == AIDebug_E_SecTyp_CurrentComport) { // get the values for the node. csNewElementType = "Changed Behaviour"; //if ( g_a_p_fnArrayOfGetTypeCallBacks[m_pri_tdeSectionType] != NULL ) // csNewElementType = g_a_p_fnArrayOfGetTypeCallBacks[m_pri_tdeSectionType](m_pri_lID, &m_pri_stGetSetParam); //else // csNewElementType = "Unknown"; if ( g_a_p_fnArrayOfGetNameCallBacks[m_pri_tdeSectionType] != NULL ) csNewElementName = g_a_p_fnArrayOfGetNameCallBacks[m_pri_tdeSectionType](m_pri_lID, &m_pri_stGetSetParam); else csNewElementName = ""; if ( g_a_p_fnArrayOfGetValueCallBacks[m_pri_tdeSectionType] != NULL ) csNewElementValue = g_a_p_fnArrayOfGetValueCallBacks[m_pri_tdeSectionType](m_pri_lID, &m_pri_stGetSetParam); else csNewElementValue = ""; if ( g_a_p_fnArrayOfGetReturnValueCallBacks[m_pri_tdeSectionType] != NULL ) csNewElemenReturnValue = g_a_p_fnArrayOfGetReturnValueCallBacks[m_pri_tdeSectionType](m_pri_lID, &m_pri_stGetSetParam); else csNewElemenReturnValue = ""; // build change comport node pclLastAddedNode -> m_pub_fn_pclAddChildNode(m_pri_tdeSectionType, m_pri_p_stNode, _p_stInternalActor->pclActor, csNewElementType, csNewElementName, csNewElementValue, csNewElemenReturnValue, ""); continue; } if (m_pri_tdeSectionType == AIDebug_E_SecTyp_EngineLoop) { // the next engine loop, add it to the same node m_pri_fn_lAddChildNodesToOneNode (_pclParentNode, _p_tdstMind, _lPreviousDepth, _p_stInternalActor); } } } else { //Gets the next trace element m_pri_bMustStopTreeConstruction = ( AIDebug_fn_bGetNextEntry( _p_tdstMind, &m_pri_tdeSectionType, &m_pri_lID, &m_pri_stGetSetParam, &ucCurrentDepth, &m_pri_p_stNode) == 0 ); } // END ROMTEAM Cristi Petrescu 98-06- bMustGoOn = !m_pri_bMustStopTreeConstruction; } } #endif // CG PB DEBUGGER return ucCurrentDepth; } //BEGIN ROMTEAM Cristi Petrescu 98-05- //*************************************************************************** void IAD_ResultView::m_fn_vPostProcessEditorTree (IAD_EditorTreeNode *_pclParentNode) { IAD_tdListOfNodes clListOfNodes; IAD_EditorTreeNode *_pclCurrentNode; POSITION pos = _pclParentNode -> m_pub_fn_ptdGetListOfChildNodes () -> GetHeadPosition (); while ( pos != NULL ) { _pclCurrentNode = _pclParentNode -> m_pub_fn_ptdGetListOfChildNodes () -> GetNext (pos); // CG PB DEBUGGER 23/06/98 { #ifdef ACTIVE_AIDEBUG //cleanup, eliminates the "Reflex" and "AI" nodes // but keep all others if (_pclParentNode -> m_pub_fn_tdeGetNodeType () == AIDebug_E_SecTyp_EngineLoop) { if (_pclCurrentNode -> m_pub_fn_tdeGetNodeType () == AIDebug_E_SecTyp_ReflexOrAI) { IAD_EditorTreeNode *_pclNode; POSITION cleanpos = _pclCurrentNode->m_pub_fn_ptdGetListOfChildNodes()->GetHeadPosition(); IAD_tdListOfNodes clListOfAllNodes; while (cleanpos != NULL) { _pclNode = _pclCurrentNode->m_pub_fn_ptdGetListOfChildNodes()->GetNext(cleanpos); clListOfNodes . AddTail (_pclNode); // and set the parent pointer properly _pclNode -> m_fn_vSetParentNode (_pclParentNode); } } else { clListOfNodes . AddTail (_pclCurrentNode); } } #endif // CG PB DEBUGGER //Calls recursively to build childs level m_fn_vPostProcessEditorTree(_pclCurrentNode); } // CG PB DEBUGGER 23/06/98 { #ifdef ACTIVE_AIDEBUG if (_pclParentNode -> m_pub_fn_tdeGetNodeType () == AIDebug_E_SecTyp_EngineLoop) { _pclParentNode -> m_fn_vSetListOfChildNodes (& clListOfNodes); } #endif // CG PB DEBUGGER } //END ROMTEAM Cristi Petrescu 98-05- // BEGIN ROMTEAM Cristi Petrescu 98-06- //*************************************************************************** void IAD_ResultView::m_fn_vBuildSubtree (IAD_EditorTreeNode *pclParentNode)//, HTREEITEM hTreeParentItem) { // BEGIN ROMTEAM Cristi Petrescu 98-08- HTREEITEM hTreeParentItem = pclParentNode -> m_pub_fn_hGetTreeItem (); // END ROMTEAM Cristi Petrescu 98-08- m_pri_bMustStopTreeConstruction = FALSE; AI_tdstMind *p_stMind = M_pstGetMindOfBrain(((tdstEngineObject *) m_p_stInternalActor -> pclActor -> GetStruct ()) -> h_Brain); unsigned char ucCurrentDepth; // CG PB DEBUGGER 23/06/98 { #ifdef ACTIVE_AIDEBUG m_pri_bMustStopTreeConstruction = (AIDebug_fn_bGetNextEntry (p_stMind, & m_pri_tdeSectionType, & m_pri_lID, & m_pri_stGetSetParam, & ucCurrentDepth, & m_pri_p_stNode) == 0); #else m_pri_bMustStopTreeConstruction = TRUE; #endif // CG PB DEBUGGER while (! m_pri_bMustStopTreeConstruction) { m_pri_fn_lAddChildNodesToOneNode (pclParentNode, p_stMind, ucCurrentDepth, // the depth of the Loop is 1 m_p_stInternalActor); // CG PB DEBUGGER 23/06/98 { #ifdef ACTIVE_AIDEBUG if (m_pri_tdeSectionType == AIDebug_E_SecTyp_EngineLoop) m_pri_bMustStopTreeConstruction = TRUE; #endif // CG PB DEBUGGER } m_fn_vPostProcessEditorTree (pclParentNode); // synchro new data with tree control m_pri_fn_vFillOneLevelOfTree (pclParentNode, hTreeParentItem, TRUE); } IAD_EditorTreeNode *IAD_ResultView::m_fn_pclGetSelectedEditorNode (void) { // first, which is the selected tree control node? HTREEITEM hItem = m_pri_pclTreeControl -> GetSelectedItem (); if (! hItem) return NULL; // now, get the coresponding editor node return (IAD_EditorTreeNode *) m_pri_pclTreeControl -> GetItemData (hItem); } // END ROMTEAM Cristi Petrescu 98-06- //*************************************************************************** void IAD_ResultView::m_pri_fn_vFillTreeControl(struct IAD_stInternalActorDescription *_p_stInternalActor) { ERROR_ASSERT( m_pri_pclTreeControl != NULL ); if ( ( _p_stInternalActor != NULL ) && ( _p_stInternalActor->pclRoot != NULL ) ) { // BEGIN ROMTEAM Cristi Petrescu 98-06- m_fn_pclGetDocument()->m_pub_bIsDeletingTree = TRUE; m_pri_pclTreeControl->DeleteAllItems(); m_fn_pclGetDocument()->m_pub_bIsDeletingTree = FALSE; // END ROMTEAM Cristi Petrescu 98-06- m_pri_ulCurrentNode = 0; m_pri_pclTreeControl -> m_pclSelectedBehaviourNode = NULL; m_pri_fn_vFillOneLevelOfTree(_p_stInternalActor->pclRoot, TVI_ROOT); // BEGIN ROMTEAM Cristi Petrescu 98-08- if (_p_stInternalActor->pclRoot->m_pub_fn_ptdGetListOfChildNodes()->GetCount()) { // Find last loop IAD_EditorTreeNode * pclLastEngineLoopNode = _p_stInternalActor -> pclRoot -> m_pub_fn_ptdGetListOfChildNodes () -> GetTail (); if (pclLastEngineLoopNode) { HTREEITEM hTree = pclLastEngineLoopNode -> m_pub_fn_hGetTreeItem (); if (hTree) { // Selects it -> this will build the subtree m_pri_pclTreeControl -> SelectItem (hTree); // Open it one level m_pri_pclTreeControl -> Expand (hTree, TVE_EXPAND); } } } // END ROMTEAM Cristi Petrescu 98-08- } } //*************************************************************************** // BEGIN ROMTEAM Cristi Petrescu 98-06- void IAD_ResultView::m_pri_fn_vFillOneLevelOfTree(IAD_EditorTreeNode *_pclParentNode, HTREEITEM _hTreeParentItem, BOOL bSkipChangeComport /* == FALSE*/) // END ROMTEAM Cristi Petrescu 98-06- { IAD_EditorTreeNode *_pclCurrentNode; HTREEITEM hTreeCurrentItem; unsigned char ucPercentage; CString csProgressionString; POSITION pos = _pclParentNode->m_pub_fn_ptdGetListOfChildNodes()->GetHeadPosition(); while ( pos != NULL ) { _pclCurrentNode = _pclParentNode->m_pub_fn_ptdGetListOfChildNodes()->GetNext(pos); //BEGIN ROMTEAM Cristi Petrescu 98-05- //Adds in Tree, if needed if (!((_pclCurrentNode -> m_pub_fn_csGetNodeType () == "R:" && m_bViewReflex == FALSE) || (_pclCurrentNode -> m_pub_fn_csGetNodeType () == "I:" && m_bViewAI == FALSE)) && !(bSkipChangeComport && _pclCurrentNode -> m_pub_fn_csGetNodeType () == "Changed Behaviour")) { //END ROMTEAM Cristi Petrescu 98-05- hTreeCurrentItem = m_pri_pclTreeControl->InsertItem(_pclCurrentNode->m_pub_fn_csGetCompleteString(), _hTreeParentItem); m_pri_pclTreeControl->SetItemData(hTreeCurrentItem, DWORD(_pclCurrentNode)); _pclCurrentNode->m_pub_fn_vSetTreeItem(hTreeCurrentItem); //Displays infos m_pri_ulCurrentNode ++; ucPercentage = (unsigned char)((m_pri_ulCurrentNode * 100) / m_pri_ulTotalNumberOfNodes ); csProgressionString.Format("Filling Tree : node %ld on %ld", m_pri_ulCurrentNode, m_pri_ulTotalNumberOfNodes); m_pub_fn_vSetStatusText(csProgressionString, ucPercentage); //Calls recursively to build childs level m_pri_fn_vFillOneLevelOfTree(_pclCurrentNode, hTreeCurrentItem); //BEGIN ROMTEAM Cristi Petrescu 98-05- } //END ROMTEAM Cristi Petrescu 98-05- } } //*************************************************************************** long IAD_ResultView::m_pri_fn_lLookInChildsToExpand(HTREEITEM _hParentItem, long _lCurrentLevel) { long lCurrentLevel = _lCurrentLevel + 1; HTREEITEM hCurrentChildItem = m_pri_pclTreeControl->GetNextItem(_hParentItem, TVGN_CHILD); while ( hCurrentChildItem != NULL ) { //Tries to expand childs of this root Item, at the right level m_pri_pclTreeControl->Expand(hCurrentChildItem, (lCurrentLevel < m_lLevelToExpand) ? TVE_EXPAND : TVE_COLLAPSE); m_pri_fn_lLookInChildsToExpand(hCurrentChildItem, lCurrentLevel); hCurrentChildItem = m_pri_pclTreeControl->GetNextItem(hCurrentChildItem, TVGN_NEXT); } return -1; } ///////////////////////////////////////////////////////////////////////////// // IAD_ResultView diagnostics //*************************************************************************** //*************************************************************************** //*************************************************************************** #ifdef _DEBUG void IAD_ResultView::AssertValid() const { CFormView::AssertValid(); } void IAD_ResultView::Dump(CDumpContext& dc) const { CFormView::Dump(dc); } // BEGIN ROMTEAM Cristi Petrescu 98-08- /* void IAD_ResultView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { switch (nChar) { case VK_F10: OnButtonNextLine (); break; default: break; } CFormView::OnKeyDown(nChar, nRepCnt, nFlags); } */ /* BOOL IAD_ResultView::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { NMHDR * pNMHDR = (NMHDR *) lParam; TV_KEYDOWN * pTV_KEYDOWN; switch (pNMHDR -> code) { case TVN_KEYDOWN: // for tree case TCN_KEYDOWN: // for tabs //case HDN_KEYDOWN: // for header (?) //case TTN_KEYDOWN: // for tool tip case LVN_KEYDOWN: // for list pTV_KEYDOWN = (TV_KEYDOWN *) lParam; switch (pTV_KEYDOWN -> wVKey) { case VK_F10: OnButtonNextLine (); return TRUE; default: break; } break; default: break; } return CFormView::OnNotify(wParam, lParam, pResult); } void IAD_ResultView::OnAccNextLine() { OnButtonNextLine (); } */ // END ROMTEAM Cristi Petrescu 98-08- #endif //_DEBUG