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

📄 cedtviewevent.cpp

📁 Crimson编辑器的英文版,完成从韩文版变成英文版的移植,并且附带可执行文件和注册表文件,无需原先的安装包,是改写编辑器的最理想选择.
💻 CPP
📖 第 1 页 / 共 2 页
字号:

	if( ! m_bColumnMode ) {
		if( m_bSelected ) {
			CMemText Blck2; ActionCopyLineSelection( Blck2 );
			Block.AppendText( Blck2 );
			SetClipboardData( Block );
		} else {
			CMemText Blck2; ActionCopyLine( Blck2 );
			Block.AppendText( Blck2 );
			SetClipboardData( Block );
		}
	} else ActionWrongOperation(! bMacro);
}

void CCedtView::EventCommandPaste(BOOL bMacro)
{
	CMemText Block; GetClipboardData( Block );

	if( m_bColumnMode ) {
		if( m_bSelected ) {
			if( m_nCaretPosX != m_nAnchorPosX ) { 
				ActionDeleteColumnSelection(); 
				m_bSelected = FALSE; 
			} else { 
				if( m_nCaretPosY > m_nAnchorPosY ) m_nCaretPosY = m_nAnchorPosY; 
				m_bSelected = FALSE; 
			}
		}
		ActionPasteColumnSelection( Block );
	} else {
		if( m_bSelected ) { 
			ActionDeleteLineSelection(); 
			m_bSelected = FALSE; 
		}
		ActionPasteLineSelection( Block );
	}
}

void CCedtView::EventDragDelete(BOOL bMacro)
{
	m_nCaretPosX = m_nSaveSelBegX; m_nAnchorPosX = m_nSaveSelEndX;
	m_nCaretPosY = m_nSaveSelBegY; m_nAnchorPosY = m_nSaveSelEndY;

	if( m_bColumnMode ) {
		ActionDeleteColumnSelection(); 
		m_bSelected = FALSE; 
	} else {
		ActionDeleteLineSelection(); 
		m_bSelected = FALSE; 
	}
}

void CCedtView::EventDragAdjust(BOOL bMacro)
{
	INT nRelativePos = RelativePosToSavedSelection(m_nDragPosX, m_nDragPosY);

	if( m_bColumnMode ) {
		switch( nRelativePos ) {
		case  1: m_nDragPosX -= m_nSaveSelEndX - m_nSaveSelBegX; break;
		}
	} else {
		switch( nRelativePos ) {
		case  1: m_nDragPosX -= m_nSaveSelEndX - m_nSaveSelBegX;
				 m_nDragPosY -= m_nSaveSelEndY - m_nSaveSelBegY; break;
		case  2: m_nDragPosY -= m_nSaveSelEndY - m_nSaveSelBegY; break;
		}
	}
}

void CCedtView::EventDropEscape(BOOL bMacro)
{
	m_nCaretPosX = m_nDragPosX;
	m_nCaretPosY = m_nDragPosY;

	// just release current selection
	if( m_bSelected ) m_bSelected = FALSE;
}

void CCedtView::EventDropPaste(HGLOBAL hMemory, BOOL bMacro)
{
	m_nCaretPosX = m_nDragPosX;
	m_nCaretPosY = m_nDragPosY;

	CMemText Block; GetGlobalMemoryText( hMemory, Block );

	if( m_bColumnMode ) {
		if( m_bSelected ) m_bSelected = FALSE;
		ActionPasteColumnSelection( Block );
	} else {
		if( m_bSelected ) m_bSelected = FALSE;
		ActionPasteLineSelection( Block );
	}
}

void CCedtView::EventSelectAll(BOOL bMacro)
{
	if( m_bColumnMode ) ActionWrongOperation(! bMacro);
	else m_bSelected = ActionSelectAll();
}

void CCedtView::EventSelectLine(BOOL bMacro)
{
	// select line can be applied to both column editing mode and line editing mode
	m_bSelected = ActionSelectLine();
}

void CCedtView::EventSelectWord(BOOL bMacro)
{
	// select word can be applied to both column editing mode and line editing mode
	m_bSelected = ActionSelectWord();
}

void CCedtView::EventSelectBlock(BOOL bMacro)
{
	if( m_bColumnMode ) ActionWrongOperation(! bMacro);
	else m_bSelected = ActionSelectBlock();
}

