⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cedtviewhndrmisc.cpp

📁 Crimson编辑器的英文版,完成从韩文版变成英文版的移植,并且附带可执行文件和注册表文件,无需原先的安装包,是改写编辑器的最理想选择.
💻 CPP
字号:
#include "stdafx.h"
#include "cedtHeader.h"

#include "MacroDefineDialog.h"
#include "UserInputDialog.h"


/////////////////////////////////////////////////////////////////////////////
// Misc Menu

void CCedtView::OnMoveCaretLeft() // not used now
{
	UINT nFlags = GetKeyState() & ~KEYSTATE_CONTROL;
	OnMoveKeyDown(VK_LEFT, nFlags);
}

void CCedtView::OnMoveCaretRight() // not used now
{
	UINT nFlags = GetKeyState() & ~KEYSTATE_CONTROL;
	OnMoveKeyDown(VK_RIGHT, nFlags);
}

void CCedtView::OnMoveCaretUp() 
{
	UINT nFlags = GetKeyState() & ~KEYSTATE_CONTROL;
	OnMoveKeyDown(VK_UP, nFlags);
}

void CCedtView::OnMoveCaretDown() 
{
	UINT nFlags = GetKeyState() & ~KEYSTATE_CONTROL;
	OnMoveKeyDown(VK_DOWN, nFlags);
}

void CCedtView::OnMoveCaretHome() // not used now
{
	UINT nFlags = GetKeyState() & ~(KEYSTATE_CONTROL | KEYSTATE_MENU);
	OnMoveKeyDown(VK_HOME, nFlags);
}

void CCedtView::OnMoveCaretEnd() // not used now
{
	UINT nFlags = GetKeyState() & ~(KEYSTATE_CONTROL | KEYSTATE_MENU);
	OnMoveKeyDown(VK_END, nFlags);
}

void CCedtView::OnMoveCaretPrior() // not used now
{
	UINT nFlags = GetKeyState() & ~(KEYSTATE_CONTROL | KEYSTATE_MENU);
	OnMoveKeyDown(VK_PRIOR, nFlags);
}

void CCedtView::OnMoveCaretNext() // not used now
{
	UINT nFlags = GetKeyState() & ~(KEYSTATE_CONTROL | KEYSTATE_MENU);
	OnMoveKeyDown(VK_NEXT, nFlags);
}

void CCedtView::OnScrollScreenTop() 
{
	SetScrollPosToMakeCaretTop();
	Invalidate(); UpdateWindow(); UpdateAllViews();
}

void CCedtView::OnScrollScreenBottom() 
{
	SetScrollPosToMakeCaretBottom();
	Invalidate(); UpdateWindow(); UpdateAllViews();
}

void CCedtView::OnScrollScreenCenter() 
{
	SetScrollPosToMakeCaretCenter();
	Invalidate(); UpdateWindow(); UpdateAllViews();
}

/////////////////////////////////////////////////////////////////////////////
// Edit Menu

void CCedtView::OnUpdateEditCut(CCmdUI* pCmdUI) { /* pCmdUI->Enable( m_bSelected ); */ }
void CCedtView::OnUpdateEditCopy(CCmdUI* pCmdUI) { /* pCmdUI->Enable( m_bSelected ); */ }
void CCedtView::OnUpdateEditPaste(CCmdUI* pCmdUI) { /* pCmdUI->Enable( HasClipboardData() ); */ }

void CCedtView::OnUpdateEditUndo(CCmdUI* pCmdUI) { pCmdUI->Enable( GetUndoBufferCount() ); }
void CCedtView::OnUpdateEditRedo(CCmdUI* pCmdUI) { pCmdUI->Enable( GetRedoBufferCount() ); }


/////////////////////////////////////////////////////////////////////////////
// View Menu

void CCedtView::OnViewWordWrap() 
{
	CChildFrame * pChild = (CChildFrame *)GetParentFrame();

	if( ! m_bLocalWordWrap && (m_bColumnMode || pChild->GetColumnCount() > 1 ) ) {
		AfxMessageBox(IDS_ERR_SWITCH_WORD_WRAP, MB_OK); 
		return;
	}

	m_bLocalWordWrap = ! m_bLocalWordWrap;

	SaveCaretAndAnchorPos();
	FormatScreenText(); 
	RestoreCaretAndAnchorPos();

	Invalidate(); UpdateWindow();
}

