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

📄 cedtviewmacro.cpp

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



BOOL CCedtView::RefreshMacroBufferFilePathForMenu()
{
	for( INT i = 0; i < 8; i++ ) m_szMacroBufferFilePath[i] = "";

	CSortStringArray arrPathName;
	CString szPathName = CCedtApp::m_szInstallDirectory + "\\tools\\*.mac";

	BOOL bFound = FindAllFilePath(arrPathName, szPathName);
	arrPathName.QuickSort();

	INT size = arrPathName.GetSize(); if( size > 8 ) size = 8;
	for( i = 0; i < size; i++ ) m_szMacroBufferFilePath[i] = arrPathName[i];

	return TRUE;
}

CString CCedtView::GetMacroName(INT nMacro)
{
	CMacroBuffer & rBuffer = m_clsMacroBuffer[nMacro];
	if( rBuffer.GetBufferCount() ) {
		if( rBuffer.m_szName.GetLength() ) return rBuffer.m_szName;
		else return "[Noname]";
	} else return "- Empty -";
}

CString CCedtView::GetMacroHotKeyText(INT nMacro)
{
	CMacroBuffer & rBuffer = m_clsMacroBuffer[nMacro];
	CString szHotKeyText = rBuffer.GetHotKeyText();
	if( ! szHotKeyText.GetLength() ) szHotKeyText.Format("Alt+%d", nMacro % 10);
	return szHotKeyText;
}


BOOL CCedtView::TranslateMessageForMacroBuffer(MSG * pMsg)
{
	if( pMsg->message != WM_KEYDOWN && pMsg->message != WM_SYSKEYDOWN ) return FALSE;

	UINT nFlags = GetKeyState();
	BOOL bShift = (nFlags & KEYSTATE_SHIFT) ? TRUE : FALSE;
	BOOL bCtrl = (nFlags & KEYSTATE_CONTROL) ? TRUE : FALSE;
	BOOL bAlt = (nFlags & KEYSTATE_MENU) ? TRUE : FALSE;

	for( INT i = 1; i <= 10; i++ ) {
		CMacroBuffer & rBuffer = m_clsMacroBuffer[i];
		BOOL bShift2 = (rBuffer.m_wModifiers & HOTKEYF_SHIFT) ? TRUE : FALSE;
		BOOL bCtrl2 = (rBuffer.m_wModifiers & HOTKEYF_CONTROL) ? TRUE : FALSE;
		BOOL bAlt2 = (rBuffer.m_wModifiers & HOTKEYF_ALT) ? TRUE : FALSE;

		if( rBuffer.m_wVirtualKeyCode != pMsg->wParam ) continue;
		if( ! rBuffer.GetBufferCount() ) continue;
		if( bShift != bShift2 || bCtrl != bCtrl2 || bAlt != bAlt2 ) continue;

		return PostMessage(WM_COMMAND, ID_MACRO_REPLAY0 + i, 0L);
	}

	return FALSE;
}

