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.

787 lines
32 KiB
C

2 years ago
// XTPSyntaxEditLexColorFileReader.h: interface for the CXTLexColorFileReader class.
//
// 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(__XTPSYNTAXEDITLEXCOLORFILEREADER_H__)
#define __XTPSYNTAXEDITLEXCOLORFILEREADER_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CXTPSyntaxEditColorTheme;
class CXTPNotifyConnection;
class CXTPNotifyConnectionMT;
struct XTP_EDIT_SCHEMAFILEINFO;
class CXTPSyntaxEditSchemaFileInfoList;
//-----------------------------------------------------------------------
// Summary:
// This enumeration describes allowable configuration managers flags.
//-----------------------------------------------------------------------
enum XTPSyntaxEditCfgFlags
{
xtpEditCfgFileAdd = 0x0001, // file should be added
xtpEditCfgFileRemove = 0x0002, // file should be removed
};
//===========================================================================
// Summary:
// This storage class is designed to contain information from the color
// settings file section. It helps easy retrieve color information.
//===========================================================================
class _XTP_EXT_CLASS CXTPSyntaxEditColorInfo
{
public:
//-----------------------------------------------------------------------
// Summary:
// Object constructor.
// Parameters:
// pTheme : [in] Pointer to CXTPSyntaxEditColorTheme object (theme
// this color information belongs to)
//-----------------------------------------------------------------------
CXTPSyntaxEditColorInfo(CXTPSyntaxEditColorTheme* pTheme);
//-----------------------------------------------------------------------
// Summary:
// Object constructor.
// Parameters:
// strClassName : [in] Lex Class name
// pTheme : [in] Pointer to CXTPSyntaxEditColorTheme object (theme
// this color information belongs to)
//-----------------------------------------------------------------------
CXTPSyntaxEditColorInfo(const CString& strClassName, CXTPSyntaxEditColorTheme* pTheme);
//-----------------------------------------------------------------------
// Summary:
// Destroys a CXTPSyntaxEditColorTheme() object, handles cleanup and
// de-allocation
//-----------------------------------------------------------------------
virtual ~CXTPSyntaxEditColorInfo ();
//-----------------------------------------------------------------------
// Summary:
// Adds parameter.
// Parameters:
// strName : [in] Parameter name.
// strValue : [in] Parameter value.
//-----------------------------------------------------------------------
void AddParam(const CString& strName, const CString& strValue);
//-----------------------------------------------------------------------
// Summary:
// Returns string of parameter value.
// Parameters:
// strName : [in] Parameter name.
// bDynamic : [in] If TRUE - search parameter value in parent
// themes (dynamically), otherwise it is searched
// only in the current theme.
// Returns:
// CString object with parameter value.
//-----------------------------------------------------------------------
const CString GetParam(const CString& strName, BOOL bDynamic = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Returns hexadecimal value.
// Parameters:
// strName : [in] Parameter name.
// bDynamic : [in] If TRUE - search parameter value in parent
// themes (dynamically), otherwise it is searched
// only in the current theme.
// Returns:
// DWORD parameter value.
//-----------------------------------------------------------------------
DWORD GetHexParam(const CString& strName, BOOL bDynamic = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Returns firs parameter position.
// Returns:
// POSITION value.
//-----------------------------------------------------------------------
POSITION GetFirstParamNamePosition();
//-----------------------------------------------------------------------
// Summary:
// Returns next parameter position.
// Parameters:
// pos : [in] position.
// Returns:
// POSITION value.
//-----------------------------------------------------------------------
const CString GetNextParamName(POSITION& pos);
//-----------------------------------------------------------------------
// Summary:
// Use this function to get lex class name.
// Returns:
// A lex class name
//-----------------------------------------------------------------------
const CString GetClassName() const;
private:
CString m_strClassName; // lex class name
CMapStringToString m_mapParams; // name/value parameters map
CXTPSyntaxEditColorTheme* m_pTheme; // pointer to the theme this color information belongs to
};
//===========================================================================
// Summary:
// This collection class hold the color info objects.
//==========================================================================
class CXTPSyntaxEditColorInfoArray : public
CArray<CXTPSyntaxEditColorInfo*, CXTPSyntaxEditColorInfo*>
{
typedef CArray<CXTPSyntaxEditColorInfo*, CXTPSyntaxEditColorInfo*> TBase;
public:
//===========================================================================
// Summary:
// Constructor, create and initializes the object.
//==========================================================================
CXTPSyntaxEditColorInfoArray(){};
//===========================================================================
// Summary:
// Destructor, do the cleaups and destroys the object.
//==========================================================================
virtual ~CXTPSyntaxEditColorInfoArray()
{
RemoveAll();
};
//===========================================================================
// Summary:
// Call this function to remove all the color info objects.
//==========================================================================
void RemoveAll()
{
for(int i = 0; i < GetSize(); i++)
{
if(GetAt(i))
{
delete GetAt(i);
}
}
TBase::RemoveAll();
}
};
class CXTPSyntaxEditColorThemesManager;
class CXTPSyntaxEditFileChangesMonitor;
class CXTPSyntaxEditPropertiesTheme;
//===========================================================================
// Summary:
// This class provides functionality to read configuration information
// from configuration files with predefined structure. Its information
// describes color settings for corresponding lexical items for given
// language.
// You construct instance of CXTPSyntaxEditColorTheme by calling
// constructor. Then you should call Load() member function
// to read data from persistent storage (file for this implementation),
// CXTPSyntaxEditLexColorInfo structures.
//===========================================================================
class _XTP_EXT_CLASS CXTPSyntaxEditColorTheme
{
friend class CXTPSyntaxEditPropertiesTheme;
//===========================================================================
// Summary:
// Determines custom array type to store CXTPSyntaxEditColorInfo structures.
// See also:
// CXTPSyntaxEditColorInfo.
//===========================================================================
typedef CMap<CString, LPCTSTR, CXTPSyntaxEditColorInfo *, CXTPSyntaxEditColorInfo *> CXTPSyntaxEditMapLexColorInfo;
public:
//-----------------------------------------------------------------------
// Summary:
// Default object constructor.
// Parameters:
// pThemesManager : [in] Pointer to the parent themes manager.
//-----------------------------------------------------------------------
CXTPSyntaxEditColorTheme(CXTPSyntaxEditColorThemesManager* pThemesManager);
//-----------------------------------------------------------------------
// Summary:
// Destroys a CXTPSyntaxEditColorTheme() object, handles cleanup and
// de-allocation.
//-----------------------------------------------------------------------
virtual ~CXTPSyntaxEditColorTheme();
//-----------------------------------------------------------------------
// Summary:
// Parses associated color schema file and fills internal color info
// structures.
// Parameters:
// csFileName : [in] configuration file name string.
//-----------------------------------------------------------------------
virtual void Load(const CString& csFileName);
//-----------------------------------------------------------------------
// Summary:
// used in non-file mode config to Load Color Sheme from string
// Parameters:
// arPassedString : [in] CStringArray of Color Scheme attributets.
//-----------------------------------------------------------------------
virtual void LoadFromString(CStringArray& arPassedString);
//-----------------------------------------------------------------------
// Summary:
// Returns name of the parent schema.
// Returns:
// CString containing name of the parent schema.
//-----------------------------------------------------------------------
const CString GetParentThemeName();
//-----------------------------------------------------------------------
// Summary:
// Returns parent schema.
// Returns:
// Pointer to CXTPSyntaxEditColorTheme object if exists;
// NULL lf parent schema doesn't exist.
//-----------------------------------------------------------------------
CXTPSyntaxEditColorTheme* GetParentTheme();
//-----------------------------------------------------------------------
// Summary:
// Returns color information.
// Parameters:
// strLexClass : [in] Lex Class name string
// strThemeFilename : [in] configuration file name string.
// bDynamic : [in] If TRUE - search color info in parent
// themes (dynamically), otherwise it is
// searched only in this theme.
// Returns:
// Pointer to CXTPSyntaxEditColorInfo object.
// Remarks:
// strThemeFilename is required to avoid calling recursion.
//-----------------------------------------------------------------------
CXTPSyntaxEditColorInfo* GetColorInfo(const CString& strLexClass,
const CString& strThemeFilename,
BOOL bDynamic = TRUE);
//-----------------------------------------------------------------------
// Summary:
// Returns configuration file name.
// Returns:
// CString containing file name.
//-----------------------------------------------------------------------
CString GetFileName();
//-----------------------------------------------------------------------
// Summary:
// Use this method to save colors to configuration file.
// Parameters:
// strParentThemeName - The parent theme name.
// pColorInfoArray_new - Colors information array.
// Returns:
// TRUE if successful, FALSE otherwise.
// See Also: GetFileName
//-----------------------------------------------------------------------
BOOL WriteCfgFile(CString strParentThemeName,
CXTPSyntaxEditColorInfoArray* pColorInfoArray_new);
protected:
//-----------------------------------------------------------------------
// Summary:
// Cleans up collection.
//-----------------------------------------------------------------------
void Cleanup();
//-----------------------------------------------------------------------
// Summary:
// Parses a single section and creates CXTPSyntaxEditColorInfo
// object from it.
// Parameters:
// csSection : [in] section name (in configuration file) string.
// Returns:
// Pointer to CXTPSyntaxEditColorInfo with resulting colors set.
//-----------------------------------------------------------------------
CXTPSyntaxEditColorInfo* ParseSection(const CString& csSection);
//-----------------------------------------------------------------------
// Summary:
// used for non-file mode config to parses a single section
// and creates CXTPSyntaxEditColorInfo object from it.
// Parameters:
// csSection : [in] section name (in configuration file) string.
// arPassedString : [in] CStringArray of passed string
// Returns:
// Pointer to CXTPSyntaxEditColorInfo with resulting colors set.
//-----------------------------------------------------------------------
CXTPSyntaxEditColorInfo* ParseSectionFromString(const CString& csSection, CStringArray& arPassedString);
private:
CStringList m_arSections; // All section names from the theme config file
CString m_csFileName; // filename of the corresponding theme config file
CXTPSyntaxEditMapLexColorInfo m_mapLexColorInfo; // internal map - lex class name to color info
CXTPSyntaxEditColorThemesManager* m_pThemesManager; // pointer to the parent themes manager
};
AFX_INLINE CString CXTPSyntaxEditColorTheme::GetFileName()
{
return m_csFileName;
}
//===========================================================================
// Summary: This class provides functionality to store set of all color themes
// that would be written from configuration files. For short it is
// custom collection class.
//===========================================================================
class _XTP_EXT_CLASS CXTPSyntaxEditColorThemesManager
{
typedef CMap<CString, LPCTSTR, CXTPSyntaxEditColorTheme*, CXTPSyntaxEditColorTheme*> CXTPSyntaxEditMapThemes;
public:
//-----------------------------------------------------------------------
// Summary:
// Default object constructor.
//-----------------------------------------------------------------------
CXTPSyntaxEditColorThemesManager();
//-----------------------------------------------------------------------
// Summary:
// Destroys a CXTPSyntaxEditColorThemesManager() object,
// handles cleanup and de-allocation
//-----------------------------------------------------------------------
virtual ~CXTPSyntaxEditColorThemesManager();
//-----------------------------------------------------------------------
// Summary:
// Loads theme by given theme name and configuration file.
// Parameters:
// strThemeName : [in] theme name string.
// strThemeFilename: [in] configuration file name.
//-----------------------------------------------------------------------
void LoadTheme(const CString& strThemeName, const CString& strThemeFilename);
//-----------------------------------------------------------------------
// Summary:
// Loads theme by given theme name and used in non-file mode config
// Parameters:
// strThemeName : [in] theme name string.
// arPassedString : [in] array of attributes strings.
//-----------------------------------------------------------------------
void LoadThemeFromString(const CString& strThemeName, CStringArray& arPassedString);
//-----------------------------------------------------------------------
// Summary:
// Adds new entity to "theme name - configuration file" map.
// Parameters:
// strThemeName : [in] theme name string.
// strThemeFilename: [in] configuration file name.
//-----------------------------------------------------------------------
void AddThemeInfo(const CString& strThemeName, const CString& strThemeFilename);
//-----------------------------------------------------------------------
// Summary:
// Returns color theme by given name.
// Parameters:
// strThemeName : [in] theme name string.
// Returns:
// Pointer to CXTPSyntaxEditColorTheme.
// See also:
// class CXTPSyntaxEditColorTheme
//-----------------------------------------------------------------------
CXTPSyntaxEditColorTheme* GetTheme(const CString& strThemeName);
//-----------------------------------------------------------------------
// Summary:
// Returns CStringArray with themes names.
// Returns:
// CStringArray with themes names.
//-----------------------------------------------------------------------
CStringArray& GetThemes();
//-----------------------------------------------------------------------
// Summary:
// Reloads configuration settings from the specified configuration file.
// Parameters:
// csFileName : [in] configuration file name.
// nCfgFlags : [in] action flags.
// Returns:
// Reloaded Theme name if found, or empty string if theme was not found.
// Remarks:
// Does nothing if specified file is not found in the collection of
// files from the main configuration file.
// See also:
// enum XTPSyntaxEditCfgFileRemove.
//-----------------------------------------------------------------------
CString ReloadFile(const CString& csFileName, int nCfgFlags = 0);
//-----------------------------------------------------------------------
// Summary:
// Remove all loaded data.
//-----------------------------------------------------------------------
void RemoveAll();
private:
CXTPSyntaxEditMapThemes m_mapThemes; // Themes map
CStringArray m_arThemeNames; // Themes names array
CMapStringToString m_mapFileToTheme; // Theme name to configuration file name map
};
typedef XTPSyntaxEditLexAnalyser::CXTPSyntaxEditLexTextSchema CXTPSyntaxEditTextSchema;
typedef CXTPSmartPtrInternalT<XTPSyntaxEditLexAnalyser::CXTPSyntaxEditLexTextSchema> CXTPSyntaxEditLexTextSchemaPtr;
typedef CXTPSyntaxEditLexTextSchemaPtr CXTPSyntaxEditTextSchemaPtr;
//===========================================================================
// Summary:
// This class provides functionality to store set of all color themes
// that would be written from configuration files. For short it is
// custom collection class.
//===========================================================================
class _XTP_EXT_CLASS CXTPSyntaxEditTextSchemesManager
{
typedef CMap<CString, LPCTSTR,
CXTPSyntaxEditTextSchemaPtr,
CXTPSyntaxEditTextSchemaPtr&> CXTPSyntaxEditMapSchemes;
public:
//-----------------------------------------------------------------------
// Summary:
// Default object constructor.
//-----------------------------------------------------------------------
CXTPSyntaxEditTextSchemesManager();
//-----------------------------------------------------------------------
// Summary:
// Destroys a CXTPSyntaxEditTextSchemesManager() object,
// handles cleanup and de-allocation.
//-----------------------------------------------------------------------
virtual ~CXTPSyntaxEditTextSchemesManager();
//-----------------------------------------------------------------------
// Summary:
// Add information about text scheme.
// Parameters:
// info : [in] A reference to schema information.
//-----------------------------------------------------------------------
void AddTextSchemeInfo(XTP_EDIT_SCHEMAFILEINFO& info);
//-----------------------------------------------------------------------
// Summary:
// Implements common logic on creating new text scheme object and
// loading it from file or resources.
// Parameters:
// info : [in] A reference to schema information.
//-----------------------------------------------------------------------
void LoadTextScheme(XTP_EDIT_SCHEMAFILEINFO& info);
//-----------------------------------------------------------------------
// Summary:
// Implements common logic on creating new text scheme object and
// loading it string - used fo non-file configuration mode.
// Parameters:
// info : [in] A reference to schema information.
// p_sSyntaxScheme : pointer to syntax scheme string
//-----------------------------------------------------------------------
void LoadTextStringScheme(XTP_EDIT_SCHEMAFILEINFO& info, CString* p_sSyntaxScheme);
//-----------------------------------------------------------------------
// Summary:
// Returns schema by its name.
// Parameters:
// strSchemeName : [in] schema name.
// Returns:
// CXTPSyntaxEditTextSchemaPtr object.
// See also:
// CXTPSyntaxEditTextSchemaPtr.
//-----------------------------------------------------------------------
CXTPSyntaxEditTextSchemaPtr GetSchema(const CString& strSchemeName);
//-----------------------------------------------------------------------
// Summary:
// Returns schema name by its file name.
// Parameters:
// csFileName : [in] file name.
// Returns:
// CString object.
//-----------------------------------------------------------------------
CString GetSchemaName(const CString& csFileName) const;
//-----------------------------------------------------------------------
// Summary:
// Returns file name by its schema name.
// Parameters:
// strSchemeName : [in] schema name.
// Returns:
// CString object.
//-----------------------------------------------------------------------
CString GetSchemaFileName(const CString& strSchemeName) const;
//-----------------------------------------------------------------------
// Summary:
// Returns all schemes names
// Returns:
// Reference to CStringArray.
//-----------------------------------------------------------------------
CStringArray& GetSchemes();
//-----------------------------------------------------------------------
// Summary:
// Use this member function to get schemas list.
// Returns:
// A reference to CXTPSyntaxEditSchemaFileInfoList object.
//-----------------------------------------------------------------------
CXTPSyntaxEditSchemaFileInfoList* GetSchemaList() const;
//-----------------------------------------------------------------------
// Summary:
// Finds a schema by file extension.
// Parameters:
// strFileExt : [in] file extension string.
// Returns:
// CXTPSyntaxEditTextSchemaPtr object.
// See also:
// CXTPSyntaxEditTextSchemaPtr.
//-----------------------------------------------------------------------
CXTPSyntaxEditTextSchemaPtr FindSchema(const CString& strFileExt) const;
//-----------------------------------------------------------------------
// Summary:
// Applys theme to all text schemes.
// Parameters:
// pTheme : [in] Pointer to theme to be set.
// See also:
// class CXTPSyntaxEditColorTheme.
//-----------------------------------------------------------------------
void SetTheme(CXTPSyntaxEditColorTheme* pTheme);
//-----------------------------------------------------------------------
// Summary:
// Reloads configuration settings from the specified configuration file.
// Parameters:
// csFileName : [in] configuration file name.
// nCfgFlags : [in] action flags.
// Does nothing if specified file is not found in the collection of files
// from the main configuration file
//-----------------------------------------------------------------------
BOOL ReloadFile(const CString& csFileName, int nCfgFlags = 0);
//-----------------------------------------------------------------------
// Summary:
// Remove all loaded data.
//-----------------------------------------------------------------------
void RemoveAll();
private:
CXTPSyntaxEditMapSchemes m_mapSchemes;
CXTPSyntaxEditSchemaFileInfoList* m_plistSchemes;
CStringArray m_arSchemeNames;
CCriticalSection m_csReadFile;
};
AFX_INLINE CStringArray& CXTPSyntaxEditTextSchemesManager::GetSchemes()
{
return m_arSchemeNames;
}
AFX_INLINE CXTPSyntaxEditSchemaFileInfoList* CXTPSyntaxEditTextSchemesManager::GetSchemaList() const {
return m_plistSchemes;
}
//===========================================================================
// Summary: This class manages all configuration parameters of the control.
// It worries about read configuration files from disk when the Edit
// control is starting, store it in internal structures and refresh
// parameters in case configuration files are changed after control
// was started.
// See Also: CXTPSyntaxEditFileChangesMonitor, CXTPSyntaxEditColorThemesManager
//===========================================================================
class _XTP_EXT_CLASS CXTPSyntaxEditConfigurationManager : public CXTPCmdTarget
{
public:
// Configuration manager sub-objects
enum XTPSyntaxEditCfgObjects
{
xtpEditCfgObjSchMan = 0x0001, // Schemes manager
xtpEditCfgObjThemeMan = 0x0002, // Themes manager
xtpEditCfgObjMainConfig = 0x0004, // Main configuration file
};
//-----------------------------------------------------------------------
// Summary: Default object constructor.
//-----------------------------------------------------------------------
CXTPSyntaxEditConfigurationManager();
//-----------------------------------------------------------------------
// Summary: Destroys a CXTPSyntaxEditConfigurationManager() object,
// handles cleanup and de-allocation
//-----------------------------------------------------------------------
virtual ~CXTPSyntaxEditConfigurationManager();
//-----------------------------------------------------------------------
// Summary:
// Reloads settings from provided file.
// Parameters:
// strConfigFilePath - string of file's full path.
// Remarks:
// Reloads configuration settings from the specified new configuration file.
//-----------------------------------------------------------------------
void ReloadConfig(const CString& strConfigFilePath);
//-----------------------------------------------------------------------
// Summary:
// Reloads configuration settings from the stored main configuration file.
//-----------------------------------------------------------------------
void ReloadConfig();
//-----------------------------------------------------------------------
// Summary:
// Asynchronously reloads configuration settings from the stored main
// configuration file.
// Parameters:
// nAsyncThreadPriority - The priority for the working thread which
// reloads configuration.
//-----------------------------------------------------------------------
void ReloadConfigAsync(int nAsyncThreadPriority = THREAD_PRIORITY_NORMAL);
//--------------------------------------------------------------------
// Summary: Get main configuration file name.
// Remarks: Return configuration file name previously stored by
// ReloadConfig(configFile).
// Returns: Main configuration file name.
// See also: CXTPSyntaxEditConfigurationManager::ReloadConfig().
//--------------------------------------------------------------------
CString GetConfigFile() const;
//-----------------------------------------------------------------------
// Summary:
// Reloads configuration settings from the specified configuration file.
// Parameters:
// csFileName : [in] configuration file name.
// dwOwnerFlags : [in] owner flags
// nCfgFlags : [in] action flags.
// Remarks:
// Does nothing if specified file is not found in the collection of
// files from the main configuration file.
// See also:
// enum XTPSyntaxEditCfgFileRemove.
//-----------------------------------------------------------------------
void ReloadFile(CString csFileName, DWORD dwOwnerFlags, int nCfgFlags = 0);
//-----------------------------------------------------------------------
// Summary:
// Returns color theme manager.
// Returns:
// Reference to CXTPSyntaxEditColorThemesManager object.
//-----------------------------------------------------------------------
CXTPSyntaxEditColorThemesManager& GetThemeManager();
//-----------------------------------------------------------------------
// Summary:
// Returns text theme manager.
// Returns:
// Reference to CXTPSyntaxEditTextSchemesManager object.
//-----------------------------------------------------------------------
CXTPSyntaxEditTextSchemesManager& GetTextSchemesManager();
//-----------------------------------------------------------------------
// Summary:
// Use this member function to set current theme.
// Parameters:
// strThemeName : [in] Theme name.
// pActiveSch : [in] A pointer to active schema to apply current theme.
//-----------------------------------------------------------------------
void SetTheme(const CString& strThemeName, CXTPSyntaxEditTextSchema* pActiveSch = NULL);
//-----------------------------------------------------------------------
// Summary:
// Closes configuration monitor session.
//-----------------------------------------------------------------------
void Close();
//-----------------------------------------------------------------------
// Summary:
// Returns current theme name.
//-----------------------------------------------------------------------
CString GetCurrentTheme() const;
//-----------------------------------------------------------------------
// Summary:
// Returns notification connection.
// Returns:
// CXTPNotifyConnectionPtr pointer.
//-----------------------------------------------------------------------
CXTPNotifyConnection* GetConnection() const;
//-----------------------------------------------------------------------
// Summary:
// Call this function to set the syntax and color scheme.
// Parameters:
// pSyntaxScheme - The syntax scheme.
// pColorScheme - The color scheme.
//-----------------------------------------------------------------------
void SetSyntaxAndColorScheme(CString* pSyntaxScheme, CString* pColorScheme)
{
p_sSyntaxScheme = pSyntaxScheme;
p_sColorScheme = pColorScheme;
}
BOOL m_bUseMonitor; //TRUE if control use special thread to synchronize syntax rules with files with Syntax and Color schemes
//FALSE if control works "off-line"
BOOL m_bConfigFileMode; // TRUE if control read Config file with links to detailed setting (Syntax and Color schemes)
// FALSE if Syntax and Color schemes passed as strings using special functions
CString m_sIniSet; //The ini file settings.
CString* p_sSyntaxScheme; //Pointer to the syntax scheme.
CString* p_sColorScheme; //Pointer to the color scheme.
private:
static UINT AFX_CDECL ReloadConfigAsync_Proc(LPVOID pThis);
CString m_strMainIniFilename; // Stores main configuration file name.
CXTPSyntaxEditFileChangesMonitor* m_pFolderMonitor; // Stores folder monitor object.
CXTPSyntaxEditColorThemesManager m_ColorThemeManager; // Stores color theme manager.
CXTPSyntaxEditTextSchemesManager m_TextSchemesManager; // Stores text theme manager.
CString m_strCurrentThemeName; // Current theme name
CXTPNotifyConnectionMT* m_pConnectMT; // Notification connection.
CCriticalSection m_DataLockerCS; // Critical section
HANDLE m_hReloadThread; // Stores handle of monitoring thread.
CEvent* m_pBreakReloadEvent; // Stores pointer to event.
};
AFX_INLINE const CString CXTPSyntaxEditColorInfo::GetClassName() const
{
return m_strClassName;
}
AFX_INLINE CXTPSyntaxEditColorThemesManager& CXTPSyntaxEditConfigurationManager::GetThemeManager()
{
return m_ColorThemeManager;
}
AFX_INLINE CXTPSyntaxEditTextSchemesManager& CXTPSyntaxEditConfigurationManager::GetTextSchemesManager()
{
return m_TextSchemesManager;
}
AFX_INLINE CString CXTPSyntaxEditConfigurationManager::GetCurrentTheme() const
{
return m_strCurrentThemeName;
}
#endif // !defined(__XTPSYNTAXEDITLEXCOLORFILEREADER_H__)