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

📄 cedtappproject.cpp

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



void CCedtApp::OnProjectNew() 
{
	DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
	CString szFilter; szFilter.LoadString(IDS_FILTER_PROJECT);
	CFileDialog dlg(FALSE, ".prj", NULL, dwFlags, szFilter);

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

	TCHAR szInitialDirectory[MAX_PATH]; strcpy( szInitialDirectory, m_szProjectInitialDirectory );
	if( ! strlen( szInitialDirectory ) ) strcpy( szInitialDirectory, szCurrentDirectory );

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

	GetCurrentDirectory( MAX_PATH, szInitialDirectory ); m_szProjectInitialDirectory = szInitialDirectory;
	SetCurrentDirectory( szCurrentDirectory );



	if( m_bProjectLoaded ) { // project is open now
		BOOL bCloseAll = FALSE;
		if( GetDocumentCount() ) {
			INT nAnswer = AfxMessageBox(IDS_MSG_CLOSE_PROJECT_WORKSPACE, MB_YESNOCANCEL);
			if( nAnswer == IDCANCEL ) return;
			bCloseAll = ( nAnswer == IDYES ) ? TRUE : FALSE;
		} else bCloseAll = FALSE;

		if( ! CloseProjectWorkspace(bCloseAll) ) return;
	}

	// activate project tab
	CMainFrame * pFrame = (CMainFrame *)AfxGetMainWnd();
	pFrame->ShowFileWindowCategory( FILE_WINDOW_PROJECT );

	CString szPathName = dlg.GetPathName();
	if( ! NewProjectWorkspace( szPathName ) ) return;
}

void CCedtApp::OnProjectOpen() 
{
	DWORD dwFlags = OFN_HIDEREADONLY | OFN_FILEMUSTEXIST;
	CString szFilter; szFilter.LoadString(IDS_FILTER_PROJECT);
	CFileDialog dlg(TRUE, NULL, NULL, dwFlags, szFilter);

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

	TCHAR szInitialDirectory[MAX_PATH]; strcpy( szInitialDirectory, m_szProjectInitialDirectory );
	if( ! strlen( szInitialDirectory ) ) strcpy( szInitialDirectory, szCurrentDirectory );

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

	GetCurrentDirectory( MAX_PATH, szInitialDirectory ); m_szProjectInitialDirectory = szInitialDirectory;
	SetCurrentDirectory( szCurrentDirectory );



	if( m_bProjectLoaded ) { // project is open now
		// check if same project is open already
		if( ! m_szProjectPathName.CompareNoCase( dlg.GetPathName() ) ) return; 

		BOOL bCloseAll = FALSE;
		if( GetDocumentCount() ) {
			INT nAnswer = AfxMessageBox(IDS_MSG_CLOSE_PROJECT_WORKSPACE, MB_YESNOCANCEL);
			if( nAnswer == IDCANCEL ) return;
			bCloseAll = ( nAnswer == IDYES ) ? TRUE : FALSE;
		} else bCloseAll = FALSE;

		if( ! CloseProjectWorkspace(bCloseAll) ) return;
	}

	// activate project tab
	CMainFrame * pFrame = (CMainFrame *)AfxGetMainWnd();
	pFrame->ShowFileWindowCategory( FILE_WINDOW_PROJECT );

	CString szPathName = dlg.GetPathName();
	if( ! OpenProjectWorkspace( szPathName ) ) return;
}

void CCedtApp::OnProjectClose() 
{
	if( m_bProjectLoaded ) { // project is open now
		BOOL bCloseAll = FALSE;
		if( GetDocumentCount() ) {
			INT nAnswer = AfxMessageBox(IDS_MSG_CLOSE_PROJECT_WORKSPACE, MB_YESNOCANCEL);
			if( nAnswer == IDCANCEL ) return;
			bCloseAll = ( nAnswer == IDYES ) ? TRUE : FALSE;
		} else bCloseAll = FALSE;

		if( ! CloseProjectWorkspace(bCloseAll) ) return;
	}
}

void CCedtApp::OnUpdateProjectClose(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( m_bProjectLoaded );
}

void CCedtApp::OnProjectNewCategory() 
{
	CUserInputDialog dlg(IDS_ASKUSR_CATEGORY_NAME);
	if( dlg.DoModal() != IDOK ) return;

	CMainFrame * pMainFrame = (CMainFrame *)AfxGetMainWnd();
	CFileWindow * pFileWindow = (CFileWindow *)pMainFrame->GetFileWindow();

	pFileWindow->AddCategoryToProject(dlg.m_szUserInput);
	pFileWindow->SaveProjectWorkspace(m_szProjectPathName);
}