void CCedtView::ActionReplayMacro(INT nMacro, INT nTimes)
{
	POSITION posAction, posParam, posFlags, posString;
	INT nAction; UINT nParam, nFlags, nOptions; 
	CString szString, szReplace;

	CMacroBuffer & rBuffer = m_clsMacroBuffer[nMacro];

	while( nTimes-- ) {
		posAction = rBuffer.m_lstAction.GetHeadPosition();
		posParam = rBuffer.m_lstParam.GetHeadPosition();
		posFlags = rBuffer.m_lstFlags.GetHeadPosition();
		posString = rBuffer.m_lstString.GetHeadPosition();

		while( posAction ) {
			nAction = rBuffer.m_lstAction.GetNext( posAction );

			switch( nAction ) {
			case MACRO_MOVE:
				nParam = rBuffer.m_lstParam.GetNext( posParam );
				nFlags = rBuffer.m_lstFlags.GetNext( posFlags );
				EventMoveCaret(nParam, nFlags, TRUE);
				break;

			case MACRO_CHAR:
				nParam = rBuffer.m_lstParam.GetNext( posParam );
				EventInsertChar(nParam, TRUE);
				break;

			case MACRO_STRING:
				szString = rBuffer.m_lstString.GetNext( posString );
				EventInsertString(szString, TRUE);
				break;

			case MACRO_FILE:
				szString = rBuffer.m_lstString.GetNext( posString );
				EventInsertFile(szString, TRUE);
				break;

			case MACRO_FIND:
				szString = rBuffer.m_lstString.GetNext( posString );
				nOptions = rBuffer.m_lstParam.GetNext( posParam );
				EventFindString(szString, nOptions, TRUE);
				break;

			case MACRO_REPLACE:
				szString = rBuffer.m_lstString.GetNext( posString );
				szReplace = rBuffer.m_lstString.GetNext( posString );
				nOptions = rBuffer.m_lstParam.GetNext( posParam );
				EventReplaceString(szString, szReplace, nOptions, TRUE);
				break;

			case MACRO_GOTO:
				nParam = rBuffer.m_lstParam.GetNext( posParam );
				EventGoToLine(nParam, TRUE);
				break;

			case MACRO_COMMAND:
				nParam = rBuffer.m_lstParam.GetNext( posParam );

				switch( nParam ) {
				case ID_EDIT_ESCAPE:						EventCommandEscape(TRUE);				break;
				case ID_EDIT_RETURN:						EventCommandReturn(TRUE);				break;
				case ID_EDIT_BACK: 							EventCommandBack(TRUE); 				break; 
				case ID_EDIT_DELETE: 						EventCommandDelete(TRUE); 				break;
				case ID_EDIT_TAB: 							EventCommandTab(TRUE);					break;
				case ID_EDIT_DETAB:							EventCommandDetab(TRUE);				break;
				case ID_EDIT_INCREASE_INDENT:				EventIncreaseIndent(TRUE);				break;
				case ID_EDIT_DECREASE_INDENT:				EventDecreaseIndent(TRUE);				break;
				case ID_EDIT_MAKE_COMMENT:					EventMakeComment(TRUE);					break;
				case ID_EDIT_RELEASE_COMMENT:				EventReleaseComment(TRUE);				break;
				case ID_EDIT_JOIN_LINES:					EventJoinLines(TRUE);					break;
				case ID_EDIT_SPLIT_LINE:					EventSplitLine(TRUE);					break;
				case ID_EDIT_DELETE_WORD:					EventDeleteWord(TRUE);					break;
				case ID_EDIT_DELETE_PREV_WORD:				EventDeletePrevWord(TRUE);				break;
				case ID_EDIT_DELETE_TO_END_OF_LINE:			EventDeleteToEndOfLine(TRUE);			break;
				case ID_EDIT_DELETE_TO_BEGIN_OF_LINE:		EventDeleteToBeginOfLine(TRUE);			break;
				case ID_EDIT_DELETE_LINE:					EventDeleteLine(TRUE);					break;
				case ID_EDIT_DUPLICATE_LINE:				EventDuplicateLine(TRUE);				break;
				case ID_EDIT_CUT:							EventCommandCut(TRUE);					break;
				case ID_EDIT_COPY:							EventCommandCopy(TRUE);					break;
				case ID_EDIT_COPY_FILE_PATH:				EventCommandCopyFilePath(TRUE);			break;
				case ID_EDIT_CUT_APPEND:					EventCommandCutAppend(TRUE);			break;
				case ID_EDIT_COPY_APPEND:					EventCommandCopyAppend(TRUE);			break;
				case ID_EDIT_PASTE:							EventCommandPaste(TRUE);				break;
				case ID_EDIT_INSERT_DATE:					EventInsertString(GetCurrentDate() + CString(" "), TRUE);	break;
				case ID_EDIT_INSERT_TIME:					EventInsertString(GetCurrentTime() + CString(" "), TRUE);	break;
				case ID_EDIT_SELECT_ALL:					EventSelectAll(TRUE);					break;
				case ID_EDIT_SELECT_LINE:					EventSelectLine(TRUE);					break;
				case ID_EDIT_SELECT_WORD:					EventSelectWord(TRUE);					break;
				case ID_EDIT_SELECT_BLOCK:					EventSelectBlock(TRUE);					break;
				case ID_EDIT_UPPER_CASE:					EventUpperCase(TRUE);					break;
				case ID_EDIT_LOWER_CASE:					EventLowerCase(TRUE);					break;
				case ID_EDIT_CAPITALIZE:					EventCapitalize(TRUE);					break;
				case ID_EDIT_INVERT_CASE:					EventInvertCase(TRUE);					break;
				case ID_EDIT_CONVERT_TABS_TO_SPACES:		EventConvertTabsToSpaces(TRUE);			break;
				case ID_EDIT_CONVERT_SPACES_TO_TABS:		EventConvertSpacesToTabs(TRUE);			break;
				case ID_EDIT_LEADING_SPACES_TO_TABS:		EventLeadingSpacesToTabs(TRUE);			break;
				case ID_EDIT_REMOVE_TRAILING_SPACES:		EventRemoveTrailingSpaces(TRUE);		break;
				case ID_EDIT_UNDO:							/* cannot be included in a macro */		break;
				case ID_EDIT_REDO:							/* cannot be included in a macro */		break;
				case ID_TOOL_EVALUATE_LINE:					EventEvaluateLine(TRUE);				break;
				case ID_MACRO_REPLAY:						/* cannot be included in a macro */		break;
				case ID_SEARCH_NEXT_WORD:					EventFindCurrentString(TRUE);			break;
				case ID_SEARCH_PREV_WORD:					EventFindCurrentString(TRUE);			break;
				case ID_SEARCH_FIND_NEXT:					EventFindSelectedString(TRUE);			break;
				case ID_SEARCH_FIND_PREV:					EventFindSelectedString(TRUE);			break;
				case ID_SEARCH_NEXT_OCCURRENCE:				EventSearchNextOccurrence(TRUE);		break;
				case ID_SEARCH_PREV_OCCURRENCE:				EventSearchPrevOccurrence(TRUE);		break;
				case ID_SEARCH_REPLACE_THIS:				EventReplaceThisOccurrence(TRUE);		break;
				case ID_SEARCH_REPALL_IN_SELECTION:			EventReplaceAllInSelection(TRUE);		break;
				case ID_SEARCH_REPALL_IN_FILE:				EventReplaceAllInFile(TRUE);			break;
				case ID_SEARCH_REPALL_IN_OPEN_FILES:		/* cannot be included in a macro */		break;
				case ID_SEARCH_TOGGLE_BOOKMARK:				EventToggleBookmark(TRUE);				break;
				case ID_SEARCH_NEXT_BOOKMARK:				EventNextBookmark(TRUE);				break;
				case ID_SEARCH_PREV_BOOKMARK:				EventPrevBookmark(TRUE);				break;
				case ID_SEARCH_PREV_EDIT:					EventPrevEditingPosition(TRUE);			break;
				case ID_SEARCH_PAIRS_BEGIN:					EventPairsBeginPosition(TRUE);			break;
				case ID_SEARCH_PAIRS_END:					EventPairsEndPosition(TRUE);			break;
				}
				break;
			}

			if( m_bPairHighlighted[0] || m_bPairHighlighted[1] ) UnhighlightPairs();
			if( ! m_bSelected && m_bEnablePairsMatching ) HighlightMatchingPairs();
		}
	}
}

