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

📄 cedtelement.h

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


#include <fstream.h>


// RANGE TYPE (KEYWORD RANGE)
#define RT_GLOBAL						0x00
#define RT_RANGE1						0x01
#define RT_RANGE2						0x02
#define RT_NR1AR2						0x03
#define RT_NRNGE1						0x04
#define RT_NRNGE2						0x05
#define RT_R1ORR2						0x06


// CHARACTER TYPE
#define CH_WHITESPACE					0x00
#define CH_DELIMITER					0x01
#define CH_CHARACTER					0x02


// WORD TYPE
#define WT_RETURN						0x01
#define WT_LINEFEED						0x02
#define WT_TAB							0x03
#define WT_SPACE						0x04
#define WT_CONSTANT						0x05
#define WT_QUOTATION1					0x06
#define WT_QUOTATION2					0x07
#define WT_QUOTATION3					0x08
#define WT_LINECOMMENT					0x09
#define WT_COMMENTON					0x0A
#define WT_COMMENTOFF					0x0B
#define WT_SHADOWON						0x0C
#define WT_SHADOWOFF					0x0D
#define WT_HIGHLIGHTON					0x0E
#define WT_HIGHLIGHTOFF					0x0F
#define WT_RANGE1BEG					0x10
#define WT_RANGE1END					0x11
#define WT_RANGE2BEG					0x12
#define WT_RANGE2END					0x13
#define WT_VARIABLE						0x14
#define WT_KEYWORD0						0x15
#define WT_KEYWORD1						0x16
#define WT_KEYWORD2						0x17
#define WT_KEYWORD3						0x18
#define WT_KEYWORD4						0x19
#define WT_KEYWORD5						0x1A
#define WT_KEYWORD6						0x1B
#define WT_KEYWORD7						0x1C
#define WT_KEYWORD8						0x1D
#define WT_KEYWORD9						0x1E
#define WT_WORD							0x1F
#define WT_WRONGWORD					0x20
#define WT_DELIMITER					0x21
#define WT_DBCHAR						0x22
#define WT_GRAPH						0x23


// LINE TYPE
#define LT_HASBOOKMARK					0x01
#define LT_HASRANGE						0x02
#define LT_HASCOMMENT					0x04
#define LT_HASHIGHLIGHT					0x08
#define LT_HASQUOTATION					0x10
#define LT_LINEOVERFLOW					0x20


// ACTION TYPE
#define AT_INSERTCHAR					0x01
#define AT_DELETECHAR					0x02
#define AT_INSERTSTRING					0x03
#define AT_DELETESTRING					0x04
#define AT_INSERTBLOCK					0x05
#define AT_DELETEBLOCK					0x06
#define AT_SPLITLINE					0x07
#define AT_JOINLINES					0x08


// MACRO TYPE
#define MACRO_MOVE						0x01
#define MACRO_CHAR						0x02
#define MACRO_STRING					0x03
#define MACRO_FILE						0x04
#define MACRO_FIND						0x05
#define MACRO_REPLACE					0x06
#define MACRO_GOTO						0x07
#define MACRO_COMMAND					0x08


// CONTROL CHARACTERS
#define CONTROL_CHARS1					"\x07\x08\x7F\xFF"
#define CONTROL_CHARS2					\
"\x01\x02\x03\x04\x05\x06\x07\x08\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F\x7F\xFF"


// SEARCH OPTIONS
#define OPTION_WHOLE_WORD				0x01
#define OPTION_MATCH_CASE				0x02
#define OPTION_REG_EXP					0x04

#define COMPOSE_SEARCH_OPTION(bWholeWord, bMatchCase, bRegExp)	( \
	(bWholeWord ? OPTION_WHOLE_WORD : 0x00) | \
	(bMatchCase ? OPTION_MATCH_CASE : 0x00) | \
	(bRegExp    ? OPTION_REG_EXP    : 0x00) )

#define HAS_WHOLE_WORD(nOptions)		( (nOptions) & OPTION_WHOLE_WORD )
#define HAS_MATCH_CASE(nOptions)		( (nOptions) & OPTION_MATCH_CASE )
#define HAS_REG_EXP(nOptions)			( (nOptions) & OPTION_REG_EXP    )


// KEY STATUS
#define KEYSTATE_CONTROL				0x01
#define KEYSTATE_SHIFT					0x02
#define KEYSTATE_MENU					0x04


