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

📄 prefdialogsyntax.cpp

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


void CPreferenceDialog::InitSyntaxPage()
{
	m_lstSyntaxTypes.SetExtendedStyle(LVS_EX_FULLROWSELECT);
	CString szText( (LPCTSTR)IDS_PREF_SYNTAX_TYPE );
	m_lstSyntaxTypes.InsertColumn(0, szText, LVCFMT_LEFT, 219);

	m_btnSyntaxMoveUp.SetIcon( m_lstButtonImage.ExtractIcon(0) );
	m_btnSyntaxMoveDown.SetIcon( m_lstButtonImage.ExtractIcon(1) );
}

void CPreferenceDialog::SizeSyntaxPage()
{
	INT nPosY;

	nPosY  = 26; m_stcSyntaxSettingsBox.MoveWindow(170, nPosY, 360, 175);
	nPosY += 10; m_lstSyntaxTypes.MoveWindow(180, nPosY, 240, 152);		m_btnSyntaxRemove.MoveWindow(430, nPosY, 70, 18);
	nPosY += 20; m_btnSyntaxMoveUp.MoveWindow(430, nPosY, 34, 18);		m_btnSyntaxMoveDown.MoveWindow(466, nPosY, 34, 18);

	nPosY  = 26  + 150;
	nPosY += 35; m_stcSyntaxItemBox.MoveWindow(170, nPosY, 360, 75);
	nPosY += 10; m_stcSyntaxDescription.MoveWindow(180, nPosY, 80, 14);	m_edtSyntaxDescription.MoveWindow(270, nPosY-3, 230, 18);		
	nPosY += 20; m_stcSyntaxLangSpec.MoveWindow(180, nPosY, 80, 14);	m_edtSyntaxLangSpec.MoveWindow(270, nPosY-3, 230, 18);		m_btnSyntaxLangSpec.MoveWindow(505, nPosY-3, 20, 18);		
	nPosY += 20; m_stcSyntaxKeywords.MoveWindow(180, nPosY, 80, 14);	m_edtSyntaxKeywords.MoveWindow(270, nPosY-3, 230, 18);		m_btnSyntaxKeywords.MoveWindow(505, nPosY-3, 20, 18);		
}

void CPreferenceDialog::ShowSyntaxPage()
{
	INT nCmdShow = (m_nActiveCategory == PREF_CATEGORY_SYNTAX) ? SW_SHOW : SW_HIDE;

	m_stcSyntaxSettingsBox.ShowWindow(nCmdShow);
	m_lstSyntaxTypes.ShowWindow(nCmdShow);			m_btnSyntaxRemove.ShowWindow(nCmdShow);
	m_btnSyntaxMoveUp.ShowWindow(nCmdShow);			m_btnSyntaxMoveDown.ShowWindow(nCmdShow);

	m_stcSyntaxItemBox.ShowWindow(nCmdShow);
	m_stcSyntaxDescription.ShowWindow(nCmdShow);	m_edtSyntaxDescription.ShowWindow(nCmdShow);
	m_stcSyntaxLangSpec.ShowWindow(nCmdShow);		m_edtSyntaxLangSpec.ShowWindow(nCmdShow);		m_btnSyntaxLangSpec.ShowWindow(nCmdShow);
	m_stcSyntaxKeywords.ShowWindow(nCmdShow);		m_edtSyntaxKeywords.ShowWindow(nCmdShow);		m_btnSyntaxKeywords.ShowWindow(nCmdShow);
}

BOOL CPreferenceDialog::LoadSyntaxTypes()
{
	for(INT i = 0; i < MAX_SYNTAX_TYPE; i++) {
		m_clsSyntaxTypes[i].CopyContents( CCedtDoc::m_clsSyntaxTypes[i] );
		m_lstSyntaxTypes.InsertItem(i, "");
		DispSyntaxType(i);
	}

	m_lstSyntaxTypes.SetItemState(m_nActiveSyntaxType, LVIS_SELECTED, LVIS_SELECTED);
	m_lstSyntaxTypes.EnsureVisible(m_nActiveSyntaxType, FALSE);

	return TRUE;
}