void CCedtView::OnViewSpellCheck() 
{
	m_bLocalSpellCheck = ! m_bLocalSpellCheck;
	if( ! CCedtDoc::IsDictionaryLoaded() ) CCedtDoc::LoadDictionary();

	CCedtDoc * pDoc = (CCedtDoc *)GetDocument();
	pDoc->AnalyzeText();

	SaveCaretAndAnchorPos();
	FormatScreenText(); 
	RestoreCaretAndAnchorPos();

	Invalidate(); UpdateWindow();
}

void CCedtView::OnUpdateViewWordWrap(CCmdUI* pCmdUI) { pCmdUI->SetCheck( m_bLocalWordWrap ); }
void CCedtView::OnUpdateViewSpellCheck(CCmdUI* pCmdUI) { pCmdUI->SetCheck( m_bLocalSpellCheck ); }


/////////////////////////////////////////////////////////////////////////////
// Search Menu
void CCedtView::OnUpdateSearchFindNext(CCmdUI* pCmdUI) { pCmdUI->Enable( m_szFindString.GetLength() || (m_bSelected && ! GetSelectedLineCount()) ); } 
void CCedtView::OnUpdateSearchFindPrev(CCmdUI* pCmdUI) { pCmdUI->Enable( m_szFindString.GetLength() || (m_bSelected && ! GetSelectedLineCount()) ); } 


/////////////////////////////////////////////////////////////////////////////
// Tool Menu
void CCedtView::OnToolEvaluateLine() 
{
	BeginActionRecording(TRUE);

	EventEvaluateLine(FALSE);
	if( IsMacroRecording() ) MacroRecordCommand(ID_TOOL_EVALUATE_LINE);

	EndActionRecording();
	EmptyRedoBuffer(); CheckIfAllActionsCanBeUndone();

	SetScrollPosToMakeCaretVisible();
	Invalidate(); UpdateWindow(); UpdateAllViews();
}

void CCedtView::OnToolMsDosShell() 
{
	CString szShellPath = GetMsDosShellPath();
	WinExec( szShellPath, SW_SHOWNORMAL );
}

void CCedtView::OnToolViewInBrowser() 
{
	SendMessage(WM_COMMAND, ID_FILE_SAVE, 0L); // save before execute
	CCedtDoc * pDoc = (CCedtDoc *)GetDocument();

	CString szBrowserPath = GetDefaultBrowserPath();
	if( ! szBrowserPath.GetLength() ) return;

	CString szPathName = GetShortPathName( pDoc->GetPathName() );
	if( ! szPathName.GetLength() ) return;

	CString szCommand = szBrowserPath + " " + szPathName;
	WinExec( szCommand, SW_SHOWNORMAL );
}

void CCedtView::OnCommandExecute(INT nCommand)
{
	if( ! IsCommandAssigned(nCommand) ) return;
	CString szCommand = m_clsUserCommand[nCommand].m_szCommand;
	szCommand.TrimRight(); szCommand.TrimLeft();

	CMainFrame * pFrame = (CMainFrame *)AfxGetMainWnd(); ASSERT( pFrame );
	BOOL bCaptureOutput = m_clsUserCommand[nCommand].m_bCaptureOutput;

	if( m_hChildStdinWrDup || m_hChildStdoutRdDup ) {
		AfxMessageBox(IDS_ERR_COMMAND_RUN_ALREADY, MB_OK | MB_ICONSTOP); return; 
	} else if( bCaptureOutput && ! pFrame->CanUseOutputWindow() ) {
		AfxMessageBox(IDS_ERR_OUTPUT_WINDOW_OCCUPIED, MB_OK | MB_ICONSTOP); return;
	} else if( ReplaceShellVariables(szCommand, CMapStringToString()) && ! VerifyFilePath(szCommand) ) {
		CString szMessage; szMessage.Format(IDS_ERR_FILE_NOT_FOUND, szCommand);
		AfxMessageBox(szMessage, MB_OK | MB_ICONSTOP); return;
	}

	// check save_before_execute flag
	CCedtDoc * pDoc = (CCedtDoc *)GetDocument(); ASSERT( pDoc );
	BOOL bSaveBeforeExecute = m_clsUserCommand[nCommand].m_bSaveBeforeExecute;
	if( bSaveBeforeExecute && pDoc->IsModified() ) SendMessage(WM_COMMAND, ID_FILE_SAVE, 0L); 

	// execute command!
	ExecuteCommand(nCommand);
}