// FILE BACKUP OPTION
#define BACKUP_DONT_BACKUP				0x00
#define BACKUP_BEFORE_SAVE				0x01
#define BACKUP_BEFORE_OPEN				0x02

#define BACKUP_METHOD01					0x01
#define BACKUP_METHOD02					0x02


// ENCODING TYPE
#define ENCODING_TYPE_UNKNOWN			0x00
#define ENCODING_TYPE_ASCII				0x01
#define ENCODING_TYPE_UNICODE_LE		0x02
#define ENCODING_TYPE_UNICODE_BE		0x03
#define ENCODING_TYPE_UTF8_WBOM			0x04
#define ENCODING_TYPE_UTF8_XBOM			0x05

extern CString ENCODING_TYPE_DESCRIPTION_FULL[];
extern CString ENCODING_TYPE_DESCRIPTION_SHORT[];


// FILE FORMAT
#define FILE_FORMAT_UNKNOWN				0x00
#define FILE_FORMAT_DOS					0x01
#define FILE_FORMAT_UNIX				0x02
#define FILE_FORMAT_MAC					0x03

extern CString FILE_FORMAT_DESCRIPTION_FULL[];
extern CString FILE_FORMAT_DESCRIPTION_SHORT[];


// FILE READ/WRITE BUFFER SIZE
#define FILE_READ_BUFFER_SIZE			512
#define FILE_WRITE_BUFFER_SIZE			512


// CALLBACK FUNCTION
typedef BOOL (* CALLBACK_FUNCTION)(UINT);


// GLOBAL FUNCTIONS
BOOL DetectEncodingTypeAndFileFormat(LPCTSTR lpszPathName, INT & nEncodingType, INT & nFileFormat);

BOOL DetectEncodingType(LPVOID lpContents, INT nLength, INT & nEncodingType);
BOOL DetectFileFormat(LPVOID lpContents, INT nLength, INT & nFileFormat);


// CLangSpec Class
class CLangSpec 
{
public:
	BOOL	m_bCaseSensitive, m_bMultiLineStringConstant, m_bVariableHighlightInString;
	CString m_szDelimiters; // delimiters
	CString m_szKeywordPrefix, m_szHexaDecimalMark, m_szVariablePrefix;
	CString m_szVariableEnclosedBy, m_szSpecialVariableChars;
	TCHAR	m_chEscapeChar; // escape character
	TCHAR	m_chQuotationMark1, m_chQuotationMark2, m_chQuotationMark3;
	TCHAR	m_chIndentationOn, m_chIndentationOff;
	CString m_szLineComment1OnFirstPosition, m_szLineComment2OnFirstPosition;
	CString m_szLineComment1, m_szLineComment2;
	CString m_szBlockComment1On, m_szBlockComment1Off;
	CString m_szBlockComment2On, m_szBlockComment2Off;
	CString m_szShadowOn, m_szShadowOff;
	CString m_szHighlightOn, m_szHighlightOff;
	CString m_szRange1Beg, m_szRange1End;
	CString m_szRange2Beg, m_szRange2End;
	CString m_szPairs1, m_szPairs2, m_szPairs3;
	UCHAR	m_ucQuotationMarkRange, m_ucLineCommentRange, m_ucBlockCommentRange;

public:
	CLangSpec() { ResetContents(); }
	virtual ~CLangSpec() {}

	void ResetContents();
	BOOL FileLoad(LPCTSTR lpszPathName);
};


// CKeywords Class
class CKeywords : public CMap<CString, LPCTSTR, SHORT, SHORT &> 
{
public:
	CKeywords() { InitHashTable(1000); }
	virtual ~CKeywords() {}

	void ResetContents() { RemoveAll(); }
	BOOL FileLoad(LPCTSTR lpszPathName, BOOL bCaseSensitive);
};


// CDictionary Class
class CDictionary : public CMap<CString, LPCTSTR, SHORT, SHORT &> 
{
protected:
	UINT m_nWordCount;

public:
	CDictionary() { InitHashTable(10000); m_nWordCount = 0; }
	virtual ~CDictionary() {}

	void ResetContents() { RemoveAll(); m_nWordCount = 0; }
	BOOL FileLoad(LPCTSTR lpszPathName, CALLBACK_FUNCTION fcnCallback = NULL);

	UINT GetWordCount() { return m_nWordCount; }
	BOOL AddWord(LPCTSTR lpszWord);
};