BOOL CPreferenceDialog::SaveSyntaxTypes()
{
	for(INT i = 0; i < MAX_SYNTAX_TYPE; i++) {
		CCedtDoc::m_clsSyntaxTypes[i].CopyContents( m_clsSyntaxTypes[i] );
	}

	return TRUE;
}

BOOL CPreferenceDialog::DispSyntaxType(INT nSyntaxType)
{
	CString szText = m_clsSyntaxTypes[nSyntaxType].m_szDescription;
	if( ! szText.GetLength() ) szText = "- Empty -";
	m_lstSyntaxTypes.SetItemText(nSyntaxType, 0, szText);
	return TRUE;
}

void CPreferenceDialog::OnItemchangedSyntaxTypes(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	if( (pNMListView->iItem >= 0) && (pNMListView->uNewState & LVIS_SELECTED) ) {
		INT nSyntax = pNMListView->iItem; m_nActiveSyntaxType = nSyntax;
		m_edtSyntaxDescription.SetWindowText( m_clsSyntaxTypes[nSyntax].m_szDescription );
		m_edtSyntaxLangSpec.SetWindowText( m_clsSyntaxTypes[nSyntax].m_szLangSpecFile );
		m_edtSyntaxKeywords.SetWindowText( m_clsSyntaxTypes[nSyntax].m_szKeywordsFile );
	}
	*pResult = 0;
}

void CPreferenceDialog::OnSyntaxRemove() 
{
	INT nSyntaxType = m_nActiveSyntaxType;
	CSyntaxType & rSyntaxType = m_clsSyntaxTypes[nSyntaxType];

	rSyntaxType.DeleteContents();
	DispSyntaxType( nSyntaxType );

	m_edtSyntaxDescription.SetWindowText( rSyntaxType.m_szDescription );
	m_edtSyntaxLangSpec.SetWindowText( rSyntaxType.m_szLangSpecFile );
	m_edtSyntaxKeywords.SetWindowText( rSyntaxType.m_szKeywordsFile );
}

void CPreferenceDialog::OnSyntaxMoveUp() 
{
	INT nSyntaxType = m_nActiveSyntaxType;

	if( nSyntaxType > 0 ) {
		CSyntaxType & rSyntaxType0 = CSyntaxType();
		CSyntaxType & rSyntaxType1 = m_clsSyntaxTypes[nSyntaxType-1];
		CSyntaxType & rSyntaxType2 = m_clsSyntaxTypes[nSyntaxType+0];

		rSyntaxType0.CopyContents( rSyntaxType1 );
		rSyntaxType1.CopyContents( rSyntaxType2 );
		rSyntaxType2.CopyContents( rSyntaxType0 );

		DispSyntaxType( nSyntaxType-1 );
		DispSyntaxType( nSyntaxType+0 );

		m_lstSyntaxTypes.SetItemState( nSyntaxType-1, LVIS_SELECTED, LVIS_SELECTED );
		m_lstSyntaxTypes.EnsureVisible( nSyntaxType-1, FALSE );
	}
}

void CPreferenceDialog::OnSyntaxMoveDown() 
{
	INT nSyntaxType = m_nActiveSyntaxType;

	if( nSyntaxType < m_lstSyntaxTypes.GetItemCount()-1 ) {
		CSyntaxType & rSyntaxType0 = CSyntaxType();
		CSyntaxType & rSyntaxType1 = m_clsSyntaxTypes[nSyntaxType+0];
		CSyntaxType & rSyntaxType2 = m_clsSyntaxTypes[nSyntaxType+1];

		rSyntaxType0.CopyContents( rSyntaxType1 );
		rSyntaxType1.CopyContents( rSyntaxType2 );
		rSyntaxType2.CopyContents( rSyntaxType0 );

		DispSyntaxType( nSyntaxType+0 );
		DispSyntaxType( nSyntaxType+1 );

		m_lstSyntaxTypes.SetItemState( nSyntaxType+1, LVIS_SELECTED, LVIS_SELECTED );
		m_lstSyntaxTypes.EnsureVisible( nSyntaxType+1, FALSE );
	}
}