void CCedtView::EventUpperCase(BOOL bMacro)
{
	if( m_bColumnMode ) {
		if( m_bSelected ) {
			if( m_nCaretPosX != m_nAnchorPosX ) { 
				CMemText Block; ActionCopyColumnSelection( Block );
				Block.MakeUpperCase();
				ActionChangeColumnSelection( Block );
			} else ActionWrongOperation(! bMacro);
		} else ActionWrongOperation(! bMacro);
	} else {
		if( m_bSelected ) {
			CMemText Block; ActionCopyLineSelection( Block );
			Block.MakeUpperCase();
			ActionChangeLineSelection( Block );
		} else ActionWrongOperation(! bMacro);
	}
}

void CCedtView::EventLowerCase(BOOL bMacro)
{
	if( m_bColumnMode ) {
		if( m_bSelected ) {
			if( m_nCaretPosX != m_nAnchorPosX ) { 
				CMemText Block; ActionCopyColumnSelection( Block );
				Block.MakeLowerCase();
				ActionChangeColumnSelection( Block );
			} else ActionWrongOperation(! bMacro);
		} else ActionWrongOperation(! bMacro);
	} else {
		if( m_bSelected ) {
			CMemText Block; ActionCopyLineSelection( Block );
			Block.MakeLowerCase();
			ActionChangeLineSelection( Block );
		} else ActionWrongOperation(! bMacro);
	}
}

void CCedtView::EventCapitalize(BOOL bMacro)
{
	if( m_bColumnMode ) {
		if( m_bSelected ) {
			if( m_nCaretPosX != m_nAnchorPosX ) { 
				CMemText Block; ActionCopyColumnSelection( Block );
				Block.MakeCapitalize();
				ActionChangeColumnSelection( Block );
			} else ActionWrongOperation(! bMacro);
		} else ActionWrongOperation(! bMacro);
	} else {
		if( m_bSelected ) {
			CMemText Block; ActionCopyLineSelection( Block );
			Block.MakeCapitalize();
			ActionChangeLineSelection( Block );
		} else ActionWrongOperation(! bMacro);
	}
}

void CCedtView::EventInvertCase(BOOL bMacro)
{
	if( m_bColumnMode ) {
		if( m_bSelected ) {
			if( m_nCaretPosX != m_nAnchorPosX ) { 
				CMemText Block; ActionCopyColumnSelection( Block );
				Block.MakeInvertCase();
				ActionChangeColumnSelection( Block );
			} else ActionWrongOperation(! bMacro);
		} else ActionWrongOperation(! bMacro);
	} else {
		if( m_bSelected ) {
			CMemText Block; ActionCopyLineSelection( Block );
			Block.MakeInvertCase();
			ActionChangeLineSelection( Block );
		} else ActionWrongOperation(! bMacro);
	}
}

void CCedtView::EventConvertTabsToSpaces(BOOL bMacro)
{
	ActionConvertTabsToSpaces();
}

void CCedtView::EventConvertSpacesToTabs(BOOL bMacro)
{
	ActionConvertSpacesToTabs();
}

void CCedtView::EventLeadingSpacesToTabs(BOOL bMacro)
{
	ActionLeadingSpacesToTabs();
}

void CCedtView::EventRemoveTrailingSpaces(BOOL bMacro)
{
	ActionRemoveTrailingSpaces();
}

void CCedtView::EventUndoLastAction(BOOL bMacro)
{
	if( m_bSelected ) m_bSelected = FALSE;
	ActionUndoLastAction();
}

void CCedtView::EventRedoLastUndo(BOOL bMacro)
{
	if( m_bSelected ) m_bSelected = FALSE;
	ActionRedoLastUndo();
}

void CCedtView::EventEvaluateLine(BOOL bMacro)
{
	if( m_bSelected ) m_bSelected = FALSE;
	ActionEvaluateLine();
}

void CCedtView::EventReplayMacro(INT nMacro, INT nTimes, BOOL bMacro)
{
//	if( m_bSelected ) m_bSelected = FALSE; - selection should be taken into account
	ActionReplayMacro(nMacro, nTimes);
}

