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

📄 prefdialogcommands.cpp

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


void CPreferenceDialog::InitCommandsPage()
{
	CString szText;

	m_lstCommandList.SetExtendedStyle( LVS_EX_FULLROWSELECT );
	szText.LoadString( IDS_PREF_USER_TOOLS_NAME );
	m_lstCommandList.InsertColumn( 0, szText, LVCFMT_LEFT, 159 );
	szText.LoadString( IDS_PREF_USER_TOOLS_HOT_KEY );
	m_lstCommandList.InsertColumn( 1, szText, LVCFMT_LEFT, 60 );

	m_btnCommandMoveUp.SetIcon( m_lstButtonImage.ExtractIcon(0) );
	m_btnCommandMoveDown.SetIcon( m_lstButtonImage.ExtractIcon(1) );
	m_btnCommandArgument.SetIcon( m_lstButtonImage.ExtractIcon(2) );
	m_btnCommandDirectory.SetIcon( m_lstButtonImage.ExtractIcon(2) );
}

void CPreferenceDialog::SizeCommandsPage()
{
	INT nPosY;

	nPosY  = 26; m_stcCommandSettingsBox.MoveWindow(170, nPosY, 360, 125);
	nPosY += 10; m_lstCommandList.MoveWindow(180, nPosY, 240, 100);			m_btnCommandRemove.MoveWindow(430, nPosY, 70, 18);
	nPosY += 20; m_btnCommandMoveUp.MoveWindow(430, nPosY, 34, 18);			m_btnCommandMoveDown.MoveWindow(466, nPosY, 34, 18);

	nPosY  = 26  + 100;
	nPosY += 35; m_stcCommandItemBox.MoveWindow(170, nPosY, 360, 165);
	nPosY += 10; m_stcCommandText.MoveWindow(180, nPosY, 80, 14);			m_edtCommandText.MoveWindow(270, nPosY-3, 230, 18);		
	nPosY += 20; m_stcCommandCommand.MoveWindow(180, nPosY, 80, 14);		m_edtCommandCommand.MoveWindow(270, nPosY-3, 230, 18);		m_btnCommandCommand.MoveWindow(505, nPosY-3, 20, 18);
	nPosY += 20; m_stcCommandArgument.MoveWindow(180, nPosY, 80, 14);		m_edtCommandArgument.MoveWindow(270, nPosY-3, 230, 18);		m_btnCommandArgument.MoveWindow(505, nPosY-3, 20, 18);
	nPosY += 20; m_stcCommandDirectory.MoveWindow(180, nPosY, 80, 14);		m_edtCommandDirectory.MoveWindow(270, nPosY-3, 230, 18);	m_btnCommandDirectory.MoveWindow(505, nPosY-3, 20, 18);
	nPosY += 20; m_stcCommandHotKey.MoveWindow(180, nPosY, 80, 14);			m_hkyCommandHotKey.MoveWindow(270, nPosY-3, 230, 18);

	nPosY += 30; m_chkCommandCloseOnExit.MoveWindow(180, nPosY, 150, 14);	m_chkCommandShortFileName.MoveWindow(340, nPosY, 170, 14);
	nPosY += 20; m_chkCommandCaptureOutput.MoveWindow(180, nPosY, 150, 14);	m_chkCommandSaveBefore.MoveWindow(340, nPosY, 170, 14);

	nPosY += 35; m_btnCommandLoadTools.MoveWindow(170, nPosY, 170, 20);		m_btnCommandSaveTools.MoveWindow(360, nPosY, 170, 20);
}

void CPreferenceDialog::ShowCommandsPage()
{
	INT nCmdShow = (m_nActiveCategory == PREF_CATEGORY_COMMANDS) ? SW_SHOW : SW_HIDE;

	m_stcCommandSettingsBox.ShowWindow(nCmdShow);
	m_lstCommandList.ShowWindow(nCmdShow);			m_btnCommandRemove.ShowWindow(nCmdShow);
	m_btnCommandMoveUp.ShowWindow(nCmdShow);		m_btnCommandMoveDown.ShowWindow(nCmdShow);

	m_stcCommandItemBox.ShowWindow(nCmdShow);
	m_stcCommandText.ShowWindow(nCmdShow);			m_edtCommandText.ShowWindow(nCmdShow);
	m_stcCommandCommand.ShowWindow(nCmdShow);		m_edtCommandCommand.ShowWindow(nCmdShow);		m_btnCommandCommand.ShowWindow(nCmdShow);
	m_stcCommandArgument.ShowWindow(nCmdShow);		m_edtCommandArgument.ShowWindow(nCmdShow);		m_btnCommandArgument.ShowWindow(nCmdShow);
	m_stcCommandDirectory.ShowWindow(nCmdShow);		m_edtCommandDirectory.ShowWindow(nCmdShow);		m_btnCommandDirectory.ShowWindow(nCmdShow);
	m_stcCommandHotKey.ShowWindow(nCmdShow);		m_hkyCommandHotKey.ShowWindow(nCmdShow);

	m_chkCommandCloseOnExit.ShowWindow(nCmdShow);	m_chkCommandShortFileName.ShowWindow(nCmdShow);
	m_chkCommandCaptureOutput.ShowWindow(nCmdShow);	m_chkCommandSaveBefore.ShowWindow(nCmdShow);

	m_btnCommandLoadTools.ShowWindow(nCmdShow);		m_btnCommandSaveTools.ShowWindow(nCmdShow);		
}