// ANALYZEDWORDINFO Structure
typedef struct _ANALYZEDWORDINFO {
	UCHAR	m_cType, m_cRange;
	SHORT	m_sIndex, m_sLength;
} ANALYZEDWORDINFO;


// CAnalyzedString Class
class CAnalyzedString : public CString 
{
public:
	ANALYZEDWORDINFO * m_pWordInfo;
	SHORT	m_sWordCount;
	SHORT	m_sInfoFlags;
	
public:
	CAnalyzedString() : CString() { m_pWordInfo = NULL; m_sWordCount = 0; m_sInfoFlags = 0x00; }
	CAnalyzedString( const CString & stringSrc ) : CString(stringSrc) { m_pWordInfo = NULL; m_sWordCount = 0; m_sInfoFlags = 0x00; }
	CAnalyzedString( TCHAR ch, int nRepeat = 1 ) : CString(ch, nRepeat) { m_pWordInfo = NULL; m_sWordCount = 0; m_sInfoFlags = 0x00; }
	CAnalyzedString( LPCTSTR lpsz, int nLength ) : CString(lpsz, nLength) { m_pWordInfo = NULL; m_sWordCount = 0; m_sInfoFlags = 0x00; }
	CAnalyzedString( const unsigned char * psz ) : CString(psz) { m_pWordInfo = NULL; m_sWordCount = 0; m_sInfoFlags = 0x00; }
	CAnalyzedString( LPCWSTR lpsz ) : CString(lpsz) { m_pWordInfo = NULL; m_sWordCount = 0; m_sInfoFlags = 0x00; }
	CAnalyzedString( LPCSTR lpsz ) : CString(lpsz) { m_pWordInfo = NULL; m_sWordCount = 0; m_sInfoFlags = 0x00; }

	virtual ~CAnalyzedString() { delete [] m_pWordInfo; }

	CAnalyzedString & operator=(const CAnalyzedString & stringSrc);
};


// FORMATEDWORDINFO Structure
typedef struct _FORMATEDWORDINFO {
	UCHAR	m_cType, m_cRange;
	SHORT	m_sIndex, m_sLength;
	INT		m_nPosition, m_nWidth;
} FORMATEDWORDINFO;


// CFormatedString Class
class CFormatedString 
{
public:
	LPCTSTR m_pString;
	FORMATEDWORDINFO * m_pWordInfo;
	SHORT	m_sWordCount, m_sLineSplitIndex;
	SHORT	m_sInfoFlags;
	
public:
	CFormatedString() { m_pString = NULL; m_pWordInfo = NULL; m_sWordCount = 0; m_sInfoFlags = 0x00; m_sLineSplitIndex = 0; }
	virtual ~CFormatedString() { delete [] m_pWordInfo; }
	
	CFormatedString & operator=(const CFormatedString & stringSrc);
	operator LPCTSTR() const { return m_pString; }
	TCHAR operator[](INT nIndex) const { return m_pString[nIndex]; }
};


// CMemText Class
class CMemText : public CList<CString, LPCTSTR>
{
public:
	CMemText() : CList<CString, LPCTSTR>() {}
	CMemText(const CMemText & rBlock) { operator=(rBlock); }
	virtual ~CMemText() {}

	BOOL FileLoad(LPCTSTR lpszPathName);
	BOOL FileSave(LPCTSTR lpszPathName);

	void AppendText(CMemText & rBlock);
	CMemText & operator=(const CMemText & rBlock);

	void MakeUpperCase();
	void MakeLowerCase();
	void MakeInvertCase();
	void MakeCapitalize();

	INT  GetMaxLength();
	void MakeEqualLength();

	INT  MemorySize();
	void MemoryLoad(CHAR * pMem, INT size);
	void MemorySave(CHAR * pMem, INT size);
};


// CAnalyzedText Class
class CAnalyzedText : public CList<CAnalyzedString, LPCTSTR>
{
public:
	CAnalyzedText() : CList<CAnalyzedString, LPCTSTR>() {}
	virtual ~CAnalyzedText() {}

	BOOL FileLoad(LPCTSTR lpszPathName, INT nEncodingType, INT nFileFormat);
	BOOL FileSave(LPCTSTR lpszPathName, INT nEncodingType, INT nFileFormat);

	BOOL HaveAnyOverflowLine();
};


// CFormatedText Class
class CFormatedText : public CList<CFormatedString, CFormatedString &>
{
public:
	CFormatedText() : CList<CFormatedString, CFormatedString &>() {}
	virtual ~CFormatedText() {}
};