BOOL CCedtView::EventFindString(LPCTSTR lpszFindString, UINT nOptions, BOOL bMacro)
{
	if( ! strlen(lpszFindString) ) return FALSE;

	if( HAS_REG_EXP(nOptions) ) { // compile regular expression
		CString szExpression = lpszFindString; 			szExpression.Replace( "\\\\", "\x1B" );
		szExpression.Replace( "\\s" , "[ \t\r\n]" );	szExpression.Replace( "\\S" , "[^ \t\r\n]" );
		szExpression.Replace( "\\w" , "[A-Za-z0-9]" );	szExpression.Replace( "\\W" , "[^A-Za-z0-9]" );
		szExpression.Replace( "\\a" , "[A-Za-z]" );		szExpression.Replace( "\\A" , "[^A-Za-z]" );
		szExpression.Replace( "\\d" , "[0-9]" );		szExpression.Replace( "\\D" , "[^0-9]" );
		szExpression.Replace( "\\h" , "[A-Fa-f0-9]" );	szExpression.Replace( "\\H" , "[^A-Fa-f0-9]" );
		szExpression.Replace( "\\t" , "\t" );			szExpression.Replace( "\x1B", "\\\\" );

		if( ! HAS_MATCH_CASE(nOptions) ) szExpression.MakeLower();
		if( ! m_clsRegExp.RegComp( szExpression ) ) return FALSE;
	}

	m_bReplaceSearch = FALSE;
	m_szFindString = lpszFindString;
	m_nSearchOptions = nOptions;

	return TRUE;
}

BOOL CCedtView::EventReplaceString(LPCTSTR lpszFindString, LPCTSTR lpszReplaceString, UINT nOptions, BOOL bMacro)
{
	if( ! strlen(lpszFindString) ) return FALSE;

	if( HAS_REG_EXP(nOptions) ) { // compile regular expression
		CString szExpression = lpszFindString; 			szExpression.Replace( "\\\\", "\x1B" );
		szExpression.Replace( "\\s" , "[ \t\r\n]" );	szExpression.Replace( "\\S" , "[^ \t\r\n]" );
		szExpression.Replace( "\\w" , "[A-Za-z0-9]" );	szExpression.Replace( "\\W" , "[^A-Za-z0-9]" );
		szExpression.Replace( "\\a" , "[A-Za-z]" );		szExpression.Replace( "\\A" , "[^A-Za-z]" );
		szExpression.Replace( "\\d" , "[0-9]" );		szExpression.Replace( "\\D" , "[^0-9]" );
		szExpression.Replace( "\\h" , "[A-Fa-f0-9]" );	szExpression.Replace( "\\H" , "[^A-Fa-f0-9]" );
		szExpression.Replace( "\\t" , "\t" );			szExpression.Replace( "\x1B", "\\\\" );

		if( ! HAS_MATCH_CASE(nOptions) ) szExpression.MakeLower();
		if( ! m_clsRegExp.RegComp( szExpression ) ) return FALSE;
	}

	m_bReplaceSearch = TRUE;
	m_szFindString = lpszFindString;
	m_szReplaceString = lpszReplaceString;
	m_nSearchOptions = nOptions;

	return TRUE;
}

BOOL CCedtView::EventFindCurrentString(BOOL bMacro)
{
	CString szFindString = GetCurrentWord();
	if( m_bSelected && ! GetSelectedLineCount() ) szFindString = GetSelectedString();

	// if current string has zero length then continue previous search
	if( ! szFindString.GetLength() ) return FALSE;

	m_bReplaceSearch = FALSE;
	m_szFindString = szFindString;
	m_nSearchOptions = COMPOSE_SEARCH_OPTION(FALSE, FALSE, FALSE);

	return TRUE;
}

BOOL CCedtView::EventFindSelectedString(BOOL bMacro)
{
	// check if there is selected word if not then continue previous search
	if( ! m_bSelected || GetSelectedLineCount() ) return FALSE;

	CString szFoundString = m_szFindString;
	if( HAS_REG_EXP(m_nSearchOptions) ) m_clsRegExp.GetFoundString(szFoundString);

	CString szSelectedString = GetSelectedString();
	if( ! HAS_MATCH_CASE(m_nSearchOptions) ) { szFoundString.MakeLower(); szSelectedString.MakeLower(); }

	// if selected text is same as previous search result then continue previous search
	if( ! szFoundString.Compare(szSelectedString) ) return FALSE;

	m_bReplaceSearch = FALSE;
	m_szFindString = szSelectedString;
	m_nSearchOptions = COMPOSE_SEARCH_OPTION(FALSE, FALSE, FALSE);

	return TRUE;
}