void CCedtView::BeginMacroRecording(INT nMacroRecordingNumber, LPCTSTR lpszMacroName)
{
	m_nMacroRecordingNumber = nMacroRecordingNumber;
	m_szMacroName = lpszMacroName;

	EmptyMacroBuffer(0);
	m_bMacroRecording = TRUE;

	CMainFrame * pMainFrame = (CMainFrame *)AfxGetMainWnd();
	pMainFrame->SetMacroRecordingFlag(TRUE);
}

void CCedtView::EndMacroRecording()
{
	m_clsMacroBuffer[m_nMacroRecordingNumber].CopyContents(m_clsMacroBuffer[0]);
	m_clsMacroBuffer[m_nMacroRecordingNumber].m_szName = m_szMacroName;

	m_bMacroRecording = FALSE;

	CMainFrame * pMainFrame = (CMainFrame *)AfxGetMainWnd();
	pMainFrame->SetMacroRecordingFlag(FALSE);
}

void CCedtView::CancelMacroRecording()
{
	EmptyMacroBuffer(0);
	m_bMacroRecording = FALSE;

	CMainFrame * pMainFrame = (CMainFrame *)AfxGetMainWnd();
	pMainFrame->SetMacroRecordingFlag(FALSE);
}

void CCedtView::MacroRecordMove(UINT nChar, UINT nFlags)
{
	m_clsMacroBuffer[0].m_lstAction.AddTail(MACRO_MOVE);
	m_clsMacroBuffer[0].m_lstParam.AddTail(nChar);
	m_clsMacroBuffer[0].m_lstFlags.AddTail(nFlags);
}

void CCedtView::MacroRecordChar(UINT nChar)
{
	m_clsMacroBuffer[0].m_lstAction.AddTail(MACRO_CHAR);
	m_clsMacroBuffer[0].m_lstParam.AddTail(nChar);
}

void CCedtView::MacroRecordString(LPCTSTR lpszString)
{
	m_clsMacroBuffer[0].m_lstAction.AddTail(MACRO_STRING);
	m_clsMacroBuffer[0].m_lstString.AddTail(lpszString);
}

void CCedtView::MacroRecordFile(LPCTSTR lpszPathName)
{
	m_clsMacroBuffer[0].m_lstAction.AddTail(MACRO_FILE);
	m_clsMacroBuffer[0].m_lstString.AddTail(lpszPathName);
}

void CCedtView::MacroRecordFind(LPCTSTR lpszFindString, UINT nOptions)
{
	m_clsMacroBuffer[0].m_lstAction.AddTail(MACRO_FIND);
	m_clsMacroBuffer[0].m_lstString.AddTail(lpszFindString);
	m_clsMacroBuffer[0].m_lstParam.AddTail(nOptions);
}

void CCedtView::MacroRecordReplace(LPCTSTR lpszFindString, LPCTSTR lpszReplaceString, UINT nOptions)
{
	m_clsMacroBuffer[0].m_lstAction.AddTail(MACRO_REPLACE);
	m_clsMacroBuffer[0].m_lstString.AddTail(lpszFindString);
	m_clsMacroBuffer[0].m_lstString.AddTail(lpszReplaceString);
	m_clsMacroBuffer[0].m_lstParam.AddTail(nOptions);
}

void CCedtView::MacroRecordGoTo(UINT nLineNumber)
{
	m_clsMacroBuffer[0].m_lstAction.AddTail(MACRO_GOTO);
	m_clsMacroBuffer[0].m_lstParam.AddTail(nLineNumber);
}

void CCedtView::MacroRecordCommand(UINT nCommand)
{
	m_clsMacroBuffer[0].m_lstAction.AddTail(MACRO_COMMAND);
	m_clsMacroBuffer[0].m_lstParam.AddTail(nCommand);
}

⌨️ 快捷键说明

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