void CCedtApp::OnUpdateProjectNewCategory(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( m_bProjectLoaded );
}

void CCedtApp::OnProjectAddFilesTo() 
{
	DWORD dwFlags = OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT;
	CString szFilter = GetComposedFileFilter();
	CFileDialog dlg(TRUE, NULL, NULL, dwFlags, szFilter);

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

	TCHAR szBuffer[4096]; memset(szBuffer, 0x00, sizeof(szBuffer));
	CString szTitle; szTitle.LoadString(IDS_DLG_ADD_TO_PROJECT);
	dlg.m_ofn.lpstrFile = szBuffer; dlg.m_ofn.nMaxFile = 4096; 
	dlg.m_ofn.lpstrTitle = szTitle; dlg.m_ofn.lpstrInitialDir = szCurrentDirectory;
	dlg.m_ofn.nFilterIndex = GetFilterIndexDialog() + 1;
	if( dlg.DoModal() != IDOK ) return;

	SetFilterIndexDialog(dlg.m_ofn.nFilterIndex - 1);

	CMainFrame * pMainFrame = (CMainFrame *)AfxGetMainWnd();
	CFileWindow * pFileWindow = (CFileWindow *)pMainFrame->GetFileWindow();

	POSITION pos = dlg.GetStartPosition();
	while( pos ) {
		CString szPathName = dlg.GetNextPathName( pos );
		pFileWindow->AddLocalFileToProject( szPathName );
	}
	pFileWindow->SaveProjectWorkspace(m_szProjectPathName);
}

void CCedtApp::OnUpdateProjectAddFilesTo(CCmdUI* pCmdUI) 
{
	pCmdUI->Enable( m_bProjectLoaded );
}

void CCedtApp::OnProjectAddActiveFile() 
{
	CMainFrame * pMainFrame = (CMainFrame *)AfxGetMainWnd(); ASSERT( pMainFrame );
	CFileWindow * pFileWindow = (CFileWindow *)pMainFrame->GetFileWindow();
	CCedtDoc * pDoc = (CCedtDoc *)pMainFrame->MDIGetActiveDocument();

	if( ! m_bProjectLoaded || ! pDoc ) return;
	if( pDoc->IsNewFileNotSaved() ) return;

	if( pDoc->IsRemoteFile() ) {
		pFileWindow->AddRemoteFileToProject( pDoc->GetFtpAccountNumber(), pDoc->GetRemotePathName(), pDoc->GetFileSize() );
	} else {
		pFileWindow->AddLocalFileToProject( pDoc->GetPathName() );
	}
	pFileWindow->SaveProjectWorkspace(m_szProjectPathName);
}

void CCedtApp::OnUpdateProjectAddActiveFile(CCmdUI* pCmdUI) 
{
	CMainFrame * pMainFrame = (CMainFrame *)AfxGetMainWnd(); ASSERT( pMainFrame );
	CCedtDoc * pDoc = (CCedtDoc *)pMainFrame->MDIGetActiveDocument();
	pCmdUI->Enable( m_bProjectLoaded && pDoc );
}

void CCedtApp::OnProjectAddOpenFiles() 
{
	POSITION posDoc = GetFirstDocPosition();
	if( ! m_bProjectLoaded || ! posDoc ) return;

	CMainFrame * pMainFrame = (CMainFrame *)AfxGetMainWnd();
	CFileWindow * pFileWindow = (CFileWindow *)pMainFrame->GetFileWindow();

	while( posDoc ) {
		CCedtDoc * pDoc = (CCedtDoc *)GetNextDoc( posDoc );
		if( pDoc->IsNewFileNotSaved() ) continue;

		if( pDoc->IsRemoteFile() ) {
			pFileWindow->AddRemoteFileToProject( pDoc->GetFtpAccountNumber(), pDoc->GetRemotePathName(), pDoc->GetFileSize() );
		} else {
			pFileWindow->AddLocalFileToProject( pDoc->GetPathName() );
		}
	}
	pFileWindow->SaveProjectWorkspace(m_szProjectPathName);
}

void CCedtApp::OnUpdateProjectAddOpenFiles(CCmdUI* pCmdUI) 
{
	POSITION posDoc = GetFirstDocPosition();
	pCmdUI->Enable( m_bProjectLoaded && posDoc );
}

void CCedtApp::OnProjectItemOpen() 
{
	CMainFrame * pMainFrame = (CMainFrame *)AfxGetMainWnd();
	CFileWindow * pFileWindow = (CFileWindow *)pMainFrame->GetFileWindow();
	pFileWindow->OpenProjectItem();
}

