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 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170
|
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//
// copyright : (C) 2008 by Eran Ifrah
// file name : build_settings_config.h
//
// -------------------------------------------------------------------------
// A
// _____ _ _ _ _
// / __ \ | | | | (_) |
// | / \/ ___ __| | ___| | _| |_ ___
// | | / _ \ / _ |/ _ \ | | | __/ _ )
// | \__/\ (_) | (_| | __/ |___| | || __/
// \____/\___/ \__,_|\___\_____/_|\__\___|
//
// F i l e
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
#ifndef BUILD_CONFIG_SETTINGS_H
#define BUILD_CONFIG_SETTINGS_H
#include <vector>
#include "wx/string.h"
#include "builder.h"
#include "codelite_exports.h"
#include "singleton.h"
#include "compiler.h"
#include "wx/xml/xml.h"
#include "wx/filename.h"
#include "build_system.h"
#include "json_node.h"
#include "cl_config.h"
#include <map>
// Cookie class for the editor to provide reentrance operations
// on various methods (such as iteration)
class WXDLLIMPEXP_SDK BuildSettingsConfigCookie
{
public:
wxXmlNode *child;
wxXmlNode *parent;
public:
BuildSettingsConfigCookie() : child(NULL), parent(NULL) {}
~BuildSettingsConfigCookie() {}
};
/**
* @class BuildSettingsConfig the build system configuration
* this class represents the content of the build_settings.xml configuration
* file
*/
class WXDLLIMPEXP_SDK BuildSettingsConfig
{
wxXmlDocument *m_doc;
wxFileName m_fileName;
wxString m_version;
std::map<wxString, CompilerPtr> m_compilers;
protected:
wxXmlNode* GetCompilerNode(const wxString& name) const;
void DoUpdateCompilers();
bool SaveXmlFile();
public:
BuildSettingsConfig();
virtual ~BuildSettingsConfig();
/**
* Load the configuration file
* @param version XML version which to be loaded, any version different from this one, will cause
* codelite to override the user version
*/
bool Load(const wxString &version);
/**
* @brief delete all compilers
*/
void DeleteAllCompilers(bool notify = true);
/**
* @brief return list of all compiler names
*/
wxArrayString GetAllCompilers() const;
/**
* @brief replace the current compilers list with a new one
*/
void SetCompilers( const std::vector<CompilerPtr> &compilers );
/**
* Set or update a given compiler using its name as the index
*/
void SetCompiler(CompilerPtr cmp);
/**
* @brief return the default compiler for a given family
*/
CompilerPtr GetDefaultCompiler(const wxString &compilerFamilty) const;
/**
* Find and return compiler by name
*/
CompilerPtr GetCompiler(const wxString &name) const;
/**
* Returns the first compiler found.
* For this enumeration function you must pass in a 'cookie' parameter which is opaque for the application but is necessary for the library to make these functions reentrant
* (i.e. allow more than one enumeration on one and the same object simultaneously).
*/
CompilerPtr GetFirstCompiler(BuildSettingsConfigCookie &cookie);
/**
* Returns the next compiler.
* For this enumeration function you must pass in a 'cookie' parameter which is opaque for the application but is necessary for the library to make these functions reentrant
* (i.e. allow more than one enumeration on one and the same object simultaneously).
*/
CompilerPtr GetNextCompiler(BuildSettingsConfigCookie &cookie);
/**
* check whether a compiler with a given name already exist
*/
bool IsCompilerExist(const wxString &name) const;
/**
* delete compiler
*/
void DeleteCompiler(const wxString &name);
/**
* Add build system
*/
void SetBuildSystem(BuilderConfigPtr bs);
/**
* get build system from configuration by name
*/
BuilderConfigPtr GetBuilderConfig(const wxString &name);
/**
* @brief save builder configurtation to the XML file
* @param builder
*/
void SaveBuilderConfig(BuilderPtr builder);
/*
* get name of current selected build system from configuration
*/
wxString GetSelectedBuildSystem();
/**
* @brief discard the current settings and reload the default build
* settings
*/
void RestoreDefaults();
};
class WXDLLIMPEXP_SDK BuildSettingsConfigST
{
public:
static BuildSettingsConfig* Get();
static void Free();
};
#endif //BUILD_CONFIG_SETTINGS_H
|