forked from eranif/codelite
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathColoursAndFontsManager.h
111 lines (93 loc) · 3.03 KB
/
ColoursAndFontsManager.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#ifndef LEXERCONFMANAGER_H
#define LEXERCONFMANAGER_H
#include "codelite_exports.h"
#include "lexer_configuration.h"
#include <vector>
#include <map>
#include <wx/string.h>
#include <wx/filename.h>
class WXDLLIMPEXP_SDK ColoursAndFontsManager
{
typedef std::vector<LexerConf::Ptr_t> Vec_t;
typedef std::map<wxString, ColoursAndFontsManager::Vec_t> Map_t;
protected:
bool m_initialized;
ColoursAndFontsManager::Map_t m_lexersMap;
ColoursAndFontsManager::Vec_t m_allLexers;
wxColour m_globalBgColour;
wxColour m_globalFgColour;
private:
ColoursAndFontsManager();
virtual ~ColoursAndFontsManager();
void LoadNewXmls(const wxString& path);
void LoadOldXmls(const wxString& path);
LexerConf::Ptr_t DoAddLexer(wxXmlNode* node);
void Clear();
wxFileName GetConfigFile() const;
void SaveGlobalSettings();
public:
static ColoursAndFontsManager& Get();
const wxColour& GetGlobalBgColour() const { return m_globalBgColour; }
const wxColour& GetGlobalFgColour() const { return m_globalFgColour; }
/**
* @brief create new theme for a lexer by copying an existing theme 'sourceTheme'
* @param lexerName the lexer name
* @param themeName the new theme name
* @param sourceTheme source theme to copy the attributes from
*/
LexerConf::Ptr_t CopyTheme(const wxString& lexerName, const wxString& themeName, const wxString& sourceTheme);
void SetGlobalBgColour(const wxColour& globalBgColour)
{
this->m_globalBgColour = globalBgColour;
SaveGlobalSettings();
}
void SetGlobalFgColour(const wxColour& globalFgColour)
{
this->m_globalFgColour = globalFgColour;
SaveGlobalSettings();
}
/**
* @brief reload the lexers from the configuration files
*/
void Reload();
/**
* @brief load the lexers + global settings
*/
void Load();
/**
* @brief save the lexers into their proper file name
*/
void Save();
/**
* @brief save a single lexer
*/
void Save(LexerConf::Ptr_t lexer);
/**
* @brief set the active theme for a lexer by name
*/
void SetActiveTheme(const wxString& lexerName, const wxString& themeName);
/**
* @brief return the lexer by name.
* @param lexerName the lexer name, e.g. "c++"
* @param theme optionally, return the lexer of a given theme
*/
LexerConf::Ptr_t GetLexer(const wxString& lexerName, const wxString& theme = wxEmptyString) const;
/**
* @brief return an array of themes availabel for a given lexer
*/
wxArrayString GetAvailableThemesForLexer(const wxString& lexerName) const;
/**
* @brief return an array of available lexers
*/
wxArrayString GetAllLexersNames() const;
/**
* @brief return lexer for a file
*/
LexerConf::Ptr_t GetLexerForFile(const wxString& filename) const;
/**
* @brief restore the default colours
* This is done by deleting the user defined XML files and
*/
void RestoreDefaults();
};
#endif // LEXERCONFMANAGER_H