// CUndoBuffer Class
class CUndoBuffer : public CList<INT, INT> 
{
public:
	CList<INT, INT> m_lstAction;
	CList<INT, INT> m_lstIdxX, m_lstIdxY;
	CList<INT, INT> m_lstParam;
	CList<UINT, UINT> m_lstChar;
	CList<CString, LPCTSTR> m_lstString;
	CList<CMemText, CMemText &> m_lstBlock;

public:
	CUndoBuffer() {}
	virtual ~CUndoBuffer() {}

	void EmptyBuffer();
	void GetRecentIndex(INT & nIdxX, INT & nIdxY);
};


// CUserCommand Class
class CUserCommand 
{
public:
	WORD m_wVirtualKeyCode, m_wModifiers;
	CString m_szName, m_szCommand;
	CString m_szArgument, m_szDirectory;
	BOOL m_bCloseOnExit, m_bUseShortFileName;
	BOOL m_bCaptureOutput, m_bSaveBeforeExecute;

public:
	CUserCommand();
	virtual ~CUserCommand() {}

	INT IsAssigned() { return m_szCommand.GetLength(); }
	CString GetHotKeyText();

	BOOL StreamSave(ofstream & fout);
	BOOL StreamLoad(ifstream & fin);

	void DeleteContents();
	void CopyContents(CUserCommand & rCommand);
};


// CMacroBuffer Class
class CMacroBuffer 
{
public:
	WORD m_wVirtualKeyCode, m_wModifiers;
	CString m_szName;
	CList<INT, INT> m_lstAction;
	CList<UINT, UINT> m_lstParam;
	CList<UINT, UINT> m_lstFlags;
	CList<CString, LPCTSTR> m_lstString;

public:
	CMacroBuffer();
	virtual ~CMacroBuffer() {}

	INT GetBufferCount() { return m_lstAction.GetCount(); }
	CString GetHotKeyText();

	BOOL StreamSave(ofstream & fout);
	BOOL StreamLoad(ifstream & fin);

	void DeleteContents();
	void CopyContents(CMacroBuffer & rBuffer);
};


// CFileFilter Class
class CFileFilter 
{
public:
	CString m_szDescription;
	CString m_szExtensions;
	CString m_szDefaultExt;

public:
	CFileFilter();
	virtual ~ CFileFilter() {}

	BOOL IsValid() { return (m_szDescription.GetLength() && m_szExtensions.GetLength()); }

	BOOL StreamSave(ofstream & fout);
	BOOL StreamLoad(ifstream & fin);

	void AssignContents(LPCTSTR lpszDescription, LPCTSTR lpszExtensions, LPCTSTR lpszDefaultExt);
	void DeleteContents();
	void CopyContents(CFileFilter & rFilter);
};


// CSyntaxType Class
class CSyntaxType 
{
public:
	CString m_szDescription;
	CString m_szLangSpecFile;
	CString m_szKeywordsFile;

public:
	CSyntaxType();
	virtual ~CSyntaxType() {}

	BOOL StreamSave(ofstream & fout);
	BOOL StreamLoad(ifstream & fin);

	void AssignContents(LPCTSTR lpszDescription, LPCTSTR lpszLangSpecFile, LPCTSTR lpszKeywordsFile);
	void DeleteContents();
	void CopyContents(CSyntaxType & rSyntax);
};


#define FTP_SERVER_GENERIC		0x00
#define FTP_SERVER_HPUNIX		0x01

// CFtpAccount Class
class CFtpAccount 
{
public:
	CString m_szDescription, m_szServerName;
	CString m_szUserName, m_szPassword;
	CString m_szSubDirectory;

	BOOL m_bSavePassword, m_bPassiveMode;
	BOOL m_bUseWinInet, m_bPasswordVerified;
	INT  m_nServerType, m_nPortNumber;

public:
	CFtpAccount();
	virtual ~CFtpAccount() {}

	CString GetDisplayName();
	CString GetFullAccountName();
	CString GetShortAccountName();

	INT IsValid() { return (m_szDescription.GetLength() && m_szServerName.GetLength()); }

	BOOL StreamSave(ofstream & fout);
	BOOL StreamLoad(ifstream & fin);

	void DeleteContents();
	void CopyContents(CFtpAccount & rAccount);
};


#endif // __CEDT_ELEMENT_H_

⌨️ 快捷键说明

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