void CCedtView::OnCommandExecute1() { OnCommandExecute( 1); }
void CCedtView::OnCommandExecute2() { OnCommandExecute( 2); }
void CCedtView::OnCommandExecute3() { OnCommandExecute( 3); }
void CCedtView::OnCommandExecute4() { OnCommandExecute( 4); }
void CCedtView::OnCommandExecute5() { OnCommandExecute( 5); }
void CCedtView::OnCommandExecute6() { OnCommandExecute( 6); }
void CCedtView::OnCommandExecute7() { OnCommandExecute( 7); }
void CCedtView::OnCommandExecute8() { OnCommandExecute( 8); }
void CCedtView::OnCommandExecute9() { OnCommandExecute( 9); }
void CCedtView::OnCommandExecute0() { OnCommandExecute(10); }

void CCedtView::OnCommandSendInput() 
{
	if( ! IsCommandRunningInCaptureOutputMode() ) return;

	CUserInputDialog dlg(IDS_ASKUSR_TEXT_TO_SEND);
	if( dlg.DoModal() != IDOK ) return;

	SetChildInputString( dlg.m_szUserInput );
}

void CCedtView::OnUpdateCommandSendInput(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( IsCommandRunningInCaptureOutputMode() );
}

void CCedtView::OnCommandKillProcess() 
{
	if( ! IsCommandRunningInCaptureOutputMode() ) return;
	KillChildProcess();
}

void CCedtView::OnUpdateCommandKillProcess(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( IsCommandRunningInCaptureOutputMode() );
}

void CCedtView::OnUpdateCommandExecute(INT nCommand, CCmdUI* pCmdUI)
{
	if( nCommand != 0 && pCmdUI->m_pMenu ) {
		CString szMenuText; szMenuText.Format("&%d %s\t%s", nCommand % 10, GetCommandName(nCommand), GetCommandHotKeyText(nCommand));
		pCmdUI->SetText(szMenuText);
		pCmdUI->Enable( IsCommandAssigned(nCommand) ); 
	}
}

void CCedtView::OnUpdateCommandExecute1(CCmdUI* pCmdUI) { OnUpdateCommandExecute( 1, pCmdUI); }
void CCedtView::OnUpdateCommandExecute2(CCmdUI* pCmdUI) { OnUpdateCommandExecute( 2, pCmdUI); }
void CCedtView::OnUpdateCommandExecute3(CCmdUI* pCmdUI) { OnUpdateCommandExecute( 3, pCmdUI); }
void CCedtView::OnUpdateCommandExecute4(CCmdUI* pCmdUI) { OnUpdateCommandExecute( 4, pCmdUI); }
void CCedtView::OnUpdateCommandExecute5(CCmdUI* pCmdUI) { OnUpdateCommandExecute( 5, pCmdUI); }
void CCedtView::OnUpdateCommandExecute6(CCmdUI* pCmdUI) { OnUpdateCommandExecute( 6, pCmdUI); }
void CCedtView::OnUpdateCommandExecute7(CCmdUI* pCmdUI) { OnUpdateCommandExecute( 7, pCmdUI); }
void CCedtView::OnUpdateCommandExecute8(CCmdUI* pCmdUI) { OnUpdateCommandExecute( 8, pCmdUI); }
void CCedtView::OnUpdateCommandExecute9(CCmdUI* pCmdUI) { OnUpdateCommandExecute( 9, pCmdUI); }
void CCedtView::OnUpdateCommandExecute0(CCmdUI* pCmdUI) { OnUpdateCommandExecute(10, pCmdUI); }


/////////////////////////////////////////////////////////////////////////////
// Macro Menu

void CCedtView::OnMacroBeginRecording() 
{
	CMacroDefineDialog dlg;

	for(INT i = 1; i <= 10; i++) dlg.m_szMacroName[i] = GetMacroName(i);
	if( dlg.DoModal() != IDOK ) return;

	INT nMacroNumber = dlg.GetSelectedMacroNumber();
	LPCTSTR lpszMacroName = dlg.m_szMacroName[nMacroNumber];
	BeginMacroRecording(nMacroNumber, lpszMacroName);
}