BOOL CCedtView::EventSearchNextOccurrence(BOOL bMacro)
{
	BOOL bFound = ActionForwardFindString(m_szFindString, m_nSearchOptions, m_clsRegExp);
	if( bFound ) m_bSelected = ((m_nAnchorPosY != m_nCaretPosY) || (m_nAnchorPosX != m_nCaretPosX));

	return bFound;
}

BOOL CCedtView::EventSearchPrevOccurrence(BOOL bMacro)
{
	BOOL bFound = ActionReverseFindString(m_szFindString, m_nSearchOptions, m_clsRegExp);
	if( bFound ) m_bSelected = ((m_nAnchorPosY != m_nCaretPosY) || (m_nAnchorPosX != m_nCaretPosX));

	return bFound;
}

INT CCedtView::EventReplaceThisOccurrence(BOOL bMacro)
{
	INT nReplaced = 0;

	if( m_bSelected && ! GetSelectedLineCount() ) {
		nReplaced = ActionReplaceThisOccurrence(m_szReplaceString, m_nSearchOptions, m_clsRegExp);
		m_bSelected = FALSE;
	} 

	return nReplaced;
}

INT CCedtView::EventReplaceAllInSelection(BOOL bMacro)
{
	INT nReplaced = 0;

	if( ! m_bColumnMode && m_bSelected && GetSelectedLineCount() ) {
		nReplaced = ActionReplaceAllInSelection(m_szFindString, m_szReplaceString, m_nSearchOptions, m_clsRegExp);
		m_bSelected = ((m_nAnchorPosY != m_nCaretPosY) || (m_nAnchorPosX != m_nCaretPosX));
	}

	return nReplaced;
}

INT CCedtView::EventReplaceAllInFile(BOOL bMacro)
{
	INT nReplaced = ActionReplaceAllInFile(m_szFindString, m_szReplaceString, m_nSearchOptions, m_clsRegExp);
	if( m_bSelected ) m_bSelected = FALSE;

	return nReplaced;
}

BOOL CCedtView::EventGoToLine(INT nLineNumber, BOOL bMacro)
{
	BOOL bRedraw = ActionGoToLine(nLineNumber-1);
	if( m_bSelected ) { m_bSelected = FALSE; bRedraw = TRUE; }

	return bRedraw;
}

BOOL CCedtView::EventToggleBookmark(BOOL bMacro)
{
	BOOL bRedraw = ActionToggleBookmark();
	if( m_bSelected ) { m_bSelected = FALSE; bRedraw = TRUE; }

	return bRedraw;
}

BOOL CCedtView::EventNextBookmark(BOOL bMacro)
{
	BOOL bRedraw = ActionNextBookmark();
	if( m_bSelected ) { m_bSelected = FALSE; bRedraw = TRUE; }

	return bRedraw;
}

BOOL CCedtView::EventPrevBookmark(BOOL bMacro)
{
	BOOL bRedraw = ActionPrevBookmark();
	if( m_bSelected ) { m_bSelected = FALSE; bRedraw = TRUE; }

	return bRedraw;
}

BOOL CCedtView::EventPrevEditingPosition(BOOL bMacro)
{
	BOOL bRedraw = ActionPrevEditingPosition();
	if( m_bSelected ) { m_bSelected = FALSE; bRedraw = TRUE; }

	return bRedraw;
}

BOOL CCedtView::EventPairsBeginPosition(BOOL bMacro)
{
	BOOL bRedraw = ActionPairsBeginPosition();
	if( m_bSelected ) { m_bSelected = FALSE; bRedraw = TRUE; }

	return bRedraw;
}

BOOL CCedtView::EventPairsEndPosition(BOOL bMacro)
{
	BOOL bRedraw = ActionPairsEndPosition();
	if( m_bSelected ) { m_bSelected = FALSE; bRedraw = TRUE; }

	return bRedraw;
}

⌨️ 快捷键说明

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