reman3/Rayman_X/cpa/tempgrp/TIA/Src/EdIRRVw.cpp

404 lines
12 KiB
C++

// EdIAView.cpp : implementation of the CEdIAView class
//
#include "stdafx.h"
#include "Defines.hpp"
#ifdef D_ED_IR_ACTIVE
#include "EdIRRVw.hpp"
#include "EdIRBeha.hpp"
#include "EdIRBeEn.hpp"
#include "EdIRIRD.hpp"
#include "EdIRBVw.hpp"
#include "EdIRFrm.hpp"
#include "EdIRRes.hm"
#include "ai_intf.hpp"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//Stefan Dumitrean 22-06-98 ( choose font )
#define C_FONT_SETTINGS_FILE_NAME "\\cpa\\exe\\main\\edt_data\\fontsize.dat"
//End Stefan Dumitrean 22-06-98 ( choose font )
/////////////////////////////////////////////////////////////////////////////
// class CPA_EdIR_View
/////////////////////////////////////////////////////////////////////////////
IMPLEMENT_DYNCREATE(CPA_EdIR_View, CFormView)
BEGIN_MESSAGE_MAP(CPA_EdIR_View, CFormView)
//{{AFX_MSG_MAP(CPA_EdIR_View)
ON_WM_HELPINFO()
ON_WM_PAINT()
ON_WM_SIZE()
//}}AFX_MSG_MAP
ON_WM_NCHITTEST()
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPA_EdIR_View construction/destruction
/**********************************************************************************/
CPA_EdIR_View::CPA_EdIR_View()
: CFormView(CPA_EdIR_View::IDD)
{
//{{AFX_DATA_INIT(CPA_EdIR_View)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// TODO: add construction code here
m_bIsReadOnly=FALSE;
m_pclBreakPointList=NULL;
//BEGIN ROMTEAM Cristi Petrescu 98-05-
m_pclDebugInfoList = NULL;
//END ROMTEAM Cristi Petrescu 98-05-
//Stefan Dumitrean 8-06-98 (new scroll )
m_p_clEditControl = NULL;
//End Stefan Dumitrean 8-06-98
}
/**********************************************************************************/
CPA_EdIR_View::~CPA_EdIR_View()
{
}
/**********************************************************************************/
void CPA_EdIR_View::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPA_EdIR_View)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
/**********************************************************************************/
BOOL CPA_EdIR_View::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CFormView::PreCreateWindow(cs);
}
/**********************************************************************************/
BOOL CPA_EdIR_View::Create(LPCTSTR lpszClassName,LPCTSTR lpszWindowName,DWORD dwStyle,const RECT &rect,CWnd *pParentWnd,UINT nID,CCreateContext *pContext)
{
BOOL bRes=CFormView::Create(lpszClassName,lpszWindowName,dwStyle,rect,pParentWnd,nID,pContext);
//Stefan Dumitrean 19-06-98 ( choose font )
if( bRes && !m_fn_bLoadFontSettings( C_FONT_SETTINGS_FILE_NAME ) )
{
GetFont()->GetLogFont( &m_stCurrentFont );
m_nFontSize = 100; //don't know how to get the size from the LOGFONT structure
}
//End Stefan Dumitrean 19-06-98 ( choose font )
return bRes;
}
/////////////////////////////////////////////////////////////////////////////
// CPA_EdIR_View diagnostics
#ifdef _DEBUG
/**********************************************************************************/
void CPA_EdIR_View::AssertValid() const
{
CFormView::AssertValid();
}
/**********************************************************************************/
void CPA_EdIR_View::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CPA_EdIR_View message handlers
/**********************************************************************************/
void CPA_EdIR_View::OnInitialUpdate()
{
HINSTANCE hOldInstance=AfxGetResourceHandle();
AfxSetResourceHandle(g_stAIIdentity.hModule);
CFormView::OnInitialUpdate();
AfxSetResourceHandle(hOldInstance);
}
/**********************************************************************************/
UINT CPA_EdIR_View::OnNcHitTest(CPoint point)
{
UINT uiHitTest=CWnd::OnNcHitTest(point);
if(uiHitTest!=HTBOTTOM &&
uiHitTest!=HTBOTTOMLEFT &&
uiHitTest!=HTBOTTOMRIGHT &&
uiHitTest!=HTCAPTION &&
uiHitTest!=HTGROWBOX &&
uiHitTest!=HTLEFT &&
uiHitTest!=HTMENU &&
uiHitTest!=HTRIGHT &&
uiHitTest!=HTSIZE &&
uiHitTest!=HTTOPLEFT &&
uiHitTest!=HTTOPRIGHT)
return uiHitTest;
else
return 0;
}
/**********************************************************************************/
void CPA_EdIR_View::OnPaint()
{
CPA_EdIR_Behaviour *pclActiveBehaviour=((CPA_EdIR_Frame *)GetParentFrame())->m_fn_pclGetDiagrammeView()->m_fn_pclGetActiveBehaviour();
//Stefan Dumitrean 9-06-98 (new scroll)
// CPoint cpOffset=GetScrollPosition();
CPoint cpOffset=0;
//End Stefan Dumitrean 9-06-98
CClientDC cDc(this);
CFormView::OnPaint();
//BEGIN ROMTEAM Cristi Petrescu 98-05-
//Mark executed lines
CPA_EdIR_Frame *pclIRMainFrame=g_pclAIInterface->m_pclIRMainFrame;
tdeEditState tdeState=pclIRMainFrame->m_fn_pclGetButtonView()->m_fn_tdeGetEditState();
if (tdeState == EditIntell || tdeState == EditReflex)
{
CPA_DLLBase *pclDebugDLL = (CPA_DLLBase*) (g_pclAIInterface -> GetMainWorld () -> GetToolDLLWithName ("IA_Debugger"));
if (pclDebugDLL -> fn_bIsCurrentEditor () &&
g_pclAIInterface -> m_pclIRMainFrame -> m_bMarkExecutedLines)
{
if(m_pclDebugInfoList!=NULL)
{
HICON hDebugInfoIcon=AfxGetApp()->LoadIcon(IDI_ICON_IR_MARKEXECUTED);
//Draws mark
if(pclActiveBehaviour!=NULL)
{
POSITION pos=m_pclDebugInfoList->GetHeadPosition();
while(pos!=NULL)
{
CPA_EdIR_DebugInfo *pclDebugInfo=m_pclDebugInfoList->GetNext(pos);
if(pclDebugInfo -> m_fn_bGetExecuted ())
{
long lLineIndex=pclActiveBehaviour->m_fn_lGetLineNumberInPixel(pclDebugInfo->m_fn_lGetIndex());
CPoint p(0,lLineIndex);
p-=cpOffset;
cDc.DrawIcon(p,hDebugInfoIcon);
}
}
}
}
}
//END ROMTEAM Cristi Petrescu 98-05-
// BEGIN ROMTEAM Cristi Petrescu 98-08-
// Draws Executed line
if (pclDebugDLL -> fn_bIsCurrentEditor ())
{
HICON hDebugInfoIcon=AfxGetApp()->LoadIcon(IDI_ICON_EXECUTED_LINE);
if (m_lExecutedLine >=0)
{
long lLineIndex=pclActiveBehaviour->m_fn_lGetLineNumberInPixel(m_lExecutedLine);
CPoint p(0,lLineIndex);
p-=cpOffset;
cDc.DrawIcon(p,hDebugInfoIcon);
}
}
// END ROMTEAM Cristi Petrescu 98-08-
}
//Draws BreakPointList
if(m_pclBreakPointList!=NULL)
{
HICON hBreakPointIcon=AfxGetApp()->LoadIcon(IDI_ICON_IR_BREAKPOINT);
//Draws BreakPoint
if(pclActiveBehaviour!=NULL)
{
CString csActiveBehaviourName=pclActiveBehaviour->m_fn_pclGetMainBehaviour()->GetName();
POSITION pos=m_pclBreakPointList->GetHeadPosition();
while(pos!=NULL)
{
CPA_EdIR_BreakPoint *pclBreakPoint=m_pclBreakPointList->GetNext(pos);
if(pclBreakPoint->m_fn_csGetBehaviourName()==csActiveBehaviourName)
{
long lLineIndex=pclActiveBehaviour->m_fn_lGetLineNumberInPixel(pclBreakPoint->m_fn_lGetIndex());
CPoint p(0,lLineIndex);
p-=cpOffset;
cDc.DrawIcon(p,hBreakPointIcon);
}
}
}
}
//ANNECY CB
if(pclActiveBehaviour && pclActiveBehaviour->m_lErrorIndex != -1)
{
HICON hIcon=AfxGetApp()->LoadIcon(IDI_ICON_IR_ERROR);
long lLineIndex=pclActiveBehaviour->m_fn_lGetLineNumberInPixel(pclActiveBehaviour->m_lErrorIndex);
CPoint p(0,lLineIndex);
p-=cpOffset;
cDc.DrawIcon(p,hIcon);
}
//END ANNECY
}
/**********************************************************************************/
BOOL CPA_EdIR_View::OnHelpInfo(HELPINFO* pHelpInfo)
{
::WinHelp(m_hWnd,g_pclAIInterface->m_csBrainHelpFileNameAndPath,HELP_CONTEXT,HID_RULES_ZONE);
return CFormView::OnHelpInfo(pHelpInfo);
}
/**********************************************************************************/
void CPA_EdIR_View::m_fn_vSetReadOnly(BOOL bReadOnly)
{
m_bIsReadOnly=bReadOnly;
}
/**********************************************************************************/
void CPA_EdIR_View::m_fn_vSetBreakPointList(CPA_EdIR_BreakPointList *pclBreakPointList)
{
m_pclBreakPointList=pclBreakPointList;
}
//BEGIN ROMTEAM Cristi Petrescu 98-05-
/**********************************************************************************/
void CPA_EdIR_View::m_fn_vSetDebugInfoList(CPA_EdIR_DebugInfoList *pclDebugInfoList)
{
m_pclDebugInfoList=pclDebugInfoList;
}
//END ROMTEAM Cristi Petrescu 98-05-
//Stefan Dumitrean 8-06-98 ( new scroll )
void CPA_EdIR_View::OnSize(UINT nType, int cx, int cy)
{
CFormView::OnSize(nType, cx, cy);
if( m_p_clEditControl )
m_p_clEditControl->m_fn_vResizeToFitParent();
}
//End Stefan Dumitrean 8-06-98
//Stefan Dumitrean 19-06-98 ( choose font )
void CPA_EdIR_View::m_fn_vChooseFont()
{
CFontDialog clFDlg( &m_stCurrentFont, CF_NOSTYLESEL | CF_SCREENFONTS | CF_NOSCRIPTSEL | CF_FIXEDPITCHONLY, NULL, this );
if( clFDlg.DoModal() == IDOK )
{
clFDlg.GetCurrentFont( &m_stCurrentFont );
m_stCurrentFont.lfWeight = 0;
m_stCurrentFont.lfItalic = 0;
m_stCurrentFont.lfUnderline = 0;
m_nFontSize = clFDlg.GetSize();
m_fn_vSaveFontSettings( C_FONT_SETTINGS_FILE_NAME );
if( m_p_clEditControl )
m_p_clEditControl->m_fn_vSetFontTypeAndSize( );
}
}
CString CPA_EdIR_View::m_fn_csGetFontType()
{
CString csRet = m_stCurrentFont.lfFaceName;
return csRet;
}
int CPA_EdIR_View::m_fn_nGetFontSize()
{
return m_nFontSize;
}
CSize CPA_EdIR_View::m_fn_clGetFontExtent()
{
CFont clFont;
clFont.CreateFontIndirect( &m_stCurrentFont );
CClientDC cdc(this);
CFont *p_clOldFont=cdc.SelectObject(&clFont);
CSize clFontSize = cdc.GetTextExtent("A");
cdc.SelectObject(p_clOldFont);
return clFontSize;
}
void CPA_EdIR_View::m_fn_vSaveFontSettings( CString csString )
{
FILE * stFile = fopen( LPCSTR( csString ), "wt" );
if( !stFile )
return;
fprintf( stFile, "[LOGFONT structure]\n\n" );
fprintf( stFile, "lfHeight = %ld\n", m_stCurrentFont.lfHeight );
fprintf( stFile, "lfWidth = %ld\n", m_stCurrentFont.lfWidth );
fprintf( stFile, "lfEscapement = %ld\n", m_stCurrentFont.lfEscapement );
fprintf( stFile, "lfOrientation = %ld\n", m_stCurrentFont.lfOrientation );
fprintf( stFile, "lfWeight = %ld\n", m_stCurrentFont.lfWeight );
fprintf( stFile, "lfItalic = %d\n", m_stCurrentFont.lfItalic );
fprintf( stFile, "lfUnderline = %d\n", m_stCurrentFont.lfUnderline );
fprintf( stFile, "lfStrikeOut = %d\n", m_stCurrentFont.lfStrikeOut );
fprintf( stFile, "lfCharSet = %d\n", m_stCurrentFont.lfCharSet );
fprintf( stFile, "lfOutPrecision = %d\n", m_stCurrentFont.lfOutPrecision );
fprintf( stFile, "lfClipPrecision = %d\n", m_stCurrentFont.lfClipPrecision );
fprintf( stFile, "lfQuality = %d\n", m_stCurrentFont.lfQuality );
fprintf( stFile, "lfPitchAndFamily = %d\n", m_stCurrentFont.lfPitchAndFamily );
fprintf( stFile, "lfFaceName = %s\n\n", m_stCurrentFont.lfFaceName );
fprintf( stFile, "[Font Size]\n\n" );
fprintf( stFile, "Size = %d\n", m_nFontSize );
fclose( stFile );
}
BOOL CPA_EdIR_View::m_fn_bLoadFontSettings( CString csString )
{
FILE * stFile = fopen( LPCSTR( csString ), "rt" );
if( !stFile )
return FALSE;
fscanf( stFile, "[LOGFONT structure]\n\n" );
fscanf( stFile, "lfHeight = %ld\n", &m_stCurrentFont.lfHeight );
fscanf( stFile, "lfWidth = %ld\n", &m_stCurrentFont.lfWidth );
fscanf( stFile, "lfEscapement = %ld\n", &m_stCurrentFont.lfEscapement );
fscanf( stFile, "lfOrientation = %ld\n", &m_stCurrentFont.lfOrientation );
fscanf( stFile, "lfWeight = %ld\n", &m_stCurrentFont.lfWeight );
fscanf( stFile, "lfItalic = %d\n", &m_stCurrentFont.lfItalic );
fscanf( stFile, "lfUnderline = %d\n", &m_stCurrentFont.lfUnderline );
fscanf( stFile, "lfStrikeOut = %d\n", &m_stCurrentFont.lfStrikeOut );
fscanf( stFile, "lfCharSet = %d\n", &m_stCurrentFont.lfCharSet );
fscanf( stFile, "lfOutPrecision = %d\n", &m_stCurrentFont.lfOutPrecision );
fscanf( stFile, "lfClipPrecision = %d\n", &m_stCurrentFont.lfClipPrecision );
fscanf( stFile, "lfQuality = %d\n", &m_stCurrentFont.lfQuality );
fscanf( stFile, "lfPitchAndFamily = %d\n", &m_stCurrentFont.lfPitchAndFamily );
fscanf( stFile, "lfFaceName = %s\n\n", m_stCurrentFont.lfFaceName );
fscanf( stFile, "[Font Size]\n\n" );
fscanf( stFile, "Size = %d\n", &m_nFontSize );
fclose( stFile );
return TRUE;
}
//End Stefan Dumitrean 19-06-98 ( choose font )
#endif //D_ED_IR_ACTIVE