void CPreferenceDialog::OnChangeSyntaxDescription() 
{
	INT nSyntaxType = m_nActiveSyntaxType;
	CSyntaxType & rSyntaxType = m_clsSyntaxTypes[nSyntaxType];
	m_edtSyntaxDescription.GetWindowText( rSyntaxType.m_szDescription );
	DispSyntaxType(nSyntaxType);
}

void CPreferenceDialog::OnChangeSyntaxLangSpec() 
{
	INT nSyntaxType = m_nActiveSyntaxType;
	CSyntaxType & rSyntaxType = m_clsSyntaxTypes[nSyntaxType];
	m_edtSyntaxLangSpec.GetWindowText( rSyntaxType.m_szLangSpecFile );
}

void CPreferenceDialog::OnChangeSyntaxKeywords() 
{
	INT nSyntaxType = m_nActiveSyntaxType;
	CSyntaxType & rSyntaxType = m_clsSyntaxTypes[nSyntaxType];
	m_edtSyntaxKeywords.GetWindowText( rSyntaxType.m_szKeywordsFile );
}

void CPreferenceDialog::OnSyntaxLangSpecBrowse() 
{
	DWORD dwFlags = OFN_HIDEREADONLY | OFN_FILEMUSTEXIST;
	CString szFilter; szFilter.LoadString(IDS_FILTER_LANGSPEC_BROWSE);
	CString szFileName; m_edtSyntaxLangSpec.GetWindowText( szFileName );
	CFileDialog dlg(TRUE, NULL, szFileName, dwFlags, szFilter);

	CString szTitle; szTitle.LoadString(IDS_DLG_SELECT_FILE);
	CString szInitialDirectory = CCedtApp::m_szInstallDirectory + "\\spec";

	TCHAR szCurrentDirectory[MAX_PATH];
	GetCurrentDirectory( MAX_PATH, szCurrentDirectory );

	dlg.m_ofn.lpstrTitle = szTitle; dlg.m_ofn.lpstrInitialDir = szInitialDirectory;
	if( dlg.DoModal() != IDOK ) return;

	szFileName = GetFileName( dlg.GetPathName() ); szFileName.MakeUpper();
	m_edtSyntaxLangSpec.SetWindowText( szFileName );
	SetCurrentDirectory( szCurrentDirectory );
}

void CPreferenceDialog::OnSyntaxKeywordsBrowse() 
{
	DWORD dwFlags = OFN_HIDEREADONLY | OFN_FILEMUSTEXIST;
	CString szFilter; szFilter.LoadString(IDS_FILTER_KEYWORD_BROWSE);
	CString szFileName; m_edtSyntaxKeywords.GetWindowText( szFileName );
	CFileDialog dlg(TRUE, NULL, szFileName, dwFlags, szFilter);

	CString szTitle; szTitle.LoadString(IDS_DLG_SELECT_FILE);
	CString szInitialDirectory = CCedtApp::m_szInstallDirectory + "\\spec";

	TCHAR szCurrentDirectory[MAX_PATH];
	GetCurrentDirectory( MAX_PATH, szCurrentDirectory );

	dlg.m_ofn.lpstrTitle = szTitle; dlg.m_ofn.lpstrInitialDir = szInitialDirectory;
	if( dlg.DoModal() != IDOK ) return;

	szFileName = GetFileName( dlg.GetPathName() ); szFileName.MakeUpper();
	m_edtSyntaxKeywords.SetWindowText( szFileName );
	SetCurrentDirectory( szCurrentDirectory );
}

⌨️ 快捷键说明

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