BOOL CPreferenceDialog::LoadUserCommands()
{
	for(INT i = 0; i < 11; i++) {
		m_clsUserCommand[i].CopyContents(CCedtView::m_clsUserCommand[i]);
		if( i > 0 ) {
			m_lstCommandList.InsertItem(i-1, "");
			DispCommandText(i-1);
		}
	}

	m_lstCommandList.SetItemState(m_nActiveUserCommand, LVIS_SELECTED, LVIS_SELECTED);
	m_lstCommandList.EnsureVisible(m_nActiveUserCommand, FALSE);

	return TRUE;
}

BOOL CPreferenceDialog::SaveUserCommands()
{
	for(INT i = 0; i < 11; i++) {
		CCedtView::m_clsUserCommand[i].CopyContents(m_clsUserCommand[i]);
	}

	return TRUE;
}

BOOL CPreferenceDialog::FileLoadUserCommands(LPCTSTR lpszPathName)
{
	ifstream fin(lpszPathName, ios::in | ios::nocreate | ios::binary);
	if( ! fin.is_open() ) return FALSE;

	TCHAR szBuffer[2048]; INT nLength = strlen(STRING_USERTOOLSVER); fin.read((char *)szBuffer, nLength); szBuffer[nLength] = '\0';
	if( strcmp(szBuffer, STRING_USERTOOLSVER) ) { fin.close(); return FALSE; }

	for(INT i = 0; i < 11; i++) {
		if( ! m_clsUserCommand[i].StreamLoad(fin) ) { fin.close(); return FALSE; }
	}

	fin.close();
	return TRUE;
}

BOOL CPreferenceDialog::FileSaveUserCommands(LPCTSTR lpszPathName)
{
	ofstream fout(lpszPathName, ios::out | ios::binary);
	if( ! fout.is_open() ) return FALSE;

	INT nLength = strlen(STRING_USERTOOLSVER);
	fout.write((const char *)STRING_USERTOOLSVER, nLength);

	for( INT i = 0; i < 11; i++ ) {
		if( ! m_clsUserCommand[i].StreamSave(fout) ) { fout.close(); return FALSE; }
	}

	fout.close();
	return TRUE;
}

BOOL CPreferenceDialog::DispCommandText(INT nCommand)
{
	m_lstCommandList.SetItemText(nCommand, 0, GetCommandName(nCommand+1));
	m_lstCommandList.SetItemText(nCommand, 1, GetCommandHotKeyText(nCommand+1));
	return TRUE;
}

CString CPreferenceDialog::GetCommandName(INT nCommand)
{
	CUserCommand & rCommand = m_clsUserCommand[nCommand];
	if( rCommand.m_szName.GetLength() ) return rCommand.m_szName;
	else return "- Empty -";
}

CString CPreferenceDialog::GetCommandHotKeyText(INT nCommand)
{
	CUserCommand & rCommand = m_clsUserCommand[nCommand];
	CString szHotKeyText = rCommand.GetHotKeyText();
	if( ! szHotKeyText.GetLength() ) szHotKeyText.Format("Ctrl+%d", nCommand % 10);
	return szHotKeyText;
}

void CPreferenceDialog::OnItemchangedCommandList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
	if( (pNMListView->iItem >= 0) && (pNMListView->uNewState & LVIS_SELECTED) ) {
		INT nCommand = pNMListView->iItem; m_nActiveUserCommand = nCommand;
		CUserCommand & rCommand = m_clsUserCommand[nCommand+1];

		m_edtCommandText.SetWindowText( rCommand.m_szName );
		m_edtCommandCommand.SetWindowText( rCommand.m_szCommand );
		m_edtCommandArgument.SetWindowText( rCommand.m_szArgument );
		m_edtCommandDirectory.SetWindowText( rCommand.m_szDirectory );
		m_hkyCommandHotKey.SetHotKey( rCommand.m_wVirtualKeyCode, rCommand.m_wModifiers );

		m_chkCommandCloseOnExit.SetCheck( rCommand.m_bCloseOnExit );
		m_chkCommandShortFileName.SetCheck( rCommand.m_bUseShortFileName );
		m_chkCommandCaptureOutput.SetCheck( rCommand.m_bCaptureOutput );
		m_chkCommandSaveBefore.SetCheck( rCommand.m_bSaveBeforeExecute );

		m_chkCommandCloseOnExit.EnableWindow( ! rCommand.m_bCaptureOutput );
	}
	*pResult = 0;
}

void CPreferenceDialog::OnCommandLoadTools() 
{
	DWORD dwFlags = OFN_HIDEREADONLY | OFN_FILEMUSTEXIST;
	CString szFilter; szFilter.LoadString(IDS_FILTER_USER_TOOL);
	CFileDialog dlg(TRUE, NULL, NULL, dwFlags, szFilter);

	CString szTitle; szTitle.LoadString(IDS_DLG_LOAD_USER_TOOLS);
	CString szInitialDirectory = CCedtApp::m_szInstallDirectory + "\\tools";

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

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

	SetCurrentDirectory( szCurrentDirectory );
	FileLoadUserCommands( dlg.GetPathName() );

	for( INT i = 1; i < 11; i++ ) DispCommandText(i-1);
}

void CPreferenceDialog::OnCommandSaveTools() 
{
	DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
	CString szFilter; szFilter.LoadString(IDS_FILTER_USER_TOOL);
	CFileDialog dlg(FALSE, ".cmd", NULL, dwFlags, szFilter);

	CString szTitle; szTitle.LoadString(IDS_DLG_SAVE_USER_TOOLS);
	CString szInitialDirectory = CCedtApp::m_szInstallDirectory + "\\tools";

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

⌨️ 快捷键说明

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