void CCedtApp::OnProjectItemExecute() 
{
	CMainFrame * pMainFrame = (CMainFrame *)AfxGetMainWnd();
	CFileWindow * pFileWindow = (CFileWindow *)pMainFrame->GetFileWindow();
	pFileWindow->ExecuteProjectItem();
}

void CCedtApp::OnProjectItemRename() 
{
	CMainFrame * pMainFrame = (CMainFrame *)AfxGetMainWnd();
	CFileWindow * pFileWindow = (CFileWindow *)pMainFrame->GetFileWindow();
	pFileWindow->RenameProjectItem();
}

void CCedtApp::OnProjectItemRemove() 
{
	CMainFrame * pMainFrame = (CMainFrame *)AfxGetMainWnd();
	CFileWindow * pFileWindow = (CFileWindow *)pMainFrame->GetFileWindow();

	if( pFileWindow->IsSelectedProjectItemRoot() ) return;

	CString szItemText = pFileWindow->GetSelectedProjectItemText();
	CString szMessage; szMessage.Format( IDS_MSG_REMOVE_FROM_PROJECT, szItemText );
	if( AfxMessageBox( szMessage, MB_YESNO ) == IDYES ) {
		pFileWindow->RemoveProjectItem();
		pFileWindow->SaveProjectWorkspace(m_szProjectPathName);
	}
}


BOOL CCedtApp::CloseProjectWorkspace(BOOL bCloseAll)
{
	CMainFrame * pMainFrame = (CMainFrame *)AfxGetMainWnd();
	CFileWindow * pFileWindow = (CFileWindow *)pMainFrame->GetFileWindow();
	if( ! pFileWindow->SaveProjectWorkspace(m_szProjectPathName) ) return FALSE;

	if( bCloseAll ) {
		if( SaveAllModified() ) CloseAllDocuments(FALSE);
		else return FALSE;
	}

	if( ! pFileWindow->InitProjectWorkspace() ) return FALSE;

	m_bProjectLoaded = FALSE;
	m_szProjectPathName = "";

	return TRUE;
}

BOOL CCedtApp::SaveProjectWorkspace()
{
	CMainFrame * pMainFrame = (CMainFrame *)AfxGetMainWnd();
	CFileWindow * pFileWindow = (CFileWindow *)pMainFrame->GetFileWindow();
	if( ! pFileWindow->SaveProjectWorkspace(m_szProjectPathName) ) return FALSE;

	return TRUE;
}

BOOL CCedtApp::SaveRegularWorkspace()
{
	CMainFrame * pMainFrame = (CMainFrame *)AfxGetMainWnd();
	CFileWindow * pFileWindow = (CFileWindow *)pMainFrame->GetFileWindow();
	if( ! pFileWindow->SaveRegularWorkspace(m_szInstallDirectory + "\\cedt.wks") ) return FALSE;

	return TRUE;
}

BOOL CCedtApp::NewProjectWorkspace(LPCTSTR lpszPathName)
{
	CMainFrame * pMainFrame = (CMainFrame *)AfxGetMainWnd();
	CFileWindow * pFileWindow = (CFileWindow *)pMainFrame->GetFileWindow();
	if( ! pFileWindow->NewProjectWorkspace(lpszPathName) ) return FALSE;
	if( ! pFileWindow->SaveProjectWorkspace(lpszPathName) ) return FALSE;

	m_bProjectLoaded = TRUE;
	m_szProjectPathName = lpszPathName;

	return TRUE;
}

BOOL CCedtApp::OpenProjectWorkspace(LPCTSTR lpszPathName)
{
	CMainFrame * pMainFrame = (CMainFrame *)AfxGetMainWnd();
	CFileWindow * pFileWindow = (CFileWindow *)pMainFrame->GetFileWindow();
	if( ! pFileWindow->OpenProjectWorkspace(lpszPathName) ) return FALSE;

	m_bProjectLoaded = TRUE;
	m_szProjectPathName = lpszPathName;

	return TRUE;
}

BOOL CCedtApp::OpenRegularWorkspace(LPCTSTR lpszPathName)
{
	CMainFrame * pMainFrame = (CMainFrame *)AfxGetMainWnd();
	CFileWindow * pFileWindow = (CFileWindow *)pMainFrame->GetFileWindow();
	if( ! pFileWindow->OpenRegularWorkspace(lpszPathName) ) return FALSE;
	if( ! pFileWindow->InitProjectWorkspace() ) return FALSE;

	m_bProjectLoaded = FALSE;
	m_szProjectPathName = "";

	return TRUE;
}

⌨️ 快捷键说明

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