#ifndef CUSTOMVARS_H
#define CUSTOMVARS_H

#include "settings.h"

struct Var
{
	wxString name;
	wxString value;
	bool builtin;
};
WX_DECLARE_OBJARRAY(Var, VarsArray);

class CustomVars
{
	public:
		CustomVars();
		~CustomVars();

		void Load(const wxString& configpath);
		void Save(const wxString& configpath);
		void Clear();

		void Add(const wxString& name, const wxString& value);
		Var* GetVarByName(const wxString& name);
		const VarsArray& GetVars(){ return m_Vars; }
		bool DeleteVar(const wxString& name);
		bool DeleteVar(Var* var);

		void ApplyVarsToEnvironment();

		bool GetModified(){ return m_Modified; }
		void SetModified(bool modified = true){ m_Modified = modified; }
	protected:
		Var* VarExists(const wxString& name);
		void DoAdd(const wxString& name, const wxString& value, bool builtin);
		void DoAdd(const Var& newvar);
		bool DoDeleteVar(Var* var, bool deleteIfBuiltin = false);
	private:
		bool m_Modified;
		VarsArray m_Vars;
};

#endif // CUSTOMVARS_H



syntax highlighted by Code2HTML, v. 0.9.1