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 112 113 114 115 116
|
#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();
/**
* @brief import an eclipse theme into codelite
*/
bool ImportEclipseTheme(const wxString &eclipseXml, wxString &outputFile);
};
#endif // LEXERCONFMANAGER_H
|