void CCedtView::OnMacroEndRecording() 
{
	EndMacroRecording();
	CCedtApp::SaveMacroBuffers(CCedtApp::m_szInstallDirectory + "\\cedt.mac");
}

void CCedtView::OnMacroReplay(INT nMacro) 
{
	if( IsMacroRecording() ) { 
		CString szMessage; szMessage.Format(IDS_ERR_ILLEGAL_MACRO_DEF, "Replay Macro");
		AfxMessageBox(szMessage, MB_OK | MB_ICONSTOP); CancelMacroRecording(); return;
	} else if( ! GetMacroBufferCount(nMacro) ) return;

	BeginActionRecording(TRUE);

	EventReplayMacro(nMacro, 1, FALSE);

	EndActionRecording();
	EmptyRedoBuffer(); CheckIfAllActionsCanBeUndone();

	SetScrollPosToMakeCaretVisible();
	Invalidate(); UpdateWindow(); UpdateAllViews();
}

void CCedtView::OnMacroReplay()  { OnMacroReplay( 0); }
void CCedtView::OnMacroReplay1() { OnMacroReplay( 1); }
void CCedtView::OnMacroReplay2() { OnMacroReplay( 2); }
void CCedtView::OnMacroReplay3() { OnMacroReplay( 3); }
void CCedtView::OnMacroReplay4() { OnMacroReplay( 4); }
void CCedtView::OnMacroReplay5() { OnMacroReplay( 5); }
void CCedtView::OnMacroReplay6() { OnMacroReplay( 6); }
void CCedtView::OnMacroReplay7() { OnMacroReplay( 7); }
void CCedtView::OnMacroReplay8() { OnMacroReplay( 8); }
void CCedtView::OnMacroReplay9() { OnMacroReplay( 9); }
void CCedtView::OnMacroReplay0() { OnMacroReplay(10); }

void CCedtView::OnUpdateMacroBeginRecording(CCmdUI* pCmdUI) { pCmdUI->Enable( ! IsMacroRecording() ); }
void CCedtView::OnUpdateMacroEndRecording(CCmdUI* pCmdUI) { pCmdUI->Enable( IsMacroRecording() ); }

void CCedtView::OnUpdateMacroReplay (CCmdUI* pCmdUI) { OnUpdateMacroReplay( 0, pCmdUI); }
void CCedtView::OnUpdateMacroReplay1(CCmdUI* pCmdUI) { OnUpdateMacroReplay( 1, pCmdUI); }
void CCedtView::OnUpdateMacroReplay2(CCmdUI* pCmdUI) { OnUpdateMacroReplay( 2, pCmdUI); }
void CCedtView::OnUpdateMacroReplay3(CCmdUI* pCmdUI) { OnUpdateMacroReplay( 3, pCmdUI); }
void CCedtView::OnUpdateMacroReplay4(CCmdUI* pCmdUI) { OnUpdateMacroReplay( 4, pCmdUI); }
void CCedtView::OnUpdateMacroReplay5(CCmdUI* pCmdUI) { OnUpdateMacroReplay( 5, pCmdUI); }
void CCedtView::OnUpdateMacroReplay6(CCmdUI* pCmdUI) { OnUpdateMacroReplay( 6, pCmdUI); }
void CCedtView::OnUpdateMacroReplay7(CCmdUI* pCmdUI) { OnUpdateMacroReplay( 7, pCmdUI); }
void CCedtView::OnUpdateMacroReplay8(CCmdUI* pCmdUI) { OnUpdateMacroReplay( 8, pCmdUI); }
void CCedtView::OnUpdateMacroReplay9(CCmdUI* pCmdUI) { OnUpdateMacroReplay( 9, pCmdUI); }
void CCedtView::OnUpdateMacroReplay0(CCmdUI* pCmdUI) { OnUpdateMacroReplay(10, pCmdUI); }

void CCedtView::OnUpdateMacroReplay(INT nMacro, CCmdUI* pCmdUI) {
	if( nMacro != 0 && pCmdUI->m_pMenu ) {
		CString szMenuText; szMenuText.Format("&%d %s\t%s", nMacro % 10, GetMacroName(nMacro), GetMacroHotKeyText(nMacro));
		pCmdUI->SetText(szMenuText);
		pCmdUI->Enable( GetMacroBufferCount(nMacro) ); 
	}
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -