404 lines
12 KiB
C++
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
|
|
|