You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

906 lines
37 KiB
C++

// XTPSyntaxEditBufferManager.h
//
// This file is a part of the XTREME TOOLKIT PRO MFC class library.
// (c)1998-2012 Codejock Software, All Rights Reserved.
//
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
// CONSENT OF CODEJOCK SOFTWARE.
//
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
// IN THE XTREME SYNTAX EDIT LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
// SINGLE COMPUTER.
//
// CONTACT INFORMATION:
// support@codejock.com
// http://www.codejock.com
//
//////////////////////////////////////////////////////////////////////
//{{AFX_CODEJOCK_PRIVATE
#if !defined(__XTPSYNTAXEDITBUFFERMANAGER_H__)
#define __XTPSYNTAXEDITBUFFERMANAGER_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
namespace XTPSyntaxEditLexAnalyser
{
class CXTPSyntaxEditLexTextSchema;
class CXTPSyntaxEditLexParser;
};
typedef XTPSyntaxEditLexAnalyser::CXTPSyntaxEditLexTextSchema CXTPSyntaxEditTextSchema;
class CXTPSyntaxEditLineMarksManager;
class CXTPSyntaxEditUndoRedoManager;
class CXTPNotifySink;
class CXTPNotifyConnection;
class CXTPSyntaxEditConfigurationManager;
typedef CXTPSmartPtrInternalT<CXTPSyntaxEditConfigurationManager> CXTPSyntaxEditConfigurationManagerPtr;
//===========================================================================
// Summary:
// This class is the main class for buffer management. One instance
// of this class is attached with a CXTPSyntaxEditCtrl object. This class
// contains a list of CBufferIndex class which in turn contains
// a position in the file (In case of un-modified index) or a CEditBuffer
// pointer.
//===========================================================================
class _XTP_EXT_CLASS CXTPSyntaxEditBufferManager : public CXTPCmdTarget
{
DECLARE_DYNCREATE(CXTPSyntaxEditBufferManager)
friend class CXTPSyntaxEditCtrl;
public:
//-----------------------------------------------------------------------
// Summary:
// Default object constructor.
//-----------------------------------------------------------------------
CXTPSyntaxEditBufferManager();
//-----------------------------------------------------------------------
// Summary:
// Destroys a CXTPSyntaxEditBufferManager object, handles cleanup
// and de-allocation.
//-----------------------------------------------------------------------
~CXTPSyntaxEditBufferManager();
//-----------------------------------------------------------------------
// Summary:
// Determines if the file has been modified or not.
// Returns:
// TRUE if modified, FALSE otherwise.
//-----------------------------------------------------------------------
BOOL IsModified() const;
//-----------------------------------------------------------------------
// Summary:
// Determines if the file has been modified or not.
// Returns:
// CodePage to be used for conversion.
//-----------------------------------------------------------------------
UINT GetCodePage() const;
//-----------------------------------------------------------------------
// Summary:
// Returns the tab size for the current document.
// Returns:
// Selected tab size.
//-----------------------------------------------------------------------
int GetTabSize() const;
//-----------------------------------------------------------------------
// Summary:
// Set the tab size between 1-64.
// Parameters:
// nTabSize : [in] The tab size to set.
// bUpdateReg : [in] Set this parameter as TRUE to update this setting
// in the registry. It is FALSE by default.
// Returns:
// TRUE if the operation is successful and FALSE else.
//-----------------------------------------------------------------------
BOOL SetTabSize(int nTabSize, BOOL bUpdateReg = FALSE);
//-----------------------------------------------------------------------
// Summary:
// Returns the overwrite flag status.
// Returns:
// TRUE if OVR mode is set, FALSE otherwise.
//-----------------------------------------------------------------------
BOOL GetOverwriteFlag() const;
//-----------------------------------------------------------------------
// Summary:
// Sets or resets the OVR flag.
// Parameters:
// bOverwrite : [in] Pass TRUE to set OVR flag, FALSE to INS flag.
//-----------------------------------------------------------------------
void SetOverwriteFlag(BOOL bOverwrite);
//-----------------------------------------------------------------------
// Summary:
// Returns the parser status.
// Returns:
// TRUE if Parser is enabled, FALSE otherwise.
//-----------------------------------------------------------------------
BOOL IsParserEnabled() const;
//-----------------------------------------------------------------------
// Summary:
// Enable or disable parser.
// Parameters:
// bEnable : [in] Pass TRUE to enable parser, FALSE to disable.
//-----------------------------------------------------------------------
void EnableParser(BOOL bEnable);
//-----------------------------------------------------------------------
// Summary:
// Returns the CRLF type of the current document.
// Returns:
// Current CRLF type.
//-----------------------------------------------------------------------
int GetCurCRLFType() const;
//-----------------------------------------------------------------------
// Summary:
// Set the current documents CRLF style.
// Parameters:
// nStyle : [in] The CRLF style to set
//-----------------------------------------------------------------------
void SetCRLFStyle(int nStyle);
//-----------------------------------------------------------------------
// Summary:
// Returns the CRLF of the current document.
// Returns:
// Current CRLF text.
//-----------------------------------------------------------------------
CString GetCurCRLF() const;
private:
//-----------------------------------------------------------------------
// Summary:
// Internal implementation of getting CRLF of the current document.
// Parameters:
// nCRLFStyle : [in] Index of the CRLF style string.
// Returns:
// Current CRLF text.
//-----------------------------------------------------------------------
LPCTSTR GetCRLF(int nCRLFStyle = -1) const;
public:
//-----------------------------------------------------------------------
// Summary:
// Determines if the supplied text is a CRLF or not
// Parameters:
// szCompText : [in] The text to be compared.
// bFindReverse : [in] Should be match reverse.
// Returns:
// TRUE if the supplied text is a CRLF, FALSE otherwise.
//-----------------------------------------------------------------------
BOOL IsTextCRLF(LPCTSTR szCompText, BOOL bFindReverse = FALSE) const;
#ifdef _UNICODE
//-----------------------------------------------------------------------
// Summary:
// Determines if the supplied text is a CRLF or not of the non-unicode string.
// Parameters:
// szCompText : [in] The text to be compared.
// bFindReverse : [in] Should be match reverse.
// Returns:
// TRUE if the supplied text is a CRLF, FALSE otherwise.
//-----------------------------------------------------------------------
BOOL IsTextCRLF(LPCSTR szCompText, BOOL bFindReverse = FALSE) const;
#endif
//-----------------------------------------------------------------------
// Summary:
// Returns the number of rows in the document.
// Returns:
// Number of rows in the document.
//-----------------------------------------------------------------------
int GetRowCount() const;
//-----------------------------------------------------------------------
// Summary:
// Returns pointer to the associated Undo/Redo manager.
// Returns:
// Pointer to a CXTPSyntaxEditUndoRedoManager object.
//-----------------------------------------------------------------------
CXTPSyntaxEditUndoRedoManager* GetUndoRedoManager() const;
//-----------------------------------------------------------------------
// Summary:
// Returns pointer to the associated line marks manager.
// Returns:
// Pointer to a CXTPSyntaxEditLineMarksManager object.
//-----------------------------------------------------------------------
CXTPSyntaxEditLineMarksManager* GetLineMarksManager() const;
//-----------------------------------------------------------------------
// Summary:
// Returns pointer to the associated lexical parser.
// Returns:
// Pointer to a XTPSyntaxEditLexAnalyser::CXTPSyntaxEditLexParser object.
//-----------------------------------------------------------------------
XTPSyntaxEditLexAnalyser::CXTPSyntaxEditLexParser* GetLexParser() const;
//-----------------------------------------------------------------------
// Summary:
// Returns pointer to the associated configuration manager.
// Returns:
// A pointer to the configuration manager object.
//
//-----------------------------------------------------------------------
CXTPSyntaxEditConfigurationManager* GetLexConfigurationManager() const;
//-----------------------------------------------------------------------
// Summary:
// Set pointer to the configuration manager.
// Parameters:
// pMan : [in] Pointer to CXTPSyntaxEditConfigurationManager.
//-----------------------------------------------------------------------
void SetLexConfigurationManager(CXTPSyntaxEditConfigurationManager* pMan);
//-----------------------------------------------------------------------
// Summary:
// Returns events connection pointer.
// Returns:
// A pointer to the notify connection object.
//-----------------------------------------------------------------------
CXTPNotifyConnection* GetConnection() const;
//-----------------------------------------------------------------------
// Summary:
// Cleans up all internal objects.
//-----------------------------------------------------------------------
void Close();
//-----------------------------------------------------------------------
// Summary:
// Serializes actual data.
// Parameters:
// ar : [in, out] The archive to save/load text.
//-----------------------------------------------------------------------
virtual void Serialize(CArchive& ar);
//-----------------------------------------------------------------------
// Summary:
// Serializes actual data.
// Parameters:
// ar : [in, out] The archive to save/load text.
// bUnicode : [in] Use UNICODE format for text in the archive.
// bWriteUnicodeFilePrefix : [in] Write Unicode File Prefix.
// nCodePage : [in] Text code page (or -1 to use default).
// pcszFileExt : [in] File extension to select appropriate parser schema.
// nDataSizeLimit : [in] The number of bytes to stop storing text to archive
// (or -1 to store all).
//-----------------------------------------------------------------------
virtual void SerializeEx(CArchive &ar, BOOL bUnicode = -1, BOOL bWriteUnicodeFilePrefix = TRUE,
UINT nCodePage = (UINT)-1, LPCTSTR pcszFileExt = NULL, int nDataSizeLimit = -1);
//-----------------------------------------------------------------------
// Summary:
// Set the file pointer for the buffer.
// Parameters:
// pFile : [in] The file pointer to set.
// pcszFileExt : [in] Number of lines (Not used).
// See Also:
// SetFileExt()
//-----------------------------------------------------------------------
void Load(CFile *pFile, LPCTSTR pcszFileExt = NULL);
//-----------------------------------------------------------------------
// Summary:
// Sets file extension.
// Parameters:
// strExt : [in] string of extension.
// See also:
// CString GetFileExt()
//-----------------------------------------------------------------------
void SetFileExt(const CString& strExt);
//-----------------------------------------------------------------------
// Summary:
// Returns file extension.
// Returns:
// CString object with file extensions.
// See also:
// void SetFileExt(const CString& strExt);
//-----------------------------------------------------------------------
CString GetFileExt() const;
//-----------------------------------------------------------------------
// Summary:
// Gets a line of text either from file or buffer.
// Parameters:
// iLine : [in] The line for which to get the text.
// strText : [out] A reference to CString object to be filled with text.
// bAddCRLF : [in] Pass TRUE to add CRLF (if exists), otherwise .
// iCRLFStyle : [in] Specify the CRLF style.
//-----------------------------------------------------------------------
void GetLineText(int iLine, CString& strText, BOOL bAddCRLF = FALSE, int iCRLFStyle = -1);
//-----------------------------------------------------------------------
// Summary:
// Returns a line of text either from file or buffer.
// Parameters:
// iLine : [in] The line for which to get the text.
// bAddCRLF : [in] Pass TRUE to add CRLF (if exists), otherwise .
// iCRLFStyle : [in] Specify the CRLF style.
// Returns:
// CString object with text line.
//-----------------------------------------------------------------------
CString GetLineText(int iLine, BOOL bAddCRLF = FALSE, int iCRLFStyle = -1) const;
//-----------------------------------------------------------------------
// Summary:
// Returns a length for line of text in TCHARs.
// Parameters:
// iLine : [in] The line for which to get the text.
// bAddCRLF : [in] Pass TRUE to add CRLF (if exsts), otherwise .
// iCRLFStyle : [in] Specify the CRLF style.
// Returns:
// Text line length as integer value.
//-----------------------------------------------------------------------
int GetLineTextLength(int iLine, BOOL bAddCRLF = FALSE, int iCRLFStyle = -1) const;
//-----------------------------------------------------------------------
// Summary:
// Returns a length for line of text in characters.
// Parameters:
// iLine : [in] The line for which to get the text.
// bAddCRLF : [in] Pass TRUE to add CRLF (if exsts), otherwise .
// iCRLFStyle : [in] Specify the CRLF style.
// Returns:
// Text line length in characters as integer value.
//-----------------------------------------------------------------------
int GetLineTextLengthC(int iLine, BOOL bAddCRLF = FALSE, int iCRLFStyle = -1) const;
//-----------------------------------------------------------------------
// Summary:
// Returns the max allowable length for line of text.
// Returns:
// Text line length as integer value.
//-----------------------------------------------------------------------
int GetMaxLineTextLength() const;
//-----------------------------------------------------------------------
// Summary:
// Returns a length for line of text either from file or buffer.
// Parameters:
// nLineFrom : [in] Start line identifier.
// nLineTo : [in] End line identifier.
// bExpandTabs : [in] Expand tab characters.
// Returns:
// Text length as integer value.
//-----------------------------------------------------------------------
int CalcMaxLineTextLength(int nLineFrom = -1, int nLineTo = -1, BOOL bExpandTabs = FALSE) const;
//-----------------------------------------------------------------------
// Summary:
// Retrieve text from the buffer bounded between
// row1/col1 and row2/col2 text coordinates.
// Parameters:
// row1 : [in] Start line number.
// col1 : [in] Start column number.
// row2 : [in] End line number.
// col2 : [in] End column number.
// file : [out] A reference to CMemFile object to receive text.
// bColumnSelection : [in] If this parameter TRUE - the text block started
// from col1 and ended on col2 for each line
// between row1 and row2 copied, otherwise full
// row text copied for rows between row1 and row2.
// bForceDOSStyleCRLF : [in] If this parameter TRUE the DOS Style carriage
// return chars will be used to end each line,
// otherwise current carriage return style is used.
// Returns:
// TRUE if the succeeded, FALSE otherwise.
//-----------------------------------------------------------------------
BOOL GetBuffer(int row1, int col1, int row2, int col2,
CMemFile& file, BOOL bColumnSelection = FALSE,
BOOL bForceDOSStyleCRLF = FALSE);
//-----------------------------------------------------------------------
// Summary:
// Retrieve text from the buffer bounded between
// lcStart and lcEnd text coordinates.
// Parameters:
// lcStart : [in] Start text position.
// lcEnd : [in] End text position.
// file : [out] A reference to CMemFile object to receive text.
// bColumnSelection : [in] If this parameter TRUE - the text block started
// from col1 and ended on col2 for each line
// between row1 and row2 copied, otherwise full
// row text copied for rows between row1 and row2.
// bForceDOSStyleCRLF : [in] If this parameter TRUE the DOS Style carriage
// return chars will be used to end each line,
// otherwise current carriage return style is used.
// Returns:
// TRUE if the succeeded, FALSE otherwise.
//-----------------------------------------------------------------------
BOOL GetBuffer(const XTP_EDIT_LINECOL& lcStart, const XTP_EDIT_LINECOL& lcEnd,
CMemFile& file, BOOL bColumnSelection = FALSE,
BOOL bForceDOSStyleCRLF = FALSE);
//-----------------------------------------------------------------------
// Summary:
// Inserts a text.
// Parameters:
// szText : [in] Text to be inserted.
// iRow : [in] Start row for delete.
// iCol : [in] Start col for delete.
// bCanUndo : [in] Pass TRUE if this can be undone.
// pFinalLC : [out] A pointer to XTP_EDIT_LINECOL variable to
// receive operation final position in the text
// (to set caret).
// Returns:
// TRUE if the succeeded, FALSE otherwise.
//-----------------------------------------------------------------------
BOOL InsertText(LPCTSTR szText, int iRow, int iCol, BOOL bCanUndo = TRUE,
XTP_EDIT_LINECOL* pFinalLC = NULL);
//-----------------------------------------------------------------------
// Summary:
// Inserts a text block.
// Parameters:
// szText : [in] Text to be inserted.
// nRow : [in] Start row for delete.
// nCol : [in] Start col for delete.
// bCanUndo : [in] Pass TRUE if this can be undone.
// pFinalLC : [out] A pointer to XTP_EDIT_LINECOL variable to
// receive operation final position in the text
// (to set caret).
// Returns:
// TRUE if the succeeded, FALSE otherwise.
//-----------------------------------------------------------------------
BOOL InsertTextBlock(LPCTSTR szText, int nRow, int nCol, BOOL bCanUndo = TRUE,
XTP_EDIT_LINECOL* pFinalLC = NULL);
//-----------------------------------------------------------------------
// Summary:
// Deletes a certain range of text
// Parameters:
// iRowFrom : [in] Start row for delete.
// iColFrom : [in] Start col for delete.
// iRowTo : [in] End row for delete.
// iColTo : [in] End col for delete.
// bCanUndo : [in] Pass TRUE if this can be undone.
// bDispCol : [in] if TRUE iColFrom and iColTo are display cols,
// otherwise they are string cols.
// Returns:
// TRUE if the succeeded, FALSE otherwise.
//-----------------------------------------------------------------------
BOOL DeleteText(int iRowFrom, int iColFrom, int iRowTo, int iColTo,
BOOL bCanUndo = TRUE, BOOL bDispCol = FALSE);
//-----------------------------------------------------------------------
// Summary:
// Deletes a certain range of text
// Parameters:
// nRow : [in] Start row for delete.
// bCanUndo : [in] Pass TRUE if this can be undone.
// nRowsCount : [in] Rows count to delete.
// Returns:
// TRUE if the succeeded, FALSE otherwise.
//-----------------------------------------------------------------------
BOOL RemoveLine(int nRow, BOOL bCanUndo = TRUE, int nRowsCount = 1);
//--------------------------------------------------------------------
// Summary:
// Get main configuration file name.
// Remarks:
// Return configuration file name previously stored by
// SetConfigFile().
// Returns:
// Main configuration file name.
// See also:
// CXTPSyntaxEditBufferManager::SetConfigFile().
//--------------------------------------------------------------------
CString GetConfigFile() const;
//-----------------------------------------------------------------------
// Summary:
// Set the path to the main configuration file.
// Parameters:
// szPath : [in] A valid path for searching the .ini files.
// Remarks:
// Configuration will be reloaded.
// Returns:
// TRUE if path is found, FALSE otherwise.
// See also:
// CXTPSyntaxEditBufferManager::GetConfigFile().
//-----------------------------------------------------------------------
BOOL SetConfigFile(LPCTSTR szPath);
void SetCodePage(UINT uCodePage);
//-----------------------------------------------------------------------
// Summary:
// Set the path to the main configuration file.
// Parameters:
// strExt : [in] file extension for for schema definition file.
// Returns:
// CXTPSyntaxEditTextSchema
//-----------------------------------------------------------------------
CXTPSyntaxEditTextSchema* GetMasterTextSchema(const CString& strExt) const;
//-----------------------------------------------------------------------
// Summary:
// Changes the case of the specified characters range in the specified row.
// Parameters:
// nRow : [in] A row to change case at.
// nDispFrom : [in] Begin visible position where to change case at.
// nDispTo : [in] End visible position where to change case at.
// bUpper : [in] TRUE when changing selection case to Upper,
// FALSE when changing selection case to Lower.
// bCanUndo : [in] Pass TRUE if this can be undone.
// Remarks:
// Configuration will be reloaded.
//-----------------------------------------------------------------------
void ChangeCase(int nRow, int nDispFrom, int nDispTo, BOOL bUpper, BOOL bCanUndo = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Changes the case of the specified characters range in the specified row.
// Parameters:
// nRow : [in] A row to change case at.
// nDispFrom : [in] Begin visible position where to change case at.
// nDispTo : [in] End visible position where to change case at.
// bTabify : [in] TRUE when changing spaces to tabs,
// FALSE when changing tabs to spaces.
// bCanUndo : [in] Pass TRUE if this can be undone.
// Remarks:
// Configuration will be reloaded.
//-----------------------------------------------------------------------
void ChangeTabification(int nRow, int nDispFrom, int nDispTo, BOOL bTabify, BOOL bCanUndo = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Converts column coordinates of text to string position coordinate.
// Parameters:
// nLine : [in] Text line identifier.
// nDispCol: [in] Column coordinate.
// Returns:
// String position identifier corresponding to column identifier.
// See also:
// virtual int StrPosToCol(int nLine, int nStrPos) const;
//-----------------------------------------------------------------------
virtual int ColToStrPos(int nLine, int nDispCol) const;
//-----------------------------------------------------------------------
// Summary:
// Converts string position of text to column coordinates coordinate.
// Parameters:
// nLine : [in] Text line identifier.
// nStrPos : [in] A string position.
// Returns:
// Column identifier corresponding to string position identifier.
// See also:
// virtual int ColToStrPos(int nLine, int nDispCol) const;
//-----------------------------------------------------------------------
virtual int StrPosToCol(int nLine, int nStrPos) const;
protected:
//-----------------------------------------------------------------------
// Summary:
// Cleans up the buffer and all other allocated memories
//-----------------------------------------------------------------------
void CleanUp();
//-----------------------------------------------------------------------
// Summary:
// Returns average data size.
// Parameters:
// nRowStart : [in] Start row identifier.
// nRowEnd : [in] End row identifier.
// Returns:
// Average data size as integer value.
// Remarks:
// Call this member function to calculate average data size based
// on average row length.
//-----------------------------------------------------------------------
virtual UINT CalcAveDataSize(int nRowStart, int nRowEnd);
int m_nAverageLineLen; // Stores average line length.
CXTPNotifyConnection* m_pConnection; // Connection object to send notifications.
protected:
int m_nTabSize; // Tab size
int m_iCRLFStyle; // CRLF style 0 - DOS, 1 - UNIX, 2 - MAC
UINT m_nCodePage; // CodePage for text conversion
BOOL m_bUnicodeFileFormat; // Determine is file format Unicode or ASCII.
BOOL m_bOverwrite; // Overwrite mode status
CXTPSyntaxEditUndoRedoManager* m_pUndoRedoManager; // Undo / redo manager.
CXTPSyntaxEditLineMarksManager* m_pLineMarksManager; // line marks manager
XTPSyntaxEditLexAnalyser::CXTPSyntaxEditLexParser* m_pLexParser; // Lexical parser
CXTPSyntaxEditConfigurationManagerPtr m_ptrLexConfigurationManager;
// Pointer to the Lexical configuration manager
static CXTPSyntaxEditConfigurationManagerPtr s_ptrLexConfigurationManager_Default;
// The common default Configuration Manager instance.
static LONG s_dwLexConfigurationManager_DefaultRefs;
// The reference count for common default Configuration Manager instance.
CString m_strFileExt; // Stores file extension
BOOL m_bIsParserEnabled; // Stores flag of parser state (enabled/disabled)
//{{AFX_CODEJOCK_PRIVATE
CXTPNotifySink* m_pLexConfigManSinkMT;
virtual void OnLexConfigManEventHandler(XTP_NOTIFY_CODE Event,
WPARAM wParam, LPARAM lParam);
//}}AFX_CODEJOCK_PRIVATE
//------------------------------------------------------------------------
// Summary:
// This is helper class designed to manage a set of strings
//------------------------------------------------------------------------
class _XTP_EXT_CLASS CXTPSyntaxEditStringsManager
{
//{{AFX_CODEJOCK_PRIVATE
friend class CXTPSyntaxEditBufferManager;
//}}AFX_CODEJOCK_PRIVATE
public:
//----------------------------------------------------------------------
// Summary:
// Default object constructor.
//----------------------------------------------------------------------
CXTPSyntaxEditStringsManager();
//----------------------------------------------------------------------
// Summary:
// Default object destructor. Handles cleanup and deallocation
//----------------------------------------------------------------------
virtual ~CXTPSyntaxEditStringsManager();
//----------------------------------------------------------------------
// Summary:
// Returns count of managed strings
// Returns:
// An integer value specifying the number of strings.
//----------------------------------------------------------------------
int GetCount() const;
//----------------------------------------------------------------------
// Summary:
// Returns string by given index.
// Parameters:
// nRow : [in] String identifier.
// Returns:
// CString object.
//----------------------------------------------------------------------
CString GetStr(int nRow) const;
//----------------------------------------------------------------------
// Summary:
// Returns length of string in TCHARs.
// Parameters:
// nRow : [in] String identifier.
// Returns:
// Integer value of length of string.
//----------------------------------------------------------------------
int GetStrLen(int nRow) const;
//----------------------------------------------------------------------
// Summary:
// Returns length of string in characters.
// Parameters:
// nRow : [in] String identifier.
// Returns:
// Integer value of length of string in characters.
//----------------------------------------------------------------------
int GetStrLenC(int nRow) const;
//----------------------------------------------------------------------
// Summary:
// Sets string at given id.
// Parameters:
// nRow : [in] String identifier.
// strText : [in] Reference to CString object with text to set.
// Remarks:
// If given string id doesn't exist in collection function does
// nothing.
// See also:
// void SetAtGrowStr(int nRow, LPCTSTR pcszText);
//----------------------------------------------------------------------
void SetAtGrowStr(int nRow, const CString& strText);
//----------------------------------------------------------------------
// Summary:
// Sets string at given id.
// Parameters:
// nRow : [in] String identifier.
// pcszText: [in] Pointer to null terminated string with text to set.
// Remarks:
// If given string id doesn't exist in collection function does
// nothing.
// See also:
// void SetAtGrowStr(int nRow, const CString& strText);
//----------------------------------------------------------------------
void SetAtGrowStr(int nRow, LPCTSTR pcszText);
//----------------------------------------------------------------------
// Summary:
// Add string.
// Parameters:
// nRow : [in] String identifier.
// strText : [in] Reference to CString object with text to set.
// Remarks:
// If given string id exists in collection function sets string to
// given id.
// See also:
// void SetAtGrowStr(int nRow, const CString& strText);
//----------------------------------------------------------------------
void InsertStr(int nRow, const CString& strText);
//----------------------------------------------------------------------
// Summary:
// Removes string.
// Parameters:
// nRow : [in] String identifier.
// Returns:
// TRUE if success; FALSE if given id doesn't exist.
//----------------------------------------------------------------------
BOOL RemoveStr(int nRow);
//----------------------------------------------------------------------
// Summary:
// Removes all strings from collection.
//----------------------------------------------------------------------
void RemoveAllStrs();
//-----------------------------------------------------------------------
// Summary: Inserts text.
// Parameters:
// nRow - [in] String identifier.
// nPos - [in] Start position in the string.
// pcszText - [in] Text to insert.
// bGrowArrayIfNeed - [in] If nRow greater than strings count and this
// parameter TRUE the strings array will be grown;
// if this parameter FALSE function will do nothing
// and return FALSE.
// chLeftSpaceFiller - [in] if nPos parameter greater than string length
// the char specified in this parameter will be added
// to string until nPos.
// Returns:
// TRUE if text successfully inserted, FALSE otherwise.
// See Also: DeleteText
//-----------------------------------------------------------------------
BOOL InsertText(int nRow, int nPos, LPCTSTR pcszText,
BOOL bGrowArrayIfNeed = FALSE,
TCHAR chLeftSpaceFiller = _T(' ') );
//-----------------------------------------------------------------------
// Summary: Deletes text.
// Parameters:
// nRow - [in] String identifier.
// nPos - [in] Start position in the string.
// nCount - [in] Chars count to remove;
// Returns:
// TRUE if text successfully deleted, FALSE otherwise.
// See Also: InsertText
//-----------------------------------------------------------------------
BOOL DeleteText(int nRow, int nPos, int nCount);
//----------------------------------------------------------------------
// Summary:
// Gets string by given index.
// Parameters:
// nRow : [in] id of string.
// bGrowArrayIfNeed : [in] Flag to grow array of strings.Default is TRUE
// Returns:
// CString pointer.
//----------------------------------------------------------------------
CString* GetStrData(int nRow, BOOL bGrowArrayIfNeed = TRUE);
//----------------------------------------------------------------------
// Summary:
// Gets string by given index.
// Parameters:
// nRow : [in] id of string.
// Returns:
// CString pointer.
//----------------------------------------------------------------------
CString* GetStrDataC(int nRow) const;
//--------------------------------------------------------------------
// Summary:
// Internal class, implement collection of strings.
//--------------------------------------------------------------------
class _XTP_EXT_CLASS CStringPtrArray : public CArray<CString*, CString*>
{
//{{AFX_CODEJOCK_PRIVATE
typedef CArray<CString*, CString*> TBase;
//}}AFX_CODEJOCK_PRIVATE
public:
//----------------------------------------------------------------------
// Summary:
// Default object constructor.
//----------------------------------------------------------------------
CStringPtrArray();
//----------------------------------------------------------------------
// Summary:
// Default object destructor. Handles cleanup and deallocation
//----------------------------------------------------------------------
virtual ~CStringPtrArray();
//----------------------------------------------------------------------
// Summary:
// This method used to delete all strings objects and remove them
// from array.
//----------------------------------------------------------------------
void RemoveAll();
};
CStringPtrArray m_arStrings; // String collection
};
CXTPSyntaxEditStringsManager m_Strings; // A strings manager helper object
protected:
};
////////////////////////////////////////////////////////////////////////////
AFX_INLINE CXTPSyntaxEditLineMarksManager* CXTPSyntaxEditBufferManager::GetLineMarksManager() const {
return m_pLineMarksManager;
}
AFX_INLINE XTPSyntaxEditLexAnalyser::CXTPSyntaxEditLexParser* CXTPSyntaxEditBufferManager::GetLexParser() const {
return m_pLexParser;
}
AFX_INLINE CXTPSyntaxEditConfigurationManager* CXTPSyntaxEditBufferManager::GetLexConfigurationManager() const {
return m_ptrLexConfigurationManager;
}
AFX_INLINE CXTPNotifyConnection* CXTPSyntaxEditBufferManager::GetConnection() const {
return m_pConnection;
}
AFX_INLINE CXTPSyntaxEditUndoRedoManager* CXTPSyntaxEditBufferManager::GetUndoRedoManager() const {
return m_pUndoRedoManager;
}
AFX_INLINE int CXTPSyntaxEditBufferManager::GetTabSize() const {
return m_nTabSize;
}
AFX_INLINE BOOL CXTPSyntaxEditBufferManager::GetBuffer(const XTP_EDIT_LINECOL& lcStart,
const XTP_EDIT_LINECOL& lcEnd,
CMemFile& file,
BOOL bColumnSelection,
BOOL bForceDOSStyleCRLF)
{
return GetBuffer(lcStart.nLine, lcStart.nCol, lcEnd.nLine, lcEnd.nCol,
file, bColumnSelection, bForceDOSStyleCRLF);
}
AFX_INLINE BOOL CXTPSyntaxEditBufferManager::GetOverwriteFlag() const {
return m_bOverwrite;
}
AFX_INLINE int CXTPSyntaxEditBufferManager::GetCurCRLFType() const {
return m_iCRLFStyle;
}
AFX_INLINE UINT CXTPSyntaxEditBufferManager::GetCodePage() const {
return m_nCodePage;
}
AFX_INLINE CString CXTPSyntaxEditBufferManager::GetFileExt() const {
return m_strFileExt;
}
AFX_INLINE BOOL CXTPSyntaxEditBufferManager::IsParserEnabled() const {
return m_bIsParserEnabled;
}
////////////////////////////////////////////////////////////////////////////
#endif // !defined(__XTPSYNTAXEDITBUFFERMANAGER_H__)