www.pudn.com > 44757463.rar > CoreLog.cpp


// CoreLog.cpp: CCoreLog  
// 
////////////////////////////////////////////////////////////////////// 
#include "stdafx.h" 
#include "Core.h" 
#include "CoreLog.h" 
#include "UND_Base.h" 
 
 
CCoreLog::CCoreLog() 
{ 
	m_nUndoInfo = 0; 
	m_nUndoUndo = 0; 
	m_fp = NULL;	 
	m_logfile.Format("GrapgSoftTmp.log"); 
} 
 
CCoreLog::~CCoreLog() 
{ 
	//空间的释放,所有的图形空间都是通过CUND_Create和CUND_Copy两个类来释放的,因为只有这两个类才会新建图形对象 
	for (int ii = 0; ii < m_undoInfo.GetSize(); ii++) 
	{ 
		m_undoInfo[ii]->Destroy(); 
		delete m_undoInfo[ii]; 
	} 
	m_undoInfo.RemoveAll(); 
	CloseLog();	 
	remove(m_logfile); 
} 
 
void CCoreLog::OpenLog() 
{ 
	m_fp = fopen(m_logfile, "at"); 
} 
void CCoreLog::CloseLog() 
{ 
	if (m_fp != NULL) { 
		fclose(m_fp); 
		m_fp = NULL; 
	} 
} 
 
BOOL CCoreLog::WriteLogString(CString text) 
{ 
	FILE* fp = m_fp; 
	if (fp == NULL) 
		fp = fopen(m_logfile, "at"); 
	if (fp == NULL) return false; 
	fseek(fp, 0, SEEK_END); 
	fprintf(fp, "%s\n", text); 
	if (m_fp == NULL) 
		fclose(fp); 
	return true; 
} 
void CCoreLog::OnEditUndo(CCore* pCore) 
{ 
	if(m_nUndoUndo>0) 
	{ 
		CUND_Base* pUndo=m_undoInfo.GetAt(m_nUndoUndo-1); 
		pUndo->OnEditUndo(pCore); 
		m_nUndoUndo--; 
	}	 
} 
 
void CCoreLog::OnEditRedo(CCore* pCore) 
{ 
	if(m_nUndoUndoOnEditRedo(pCore);		 
	}	 
} 
 
BOOL CCoreLog::IsAbleToUndo() 
{ 
	if (m_nUndoUndo > 0) 
		return true; 
	return false; 
} 
 
BOOL CCoreLog::IsAbleToRedo() 
{ 
	if (m_nUndoUndo < m_nUndoInfo) 
		return true; 
	return false; 
} 
 
void CCoreLog::AddUndoItem(CUND_Base* pUndo) 
{ 
	//先将后面已经撤消的撤消给删除 	 
	CUND_Base* pBase; 
	for (int i = m_nUndoInfo-1; i > m_nUndoUndo-1; i--) 
	{ 
		pBase = m_undoInfo[i]; 
		m_undoInfo.RemoveAt(i); 
		delete pBase; 
	} 
	//将新的撤消项加到最后 
	m_undoInfo.Add(pUndo); 
	m_nUndoUndo++; 
	m_nUndoInfo=m_nUndoUndo; 
} 
void CCoreLog::DelLastUndoItem() 
{ 
	if(m_nUndoInfo>0){ 
		CUND_Base* pBase;		 
		pBase = m_undoInfo[m_nUndoInfo-1]; 
		m_undoInfo.RemoveAt(m_nUndoInfo-1); 
		delete pBase; 
		m_nUndoInfo--; 
		m_nUndoUndo--;		 
	} 
 
} 
////////////////////////////////////////////////////////////////////////////////// 
//End of File